2013-05-13 102 views
1

僅使用XPath可以執行以下操作嗎?我想找到一種方法來做到這一點在1.0我不認爲它可能在1.0。有沒有辦法在XPath中分配一個變量?

<test> 
    <title>title1</title> 
    <title>title2</title> 
    <title>title3</title> 
    <creator>creator1</creator> 
    <creator>creator2</creator> 
</test> 

我想下面的輸出:

title1 creator1 
title2 creator2 
title3 

我想這可能是更適合於XQuery的,但我不知道,因爲我從來沒有使用過。將xquery添加到當前的應用程序以及我試圖避免的原因將是很多工作。我最近想到的工作是使用

/test/title/fn:string-join((text(), /test/creator/text()[position()]), ' ') 

問題是我在這個例子中得到了所有的創造者。我想知道是否有某種方式來獲得當前的位置併爲創作者設置位置?我知道如何輕鬆地在xslt中執行此操作,但這不適合我。

+0

檢查關於使用XPath字符串連接這樣一個問題:http://stackoverflow.com/questions/1403971/xpath-to-return -string統合-的排位賽,子節點值。 – 2013-05-13 15:01:41

回答

0

這在XPath 1.0中不可行。在這兩個的XQuery(1.0是罰款)和XPath 2.0,你可以這樣做:

for $i in 1 to max((count(//title), count(//creator))) 
return string-join((//title[$i], //creator[$i]), ' ') 
+0

謝謝。儘管這確實導致所有事情都成爲一個項目,而不是分開。 – Flips 2013-05-13 15:32:02

+0

只要刪除'string-join'併爲每個標題和創建者調用'/ data()',就會得到文本節點序列。如果你想在輸出中使用標籤,只需刪除'string-join'調用。 :)請在下次提問時準確指定預期的輸出,那麼您將在第一時間獲得您正在尋找的答案。 – 2013-05-13 15:35:14

+0

對不起,雖然我做到了。你給的例子給出了一個結果 title1 creator1 title2 creator2 title3。我只是覺得新的一行很清楚,我希望數據分離或以多種XdmItems的方式分類。再次感謝。 – Flips 2013-05-13 15:47:47

相關問題