Технология XPath
XPath - XML Path Language
Цели и задачи, которые решает XPath
Краткое знакомство с синтаксисом языка XPath
Модель дерева XML документа – пример XML документа
Модель дерева XML документа – представление XML в виде дерева
Модель дерева XML документа – представление XML в виде дерева
Синтаксис XPath
Пример - /books/book/author
Синтаксис XPath
Пример - /books/book/title | /books/book/author
Синтаксис XPath – абсолютные и относительные пути
Синтаксис XPath – описание шага (location step)
Описание node-test части шага (location step)
Описание node-test части шага – Name tests
Пример - /books/*/author
Пример - /books/book/*
Описание node-test части шага – Node Type tests
Пример - /comment()
Пример - //text()
Модель дерева XML документа, используемая XPath
Знакомство с XPath осями (axes) и взаимоотношением вершин
Примеры применения осей
Типы XPath осей (axes) - parent
Пример parent
Типы XPath осей (axes) - child
Пример child
Типы XPath осей (axes) – ancestor
Пример ancestor
Типы XPath осей (axes) – descendant
Пример descendant
Типы XPath осей (axes) - ancestor-or-self
Пример ancestor-or-self
Типы XPath осей (axes) – descendant-or-self
Пример descendant-or-self
Типы XPath осей (axes) – preceding
Пример preceding
Типы XPath осей (axes) – following
Пример following
Типы XPath осей (axes) – preceding-sibling
Пример preceding-sibling
Типы XPath осей (axes) – following-sibling
Пример following-sibling
Типы XPath осей (axes) – self
Пример self
Типы XPath осей (axes) – attribute
Пример attribute
Типы XPath осей (axes) – namespace
Пример namespace
Описание predicate части шага (location step)
Пример - /books/book[author]/title
Пример - /books/book[author='Randall, Tristan']
Пример - /books/book[@catnum='id2345']/author
Пример - /books/book[1]/author
Пример - /books/book/author[1]
Пример - /books/book[last()]
Пример - /books/book[@catnum='id7823'][1]
Пример - /books/book[1][@catnum='id7823']
Пример - /books/book[title and author]
Некоторые полезные функции XPath
Некоторые полезные функции XPath
Некоторые полезные функции XPath
Некоторые полезные функции XPath
Полезные ссылки
685.76K
Category: programmingprogramming

Технология XPath

1. Технология XPath

Обзор
www.epam.com
www.epam.com
EPAM
EPAM Systems
Systems

2. XPath - XML Path Language

• XPath – язык для адресации частей XML
документа
• XPath – открытый стандарт спецификации
W3C
• Основное использование – применение
совместно с XSLT для выбора вершин
документа
www.epam.com
EPAM Systems
2

3. Цели и задачи, которые решает XPath

• Эффективный, компактный и логичный синтаксис для
указания пути или местоположения вершин XML
документа
• Эффективное языковое средство для ссылок на
содержимое XML документа, не “завязанное” на язык
разметки документа
• Обеспечить стандартную библиотеку функций для работы
со строками, числами и Boolean выражениями, которые
могут использоваться при обработке XML документов
• Использовать при программировании на языке XSLT, а
также других языках или интерфейсах предназначенных
для работы с XML документами
www.epam.com
EPAM Systems
3

4. Краткое знакомство с синтаксисом языка XPath

URL фаловой системы
XPath выражения
Иерархия содержит фолдеры и
файлы файловой системы
Иерархия содержит элементы и другие
вершины XML документа
На одном уровне файлы имеют
уникальные имена
Названия элементов на одном уровне
могут быть неуникальными
URL всегда определяет только
один файл
XPath выражение может
идентифицировать набор вершин,
удовлетворяющих значению выражения
шаблона. В наборе может быть как одна
вершина, так и множество
URL вычисляются относительно Выражение оценивается относительно
определенной директории –
определенной вершины – контекста
текущей директории
запроса
www.epam.com
EPAM Systems
4

5. Модель дерева XML документа – пример XML документа

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
5

6. Модель дерева XML документа – представление XML в виде дерева

Корень документа
<?xml … ?>
<!DOCTYPE …>
<?xml-stylesheet … ?>
<catalog>
<!-- Reviewed … -->
www.epam.com
EPAM Systems
6

7. Модель дерева XML документа – представление XML в виде дерева

<books>
xmlns="http://www.epam.com/"
catdate="2005-12-31"
<book>
catnum="id2345"
<title>
Jambing on the Trixles
<!-- Are we sure … -->
<author>
Randall, Tristan
<book>
catnum="id7823"
<title>
For Love of a Toothpick
<author>
Frey, Jörg
www.epam.com
EPAM Systems
7

8. Синтаксис XPath

• XPath выражения состоят из шагов (location
step), которые отделяются символом «/»
• Объединенные шаги составляют путь
(location path)
locationstep1/locationstep2
www.epam.com
EPAM Systems
8

9. Пример - /books/book/author

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
9

10. Синтаксис XPath

• Каждый шаг (отсчет идет слева направо) перемещает в
дереве на уровень вниз или вверх в дереве вершин
относительно предыдущего шага
• Шаг может быть абсолютным и относительным
– Абсолютный шаг может быть только самым первым в пути
– Относительные шаги могут использоваться в любом месте пути
• Пути могут быть составными из нескольких
объединенных групп путей, разделенных
символом | (pipe).
path1 | path2
www.epam.com
EPAM Systems
10

11. Пример - /books/book/title | /books/book/author

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
11

12. Синтаксис XPath – абсолютные и относительные пути

• Абсолютный путь – всегда начинается с
корневой вершины документа,
обозначаемой символом «/»
• Относительный путь – начинается с ранее
установленного контекста (context node), не
содержит символа «/» в начале
www.epam.com
EPAM Systems
12

13. Синтаксис XPath – описание шага (location step)

axis::nodetest[predicate]
child::price[price=9.90]
• axis – определяет «направление просмотра» от текущей
вершины (context node), в направлении вершин, указанных
в nodetest. Отделяются знаком ::
• nodetest – определяет начальный набор вершин,
которые должны быть выбраны в результате шага.
Единственная обязательная часть
• predicate – дополнительные условия для axis и
nodetest. Соответствие этому условию определяет
попадет ли вершина в результирующий набор вершин
шага
www.epam.com
EPAM Systems
13

14. Описание node-test части шага (location step)

Указывает тип вершин, или определенные вершины,
над полученным набором которых возможен
дополнительный выбор
Может быть 3-х видов:
1. Указание имени вершины (Name tests)
2. Указание типа вершины (Node Type tests)
3. Указание processing-instruction("target") с
указанием цели.
www.epam.com
EPAM Systems
14

15. Описание node-test части шага – Name tests

• Здесь чаще всего используется имя нужной вершины
• Ось (axis) может указывать на тип вершины:
– Не attribute:: и не namespace:: -> элемент
– attribute:: -> атрибут
– namespace:: -> пространство имен
• Указываемое имя может быть трех видов:
– QName
–*
– NCName:*
www.epam.com
EPAM Systems
15

16. Пример - /books/*/author

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
16

