Памятка XPath

Собрал на одну страницу YS, 22.08.2006

Содержание:

  1. Последовательный туториал
  2. Функции обработки набора узлов
  3. Функции обработки строк
  4. Функции обработки булевых значений
  5. Функции обработки чисел

Последовательный туториал

Источник

  1. Если путь начинается с символа '/', то он представляет абсолютный путь к заданному элементу.
  2. Если путь начинается с //, то будут выбраны все элементы документа, которые соответствуют указанному шаблону.
  3. Символ '*' указывает, что надо выбрать все элементы, соответствующие пути перед ней.
  4. Выражение в квадратных скобках позволяет задавать более четкие критерии для элемента. Так число в квадратных скобках обозначает позицию элемента в выбранном множестве. Функция last() позволяет указать последний элемент в выборке.
  5. /AAA/BBB[1] - Будет выбран первый потомок BBB элемента AAA

    /AAA/BBB[last()] - Будет выбран последний потомок BBB элемента AAA

  6. Атрибуты определяются префиксом @.
  7. //@id - Выбираются все атрибуты @id

    //BBB[@id] - Выбираются элементы BBB, имеющие атрибут id

    //BBB[@*] - Выбираются элементы BBB, имеющие хоть какой-нибудь атрибут

    //BBB[not(@*)] - Выбираются элементы BBB, не имеющие ни одного атрибута

  8. Значения атрибутов могут служить критерием при выборке. Функция normalize-space() удаляет пробелы в начале и конце параметра, а все последовательности пробельных символов заменяет одиночным пробелом.
  9. //BBB[@id='b1'] - Выбираются элементы BBB, имеющие атрибут id со значением b1

    //BBB[normalize-space(@name)='bbb'] - Выбираются элементы BBB, имеющие атрибут name со значением, которое после нормализации будет идентично bbb

  10. Функция count() возвращает число элементов в указанном множестве.
  11. //*[count(BBB)=2] - Выбираются элементы, имеющие два дочерних элемента BBB

    //*[count(*)=2] - Выбираются элементы, имеющие два произвольных дочерних элемента

  12. Функция name() возвращает имя элемента. Функция starts-with() возвращает истину, если строка первого аргумента начинается строкой второго аргумента. Функция contains() возвращает истину, если строка из первого аргумента содержит строку из второго.
  13. //*[name()='BBB'] - Выбираются все элементы с именем BBB; эквивалентно пути //BBB

    //*[starts-with(name(),'B')] - Выбираются все элементы, имя которых начинается с B

    //*[contains(name(),'C')] - Выбираются все элементы, имя которых содержит C

  14. Функция string-length() возвращает число символов в строке. Следует использовать &lt; вместо <, так как символ '<' зарезервирован для нужд разметки.
  15. //*[string-length(name()) = 3] - Выбираются все элементы, имя которых состоит из трех символов

    //*[string-length(name()) < 3] - Выбираются все элементы, имя которых состоит из двух или одного символа

  16. Несколько путей можно скомбинировать с помощью разделителя |.
  17. //CCC | //BBB - Выбираются все элементы CCC и BBB

    /AAA/EEE | //BBB - Выбираются все элементы BBB и все элементы EEE, чьим прямым родителем является корневой элемент AAA

  18. Ось child содержит дочерние элементы контекстного узла. Ось child является осью, применяемой по умолчанию, и может быть опущена.
  19. /child::AAA - Эквивалентно выражению /AAA

  20. Ось descendant содержит потомков контекстного узла; потомком является дочерний элемент, дочерний элемент дочернего элемента и так далее; таким образом ось descendant не содержит узлов атрибутов и пространств имен.
  21. /descendant::* - Выбираются все потомки корневого узла, то есть все элементы

    /AAA/BBB/descendant::* - Выбираются все потомки элементов, соответствующих пути /AAA/BBB

    //CCC/descendant::* - Выбираются все элементы, имеющие в качестве предка элемент CCC

  22. Ось parent содержит родителя контекстного узла, если он существует.
  23. //DDD/parent::* - Выбираются все родители элемента DDD

  24. Ось ancestor содержит предков контекстного узла; предками контесктного узла являются родитель контесктного узла, родитель родителя и так далее; Таким образом, ось ancestor всегда включает корневой узел, заисключением случая, когда контекстный узел является корневым.
  25. /AAA/BBB/DDD/CCC/EEE/ancestor::* - Выбираются все узлы, перечисленные в этом абсолютном пути

    //FFF/ancestor::* - Выбираются все предки элемента FFF

  26. Ось following-sibling содержит все следующих братьев контекстного узла. Братьями называются те узлы, что имеют одного родителя с контекстным.
  27. /AAA/BBB/following-sibling::*

    //CCC/following-sibling::*

    пример с источника

  28. Ось preceding-sibling содержит всех предыдущих братьев контекстного узла.
  29. /AAA/XXX/preceding-sibling::*

    //CCC/preceding-sibling::*

    пример с источника

  30. Ось following содержит в том же порядке, что и в самом документе, все узлы, идущие после контекстного, за исключением всех потомков, узлов атрибутов и пространств имен.
  31. /AAA/XXX/following::*

    //ZZZ/following::*

    пример с источника

  32. Ось preceding содержит в том же порядке, что и в самом документе, все узлы, идущие перед контекстным узлом, исключая любых предков, узлов атрибутов и пространств имен.
  33. /AAA/XXX/preceding::*

    //GGG/preceding::*

    пример с источника

  34. Ось descendant-or-self содержит контекстный узел и всех его потомков.
  35. /AAA/XXX/descendant-or-self::*

    //CCC/descendant-or-self::*

    пример с источника

  36. Ось ancestor-or-self содержит контекстный узел и всех его предков; таким образом, эта ось всегда содержит корневой узел.
  37. /AAA/XXX/DDD/EEE/ancestor-or-self::*

    //GGG/ancestor-or-self::*

    пример с источника

  38. Оси ancestor, descendant, following, preceding и self axes покрывают документ (за исключением узлов атрибутов и пространств имен): они не перескаются и вместе содержат все узлы документа.
  39. //GGG/ancestor::*

    //GGG/descendant::*

    //GGG/following::*

    //GGG/preceding::*

    //GGG/self::*

    //GGG/ancestor::* | //GGG/descendant::* | //GGG/following::* | //GGG/preceding::* | //GGG/self::*

    пример с источника

  40. Оператор div производит деление, оператор mod возвращает остаток от деления нацело. Функция floor возвращает максимальное целое чило, не большее аргумента. Функция ceiling возвращает минимальное целое число, не меньшее аргумента.
  41. //BBB[position() mod 2 = 0 ]

    //BBB[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

    //CCC[ position() = floor(last() div 2 + 0.5) or position() = ceiling(last() div 2 + 0.5) ]

    пример с источника

Функции обработки набора узлов

Источник

Функции обработки строк

Источник

Функции обработки булевых значений

Источник

Функции обработки чисел

Источник