2010-11-23 41 views
2

XML是這樣的:如何使用xquery在xml結構中循環?

<persons> 
<person> 
<name/> 
<surname/> 
</person> 

<person index=1> 
<name/> 
<surname/> 
</person> 

<person index=2> 
<name/> 
<surname/> 
</person> 
... 
</persons> 

我需要建立一個視圖,顯示所有人的所有數據。

name surname 
name1 surname1 

如何在select語句中執行此循環?它需要是一個觀點。

+0

好問題,1。查看我的答案,瞭解一個非常簡短的XPath單線解決方案。 :) – 2010-11-23 14:22:55

回答

0

如果您需要轉換,您是否考慮過使用xslt?

如果你需要的XQuery,選擇這些節點然後,

doc("file.xml")/persons/person/name | /persons/person/name 

OR

doc("file.xml")//name |// surname  

即名字,姓氏存在的任何地方

+0

xml是數據庫中表的一列。如果我使用xpath:/ persons/person/name,它只會得到第一個找到的對象? – medusa 2010-11-23 08:12:37

+0

我可以問你在後端使用什麼嗎? Asp.NET? Java的? PHP?至於你的問題 - 不,據我所知,它會返回一組匹配的節點。 – 2010-11-23 09:16:22

1

使用

string-join(/*/person/concat(name, ' ', surname), '&#xA;') 

當這個XPath表達式,對以下XML文檔:

<persons> 
    <person index="1"> 
     <name>Alex</name> 
     <surname>Brown</surname> 
    </person> 
    <person index="2"> 
     <name>Katie</name> 
     <surname>Smith</surname> 
    </person> 
    <person index="3"> 
     <name>Julius</name> 
     <surname>Caesar</surname> 
    </person> 
</persons> 

結果是

Alex Brown 
Katie Smith 
Julius Caesar