Xml 如何使用XQuery fn:idref()函数?
我无法让XQuery函数Xml 如何使用XQuery fn:idref()函数?,xml,xquery,saxon,idref,Xml,Xquery,Saxon,Idref,我无法让XQuery函数fn:idref()返回任何内容 我有这个XML文档doc.XML <doc> <foo idref="xyz"/> <bar xml:id="xyz"/> </doc> 但结果总是空的。我猜属性idref=“xyz”需要声明为typeidref,但这可以在没有模式的情况下实现吗 我使用的是Saxon XQuery 1.0处理器。是的,idref()函数只检索标记为IDREFs的属性,这仅在模式验证的结果下发生 有
fn:idref()
返回任何内容
我有这个XML文档doc.XML
<doc>
<foo idref="xyz"/>
<bar xml:id="xyz"/>
</doc>
但结果总是空的。我猜属性idref=“xyz”
需要声明为typeidref
,但这可以在没有模式的情况下实现吗
我使用的是Saxon XQuery 1.0处理器。是的,idref()函数只检索标记为IDREFs的属性,这仅在模式验证的结果下发生
有一个不推荐使用的旧设置config.setRetainDTDAttributeTypes(),允许它作为DTD验证的结果工作,但我不会使用它
您始终可以执行doc(“doc.xml”)/*[@idref=“xyz”]
。这将导致在Saxon HE和Saxon PE中进行串行搜索,但将使用Saxon EE中的索引。我通常建议使用idref()
函数
当然,在XSLT中,您可以使用键。太好了,谢谢。我也有一个类似的问题,但有一个idrefs属性。我要问一个新问题。
let $d := doc("doc.xml")
return $d/idref("xyz")