我有一堆像这样的节点:
<root>
<books>
<book id="1">Book 1</book>
<book id="2">Book 2</book>
<book id="3">Book 3</book>
</books>
</root>
我想要的是用文本节点“Book 2”获取书籍的id。我该怎么做呢?我尝试了这个没有任何结果($ doc是我的文档路径):
let $b := $doc/root/books/book[book = "Book 2"]
return data($b/@id)
编辑:我的意思是$ doc是文档节点,而不仅仅是路径。
答案 0 :(得分:2)
假设$doc
实际上是文档节点,而不是您描述的文档路径,那么您可以使用以下内容:
$doc/root/books/book[. = "Book 2"]/data(@id)
简单地将.
引用到当前上下文项,该项已经预订,因为它是谓词之前的XPath的最后一部分。
答案 1 :(得分:1)
如果$doc
是您的文档路径,则您需要致电fn:doc($doc)
以获取文档节点:
fn:doc($doc)/root/books/book[. = "Book 2"]/data(@id)