Выражения
Мы уже говорили о том, что все конструкции, имеющиеся в языке XPath, понимаются как выражения, в результате вычисления которых получается последовательность узлов и/или атомарных значений. Выражения составляются из констант различных типов, переменных, вызовов функций, связанных знаками операций и скобками. Но это не все. Кроме них. в языке XPath есть условные выражения, выражения циклы, выражения-последовательности, кванторы. Вместе они используют целый язык программирования, на котором можно записать весьма сложный алгоритм.
Более того, набор выражений в скобках, разделенных запятыми, тоже понимается как выражение. Это так называемая "операция запятая". Поэтому всюду, где можно записать выражение, можно записать и набор выражений в скобках, если не оговорено противное.
Переменные
Имя переменной в языке XPath — это обычное для XML имя типа QName. Для того чтобы отличить переменные от других имен, перед именем переменной ставится знак доллара $, например, $var, $n, $i. Переменные обычно определяются во внешних языках, использующих XPath, скажем, в языке XSLT или в языке XQuery. Сам язык XPath не определяет переменные явно, в нем нет описаний типов и оператора присваивания. Переменные появляются только в циклах и кванторах.
Арифметические операции
В арифметические выражения входят числа типа xs: integer, xs: decimal, xs: double и переменные этих типов. С этими данными выполняются операции сложения +, вычитания -, умножения * и деления div, а также операция взятия остатка от деления mod и операция целочисленного деления idiv двух целых чисел.
Арифметические операции, кроме операций mod и idiv, можно выполнять не только с числами, но и с датами типа xs:datetime, xs:date, xs:time, xdt:dayTimeDuration, xdt: yearMonthDuration. Разумеется, арифметические операции с датами выполняются только там, где это имеет смысл.
Как видите, для обозначения деления применяется слово div, а не наклонная черта, потому что наклонная черта в языке XPath разделяет шаги поиска. Обратите внимание на еще одно важное обстоятельство.
Поскольку дефис в XML применяется в именах, в арифметических выражениях его надо отделять пробелами. Например, запись а-b будет понят как какое-то имя, а запись а - b — как вычитание.
Сравнения
В языке XPath применяются обычные операции сравнения: "равно" =, "не равно" !=, "больше" >, "меньше" <, "больше или равно" >= и "меньше или равно" <=. В результате сравнения получается логическое значение "истина" true или "ложь" false. В этих операциях сравнения могут участвовать числа, строки символов, даты.
В двух других операциях сравнения is и isnot участвуют узлы. Операция is дает значение true, если сравниваемые узлы совпадают, и false — в противном случае, операция isnot, наоборот, дает true, если узлы не совпадают. Например:
//DDD[@id="3"] is //DDD[@name="d3"]
Еще две операции сравнения >> и << тоже применяются к узлам. Они отслеживают порядок записи узлов в документе. Операция << дает истину true, если ее левый операнд встречается в документе раньше, чем правый операнд, операция >>, наоборот, дает в этом случае значение false. На пример:
//DDD[@name="dl"] << //DDD[@id="l"]
Достарыңызбен бөлісу: |