2011-06-15 43 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