2011-06-15 72 views
1

我在第一次嘗試獲取fn:id() XQuery函數來做某件事情時失敗了。如何使用XQuery fn:id()函數?

到目前爲止,我有一個名爲bar.xml的文檔;

<bar> 
    <foo id="a"/> 
    <foo id="b"/> 
    <foo id="c"/> 
</bar> 

和一個XQuery;

doc('bar.xml')/fn:id(("a", "c")) 

但是,我嘗試的一切似乎只是返回一個空集。

我還沒有學習XML模式。 fn:id()可以在沒有爲bar.xml聲明單獨的模式文件的情況下工作嗎?

回答

4

你需要指出你的id屬性是ids。

執行此操作的一種方法是將模式或DTD添加到指定此操作的文檔。

另一種(更簡單)的方法是在文檔中使用xml:id代替id

在相關說明中,您可能希望使用element-with-id()而不是id()element-with-id()確實是id()最初打算做的,並且id出於兼容性的原因仍然在說明書中。

+0

太棒了,這是訣竅 - 謝謝。用xml替換id:id工作,例如用''替換'',然後將xquery與問題中的相同。再次感謝。 – 2011-06-16 15:52:29

+0

+1。你我也想看看我的博客條目:http://xqueryxpath.tumblr.com/post/8210950561/how-to-use-the-xquery-fnid-function – 2012-06-01 13:10:17