xpath翻译两个表达式

时间:2014-04-26 14:08:04

标签: xpath translation

我无法在xpath中找出两个表达式。有人可以帮忙吗?

他们在这里

  1. substring-after(substring-before(//ul[@id='biblio']/li[3], ']', '['))

  2. //h2[normalize-space(string())='name']/preceding::h1[1]

1 个答案:

答案 0 :(得分:0)

你的第一个表达:

substring-after(substring-before(//ul[@id='biblio']/li[3], ']', '['))

首先,这可能会找到所有ul个元素,这些元素位于XPath上下文的(self)或后代。这些必须具有id属性,其值为' biblio'我匹配,从那里它将找到匹配的li元素中的第3个ul子元素。 然后,它会在将text()元素置于字符串后,在li元素的li上执行子字符串函数。

例如,匹配的hello [world]元素的文字是world。结果只有<div> <ul id="biblio"> <li>thing [one]</li> <li>thing [two]</li> <li>thing [three]</li> </ul> <ul id="biblio"> <li>other [a]</li> <li>other [b]</li> <li>other [c]</li> </ul> </div> 。作为更完整的示例,给出XML输入:

three

作为XPath表达式的结果,您将获得两个字符串的序列,即c<div>。请注意,在示例输入中使用//h2[normalize-space(string())='name']/preceding::h1[1] 只是一个容器,可以是任何元素。

你的第二个表达:

h2

首先,这可能会找到所有text()元素,这些元素位于XPath上下文的(self)或后代。它们必须具有name,当它被认为是一个字符串等于h1时。然后从那里选择前一个<div> <h1>title1</h1> <p>stuff</p> <h1>title2</h1> <p>more stuff</p> <h2>name</h2> <p>other stuff</p> </div>

例如,给定XML输入:

<h1>title2</h1>

由于XPath表达式,您将获得以下XML输出:

{{1}}

希望能帮助您理解......