Логические выражения, выражения сравнения и выражения наборов
Шаблоны фильтров могут содержать логические выражения, выражения сравнения и выражения набора. Сочетания клавиш, приведенные в следующей таблице, представляют собой альтернативные символы, предоставляемые данной реализацией файла преобразований XSLT. Эти операторы выражений описаны в настоящем документе.
Оператор | Описание |
---|---|
|
Логическое И |
|
Логическое ИЛИ |
|
Отрицание |
|
Равенство |
|
Не равно |
|
Меньше |
|
Меньше или равно |
|
Больше |
|
Больше или равно |
|
Операция множества. Возвращает объединение двух множеств узлов |
* Расширенный метод XPath
Согласно рекомендациям консорциума W3C, в конструкциях с ключевыми словами операторов используются пробелы и другие разделители, а не знаки доллара ($
), как было в версии 2.5. В синтаксисе W3C бинарное ключевое слово вида $xxx$ можно выразить как wsxxxws,, где ws означает символ-завершитель лексемы, который может быть пробелом, одинарной кавычкой ('
) или двойной кавычкой ("
). С унарными операторами, например not()
, используется нотация функций. Реализация Майкрософт поддерживает оба вида конструкций, но для совместимости с будущими версиями рекомендуется использовать синтаксис W3C.
В следующей таблице показан приоритет операций сравнения и логических операций (от высокого к низкому).
Очередность | Операторы | Описание |
---|---|---|
1 |
|
Группирование |
2 |
|
Фильтры |
3 |
|
Операции с путями |
4 |
|
Сравнения |
5 |
|
Сравнения |
6 |
|
Объединение |
7 |
|
Логическое НЕТ |
8 |
|
Логическое И |
9 |
|
Логическое ИЛИ |
При использовании операторов в XML-документе (например, в таблице стилей XSLT) маркеры <
и >
нужно экранировать, получая, соответственно, <
и >
. Например, следующая инструкция XSLT применяет правило шаблона XSLT ко всем элементам <book>
, элемент <price>
которых имеет численное значение, меньшее или равное 10.
<xsl:apply-templates select="book[price <= 10]"/>
При использовании выражения XPath с моделью DOM операторы < и > не нужно экранировать. Например, следующая инструкция JScript выбирает все элементы <book>
, элемент <price>
которых имеет численное значение, меньшее или равное 10.
var cheap_books = dom.selectNodes("book[price <= 10]");
Логические выражения могут совпадать со всеми узлами, имеющими определенное значение, либо с узлами, имеющими узлы в определенном диапазоне. Ниже приведен пример логического выражения, возвращающего значение false.
1 >= 2
Операторы обрабатываются с учетом регистра.
Логическое «и» и логическое «или»
Логические операторы and
и or
выполняют операции логического «и» и логического «или» соответственно. Эти операторы и группирующие скобки позволяют строить усложненные логические выражения.
Примеры
Выражение | Ссылается на |
---|---|
|
Все элементы |
|
Все элементы |
Логическое НЕТ
Логический оператор not
возвращает отрицание значения выражения внутри шаблона фильтра.
Примеры
Выражение | Ссылается на |
---|---|
|
Все элементы |
author[not(degree or award) and publication] |
Все элементы |
Пример
XML-файл (test.xml)
XSLT-файл (test.xsl)
Следующая таблица стилей XSLT выбирает все элементы <x>, не имеющие атрибутов.
Вывод
Это преобразование, примененное к описанному выше XML-файлу, дает следующий результат.