XPath 语法

XPath inasoma nafikia kwa ajili ya kuchagua mitaaka au kikundi cha mitaaka katika eneo ya XML. Mitaaka inapokea kwa sababu ya kuangalia nafikia kwa njia ya mzingatano (path) au kwa njia ya kumwita mchezo (steps).

Mafanikio ya XML

Tunategemea kuongeza mafanikio ya hii eneo ya XML katika mafanikio yaliyofuata.

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
</bookstore>

Kuchagua mitaaka

XPath inasoma nafikia kwa kuchagua mitaaka katika eneo ya XML. Mitaaka inapokea kwa sababu ya kuangalia nafikia kwa njia ya mzingatano au kwa njia ya kumwita mchezo.

下面列出了最有用的路径表达式:

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

实例

在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点。
/bookstore

选取根元素 bookstore。

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。

谓语(Predicates)

谓语用来查找某个特定的节点或者包含某个指定的值的节点。

Maelezo inahusishwa kwenye vifungo vya msingi.

实例

Kwenye jadua chini, tunashiriki kipimo kizito kwa mawili kwa sababu ya mawili ya maelezo, na matokeo ya mawili ya maelezo:

路径表达式 结果
/bookstore/book[1] Chagula kipimo kizito kila book kina kitu cha bookstore kina kitu cha kwanza.
/bookstore/book[last()] Chagula kipimo kizito kila book kina kitu cha bookstore kina kitu cha kuzunguka cha kuzunguka.
/bookstore/book[last()-1] Chagula kipimo kizito kila book kina kitu cha bookstore kina kitu cha kwanza kina kitu cha pili cha kuzunguka.
/bookstore/book[position()<3] Chagula kipimo kizito kila book kina kitu cha bookstore kina kitu cha kwanza kina kitu cha pili.
//title[@lang] Chagula kipimo kizito kila title kina kiwango cha lang.
//title[@lang='eng'] Chagula kipimo kizito kila title kwa sababu kina kiwango cha eng kwa kiwango cha lang.
/bookstore/book[price>35.00] Chagula kipimo kizito kipya bookstore kila kitu book, na kwa sababu hiyo kipimo kizito kinahofikia 35.00.
/bookstore/book[price>35.00]/title 选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。

选取未知节点

XPath 通配符可用来选取未知的 XML 元素。

通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
/bookstore/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。

选取若干路径

通过在路径表达式中使用“|”运算符,您可以选取若干个路径。

实例

在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:

路径表达式 结果
//book/title | //book/price 选取 book 元素的所有 title 和 price 元素。
//title | //price 选取文档中的所有 title 和 price 元素。
/bookstore/book/title | //price 选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。