XPath Flashcards
Что такое нода?
XPath
- element,
- attribute,
- text,
- namespace,
- processing-instruction,
- comment,
- root nodes.
XML documents are treated as trees of nodes.
The topmost element of the tree is called the root element.
<bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>
bookstore - root node
author - element node
lang - attribute node
Выбрать все ноды bookstore
XPath
nodename
Selects all nodes with the name “nodename”
Пример: bookstore
Выбор от корневой ноды
XPath
/
- выбирает корневые ноды
Пример /bookstore
Note: If the path starts with a slash ( / ) it always represents an absolute path to an element!
Выбрать все ноды book
XPath
//
- выбирает ноды в документе от текущей ноды которые подходят по имени не смотря на положение в документе
Пример: //book
Выбрать текущую ноду
XPath
.
- выбирает текущую ноду
Выбрать родителя текущей ноды
XPath
..
- выбирает родителя текущей ноды
Выбрать атрибут
XPath
@
- выбирает атрибуты
//@lang - выбирает все атрибуты lang
Альтернатива://*[@id='Element ID']
Examples//*[@id="Element ID"]
will select any element with id=”cool”//ul[@id="long"]
will select <ul id="long">
Выбрать все дочерние элементы book ноды bookstore
XPath
bookstore/book
Выбрать всех наследников book ноды bookstore независимо от положения внутри
XPath
bookstore//book
Wildcard. Любой элемент ноды
XPath
*
- Matches any element node
/bookstore/* - выбирает все дочерние элементы ноды
//* - выбирает все элементы в документе
Wildcard. Найти все атрибуты
XPath
@*
- Matches any attribute node
//title[@*]
- выбирает все элементы title у которых есть хотябы один любой атрибут
Wildcard. Найти ноду любого типа
XPath
node() - Matches any node of any kind
Выбрать одновременно title и price внутри book
XPath
By using the '|'
operator in an XPath expression you can select several paths.
//book/title | //book/price
- Selects all the title AND price elements of all book elements
//title | //price
- Selects all the title AND price elements in the document
/bookstore/book/title | //price
- Selects all the title elements of the book element of the bookstore element AND all the price elements in the document
Select all ancestors (parent, grandparent, etc.) of the current node
XPath Axes
ancestor
ancestor::book
- Selects all book ancestors of the current node
Selects all ancestors (parent, grandparent, etc.) of the current node and the current node itself
XPath Axes
ancestor-or-self
ancestor-or-self::book
- Selects all book ancestors of the current node - and the current as well if it is a book node
Selects all attributes of the current node
XPath Axes
attribute
attribute::lang
- Selects the lang attribute of the current node
attribute::*
- Selects all attributes of the current node