17. Пример - /books/book/*

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
17

18. Описание node-test части шага – Node Type tests

• Можно отбирать вершины по их типу
– comment() – комментарии
– node() – любые вершины, кроме атрибутов
– processing-instruction() – инструкции по
обработке
– text() – текстовые вершины
• В XPath 2.0 также поддерживаются
– attribute() – атрибуты
– document-node() – любые вершины
– element() – элементы
– item() – вершины-«листья»
www.epam.com
EPAM Systems
18

19. Пример - /comment()

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
19

20. Пример - //text()

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
20

21. Модель дерева XML документа, используемая XPath

• XPath рассматривает XML документ как дерево
взаимосвязанных ветвей и вершин, следующих типов:






Элемент
Атрибут
Инструкция обработки
Комментарий
Текстовое содержимое
Пространство имен
• Сам документ рассматривается как вершина
• Модель рассматривает помимо вершин, их взаимное
отношение друг к другу
www.epam.com
EPAM Systems
21

22. Знакомство с XPath осями (axes) и взаимоотношением вершин

Отношение между вершинами в терминологии языка XPath
называется axis (ось). Оси бывают следующие:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Parent
Child
Ancestor
Descendant
Ancestor-or-self
Descendant-or-self
Preceding
Following
Preceding-sibling
Following-sibling
Self
Attribute
Namespace
www.epam.com
Применимы
только к
элементам
EPAM Systems
22

23. Примеры применения осей

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
Сюда будем
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
применять оси
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
23

24. Типы XPath осей (axes) - parent

• Элемент, непосредственно содержащий данную вершину
(элемент, атрибут, инструкцию по обработке, комментарий или
текстовую вершину)
• У пространства имен – элемент, где пространство имен
объявляется
• У корневого элемента – корневая вершина
• У корневой вершины отсутствует
• Аббревиатура: ..
– ../cd вместо parent::node()/cd
www.epam.com
EPAM Systems
24

25. Пример parent

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
25

26. Типы XPath осей (axes) - child

• Любые вершины (кроме атрибутов и пространств
имен), находящиеся непосредственно ниже в иерархии
• Обычно имеет смысл только для элементов и корневой
вершины
• Ось по умолчанию
• Обычно не используется явно
– cd вместо child::cd
www.epam.com
EPAM Systems
26

27. Пример child

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
27

28. Типы XPath осей (axes) – ancestor

• Любые вершины, находящиеся выше в
иерархии (прародители)
• Включают также parent вершину
• У корневой вершины отсутствуют
• Корневая вершина – прародитель всех
остальных вершин
www.epam.com
EPAM Systems
28

29. Пример ancestor

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
29

30. Типы XPath осей (axes) – descendant

• Любые вершины, находящиеся ниже в
иерархии (потомки)
• Включают также child вершины
• Для корневой вершины потомками являются
все остальные вершины за исключением
– самой корневой вершины
– атрибутов
– пространства имен
www.epam.com
EPAM Systems
30

31. Пример descendant

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
31

32. Типы XPath осей (axes) - ancestor-or-self

• Все ancestor вершины (предки) и сама
вершина
• Для корневой вершины результатом будет
только корневая вершина
www.epam.com
EPAM Systems
32

33. Пример ancestor-or-self

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
33

34. Типы XPath осей (axes) – descendant-or-self

• Все descendant вершины (потомки) и сама
вершина
• Аббревиатура: //
– //cd вместо
/descendant-or-self::node()/cd
www.epam.com
EPAM Systems
34

35. Пример descendant-or-self

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
35

36. Типы XPath осей (axes) – preceding

• Любые узлы, предшествующие в XML
документе текущему, за исключением
предков, атрибутов и пространств имен
• Фактически, это весь документ от начала и
до текущего узла
www.epam.com
EPAM Systems
36

37. Пример preceding

<?xml version="1.0"?>
<!DOCTYPE books [ <!ENTITY oumlaut "&#38;#246;"> ]>
<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
<books catdate="2005-12-31" xmlns="http://www.epam.com/">
<book catnum="id2345">
<title>Jambing on the Trixles</title>
<!-- Are we sure this guy's name is spelled right???-->
<author>Randall, Tristan</author>
</book>
<book catnum="id7823">
<title>For Love of a Toothpick</title>
<author>Frey, J&oumlaut;rg</author>
</book>
</books>
<!-- Reviewed by Catalog Department 2005-12-30 09:11:16 -->
www.epam.com
EPAM Systems
37

38. Типы XPath осей (axes) – following

• Любые узлы, следующие в XML документе
за текущим , за исключением предков,
атрибутов и пространств имен
• Фактически, это весь документ от текущего
узла до конца
www.epam.com
EPAM Systems
38

39. Пример following

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
39

40. Типы XPath осей (axes) – preceding-sibling

• Узлы, предшествующие в XML документе
текущему и имеющие с ним общего
родителя (parent вершину)
• Атрибуты и пространства имен не входят в
список таких узлов
www.epam.com
EPAM Systems
40

41. Пример preceding-sibling

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
41

42. Типы XPath осей (axes) – following-sibling

• Узлы, следующие в XML документе за
текущим и имеющие с ним общего родителя
(parent вершину)
• Атрибуты и пространства имен не входят в
список таких узлов
www.epam.com
EPAM Systems
42

43. Пример following-sibling

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
43

44. Типы XPath осей (axes) – self

• Текущая вершина
• Аббревиатура: .
– ./cd вместо self::node()/cd
www.epam.com
EPAM Systems
44

45. Пример self

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
45

46. Типы XPath осей (axes) – attribute

• Атрибуты текущей вершины
• Ось применима только к элементам
• Аббревиатура: @
– @type вместо attribute::type
www.epam.com
EPAM Systems
46

47. Пример attribute

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
47

48. Типы XPath осей (axes) – namespace

• Пространства имен для данного узла
• Ось применима только к элементам
• В результирующий набор попадут
пространства имен, объявленные
непосредственно в элементе и объявленные
во всех ancestor элементах
www.epam.com
EPAM Systems
48

49. Пример namespace

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31"
catdate="2005-12-31" xmlns="http://www.epam.com/">
xmlns="http://www.epam.com/">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
49

50. Описание predicate части шага (location step)

• Представляет собой фильтр для отбора из вершин,
полученных после node test и прохождению по оси
[something operator somevalue]
• [ ] – квадратные скобки обязательны
• something – может быть шагом (location step)
относительно вершин, полученных после node test и
прохождению по оси; или встроенной функцией
• operator – один из булевских операторов
• somevalue – значение с которым сравнивается something
www.epam.com
EPAM Systems
50

51. Пример - /books/book[author]/title

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
51

52. Пример - /books/book[author='Randall, Tristan']

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
52

53. Пример - /books/book[@catnum='id2345']/author

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
53

54. Пример - /books/book[1]/author

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
54

55. Пример - /books/book/author[1]

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
55

56. Пример - /books/book[last()]

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
56

57. Пример - /books/book[@catnum='id7823'][1]

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
57

58. Пример - /books/book[1][@catnum='id7823']

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
58

59. Пример - /books/book[title and author]

<?xml
<?xml version="1.0"?>
version="1.0"?>
<!DOCTYPE
<!DOCTYPE books
books [[ <!ENTITY
<!ENTITY oumlaut
oumlaut "&#38;#246;">
"&#38;#246;"> ]>
]>
<?xml-stylesheet
<?xml-stylesheet type="text/xsl"
type="text/xsl" href="catalog.xsl"?>
href="catalog.xsl"?>
<books
<books catdate="2005-12-31">
catdate="2005-12-31">
<book
<book catnum="id2345">
catnum="id2345">
<title>Jambing
<title>Jambing on
on the
the Trixles</title>
Trixles</title>
<!-<!-- Are
Are we
we sure
sure this
this guy's
guy's name
name is
is spelled
spelled right???-->
right???-->
<author>Randall,
<author>Randall, Tristan</author>
Tristan</author>
</book>
</book>
<book
<book catnum="id7823">
catnum="id7823">
<title>For
<title>For Love
Love of
of aa Toothpick</title>
Toothpick</title>
<author>Frey,
<author>Frey, J&oumlaut;rg</author>
J&oumlaut;rg</author>
</book>
</book>
</books>
</books>
<!-<!-- Reviewed
Reviewed by
by Catalog
Catalog Department
Department 2005-12-30
2005-12-30 09:11:16
09:11:16 -->
-->
www.epam.com
EPAM Systems
59

60. Некоторые полезные функции XPath

• number position() – позиция текущего элемента в коллекции
вершин
• number last() – позиция последнего элемента в коллекции
вершин (размер текущего контекста)
• node-set id(value) – выбирает элемент по уникальному ID
• string name(node-set?) – полное квалифицированное имя
• string local-name(node-set?) – локальное имя
• string namespace-uri(node-set?) – URI пространства имен
• number count(node-set) - количество узлов аргумента
www.epam.com
EPAM Systems
60

61. Некоторые полезные функции XPath

• string concat(string, string, string*) –
объединяет аргументы в одну строку
• boolean contains(string, string) – проверяет
вхождение второго аргумента в первый
• string normalize-space(string) - нормализует
строковое значение
• boolean starts-with(string, string) - проверяет,
является ли второй аргумент началом первого
• string string(object?) - преобразует объект в строку
www.epam.com
EPAM Systems
61

62. Некоторые полезные функции XPath

• number string-length(string) - длина строки
• string substring(string, number, number?) - возвращает
подстроку (символы от второго аргумента до третьего)
• string substring-after(string, string) - возвращает
часть первого аргумента, непосредственно следующую за первым
вхождением второго аргумента
• string substring-before(string, string) - возвращает
часть первого аргумента, предшествующую первому вхождению
второго аргумента
• string translate(string, string, string) - заменяет
символы первого аргумента, совпадающие с символами второго
аргумента, на соответствующие символы третьего аргумента
www.epam.com
EPAM Systems
62

63. Некоторые полезные функции XPath

• number ceiling(number) - наименьшее целое, не
меньшее аргумента
• number floor(number) - наибольшее целое, не
превышающее аргумента
• number round(number) - округление до ближайшего
целого
• number number(object?) - преобразование объекта к
числу
• number sum(node-set) - сумма значений узлов аргумента
www.epam.com
EPAM Systems
63

64. Полезные ссылки

• http://www.w3.org/TR/xpath
• http://xml.nsu.ru/xpath/xpath_home.xml
• http
://zvon.org/xxl/XPathTutorial/Output_rus/exa
mple1.html
www.epam.com
EPAM Systems
64

65.

Спасибо за внимание!
Контактная информация:
Денис Мурашев
Инструктор
EPAM Systems, Inc.
Адрес: Саратов, Рахова, 181
Email: [email protected]
http://www.epam.com
www.epam.com
EPAM Systems
65
English     Русский Rules