Пример 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

 

Реклама