<bookstore>
<book category="COOKING">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<fortest>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
</fortest>
</bookstore>
对于上面的示例,如果我想使用for语句获取所有<book>
元素,我需要2个语句:
for $x in doc("test.xml")/xs:bookstore/book
return $x
for $x in doc("test.xml")/xs:bookstore/fortest/book
return $x
我们可以跨越<fortest>
代码,只使用一个<book>
来获取<bookstore>
内的所有for
元素吗?
答案 0 :(得分:1)
我认为doc("test.xml")//book
会起作用。你可以在这里阅读它:
http://www.w3schools.com/xsl/xpath_syntax.asp
答案 1 :(得分:1)
首先,请注意for $x in EEE return $x
可以简化为EEE
。
其次,我不知道&#34; xs:&#34;代码中的前缀适用于。
所以(调整和简化@ har07的答案)你可以写:
doc("test.xml")/bookstore/(.|fortest)/book
答案 2 :(得分:0)
正如另一个答案中所指出的,您可以使用//
选择book
中位于任意级别深度的bookstore
元素。
或者,如果您需要XQuery严格遵循发布的2种可能结构,您可以像这样使用union运算符:
for $x in doc("test.xml")/xs:bookstore/(self::xs:bookstore|fortest)/book
return $x