所以我想在for子句中插入函数distint-nodes(请参阅下面的内容).我正在使用BaseX来达到这个目的. 这是我的代码: autores{ for $a in doc("libros.xml")//libro return autor nombre{ for $b in $a/autor return conca
这是我的代码:
<autores>{ for $a in doc("libros.xml")//libro return <autor> <nombre>{ for $b in $a/autor return concat($b/nombre,' ',$b/apellido) } </nombre> { for $c in doc("libros.xml")//libro where $c/autor = $a/autor return $c/titulo } </autor> } </autores>
我想在第一个中使用这个函数,所以它只返回一个< autor />的唯一实例.元件:
for $b in distinct-nodes($a/autor) return concat($b/nombre,' ',$b/apellido)
但我收到以下错误(BaseX查询信息):
Error:
Stopped at G:/Pruebas XML/XML/xqueryLibros.xq, 6/31:
[XPST0017] Unknown function: fn:distinct-nodes.
为什么这个功能存在时是未知的?有什么我想念的吗?
编辑:我的目的是获得元素$a / autor的唯一实例,其中$a / autor / nombre和$a / autor / apellidos文本值相同
<autores> <autor> <nombre>W. Stevens</nombre> <titulo>TCP/IP Ilustrado</titulo> <titulo>Programación Avanzada en el entorno Unix</titulo> </autor> <autor> <nombre>W. Stevens</nombre> <titulo>TCP/IP Ilustrado</titulo> <titulo>Programación Avanzada en el entorno Unix</titulo> </autor> <autor> <nombre>Serge Abiteboul Peter Buneman Dan Suciu</nombre> <titulo>Datos en la Web</titulo> </autor> <autor> <nombre/> </autor> </autores>没有标准的XQuery函数fn:distinct-nodes(…),XQuery只知道fn:distinct-values(…).
第三方XQuery函数库functx知道functx:dinstinct-nodes(...)
function,它再次作为标准XQuery函数实现.该库可以是downloaded并作为具有大多数XQuery实现的模块导入,因为它仅使用标准XQuery函数.
如果所有< autor /> elements contains是作者的名字,考虑应用fn:distinct-values(…)而重新创建< autor />之后的元素.
出于性能原因,如果编译时间增加太多(库很大),则只提取所需的函数可能是合理的.另外请注意,某些功能具有更快的XQuery 3.0对应功能,利用了新的语言功能.
fn是默认的XQuery函数名称空间,用于函数库定义的名称空间.