Пример XML, заполнен не совсем корректными данными:

<?xml version=»1.0″ encoding=»UTF-8″?>
<books>
<book id=»001″ name=»My first book»>
<title>Планиметрия для школы</title>
<author>Иванов</author>
<size>52</size>
</book>
<book id=»002″ name=»My second book»>
<title>Стереометрия</title>
<author>Петров</author>
<size>135</size>
<price>
<priceUSD>11</priceUSD>
<priceEUR>10.2</priceEUR>
<priceBLR>12000</priceBLR>
</price>
</book>
<book id=»003″ name=»It is not my book»>
<title>Астрономия</title>
<author>Сидоров</author>
<size>135</size>
</book>
</books>

Пишем Xpath

1)//* — выбрать все элементы (18 штук)

2)//book — выбрать все книги

3)//book[@id=»001″] — кника с id = 001

4)//book[@id=»001″]/* — выбрать у book все прямые потомки

5)//books/book[1] — выбрать первую книгу

6)//books/book[2] — выбрать вторую книгу

7)//books/book[last()] — выбрать последнюю книгу

8)//book[@name] — все книги, у которых есть атрибут name

9)//book[@name=»My first book»][@id=»001″] — книга у которой атрибут name = «My first book» и id = 001

10)//book[@*] — выбираются все книги, у которых есть хоть какой-нибудь атрибут

11)//book[not(@*)] — выбираются все книги, у которых нет атрибутов

12)//book[normalize-space(@name)=’It is not my book’] — выбирает все книги с именем ‘It is not my book’ после нормализации, т.е. удаление начальных и конечных пробелов и если несколько пробелов идут подряд, то остается только один пробел

13)//book[starts-with(@name, ‘My’)] — выбрать все книги, у которых значение атрибута name начинается с ‘My’

14)//book[contains(@name, ‘second’)] — выбрать все книги, у которых значение атрибута name содержит second

15)//book[string-length(@name) = 14] — выбрать все книги, у которых длина значения атрибута равна 14

16)//book[string-length(@name) > 14] — выбрать все книги, у которых длина значения атрибута больше 14

 

Реклама