![](/img/trans.png)
[英]Trying to simulate the XQuery function fn:idref() but without a schema
[英]How to use the XQuery fn:idref() function?
我无法获得XQuery函数fn:idref()
返回任何内容。
我有这个XML文档doc.xml ;
<doc>
<foo idref="xyz"/>
<bar xml:id="xyz"/>
</doc>
还有这个XQuery;
let $d := doc("doc.xml")
return $d/idref("xyz")
但是结果总是空的。 我猜测属性idref="xyz"
需要声明为idref
类型,但是可以在没有模式的情况下完成吗?
我正在使用Saxon XQuery 1.0处理器。
是的,idref()函数仅检索标记为IDREF的属性,而这仅是模式验证的结果。
有一个过时的旧设置config.setRetainDTDAttributeTypes()允许它作为DTD验证的结果而工作,但我不会使用它。
您始终可以执行doc("doc.xml")//*[@idref="xyz"]
。 这将导致在Saxon-HE和Saxon-PE中进行串行搜索,但是将使用Saxon-EE中的索引。 我通常建议使用idref()
函数。
当然,在XSLT中,您可以使用键。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.