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

| 我无法获得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中,您可以使用键。     

要回复问题请先登录注册