2016-02-27 55 views
1
<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> 

對於上面的例子,如果我想使用的語句讓所有的<book>元素,我需要2的發言:的XQuery:如何跨越元素才能到內部元件

for $x in doc("test.xml")/xs:bookstore/book 
return $x 

for $x in doc("test.xml")/xs:bookstore/fortest/book 
return $x 

莫非我們通過<fortest>標籤去獲得<bookstore>中的所有<book>元素,只需使用for

回答

0

正如其他答案指出,你可以使用//選擇位於任何級別深度bookstorebook元素。

另外,如果你需要的XQuery來張貼在2層可能的結構嚴格的工作,你可以使用union運算符,像這樣:

for $x in doc("test.xml")/xs:bookstore/(self::xs:bookstore|fortest)/book 
return $x 
1

首先,請注意for $x in EEE return $x可以簡化爲EEE

其次,我不知道代碼中的「xs:」前綴是什麼。

所以(調整和簡化了從@ har07答案),你可以這樣寫:

doc("test.xml")/bookstore/(.|fortest)/book