繁体   English   中英

如何使用XQuery fn:idref()函数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM