当前位置 : 主页 > 网页制作 > xml >

xml – XQuery distinct-nodes用法

来源:互联网 收集:自由互联 发布时间:2021-06-13
所以我想在for子句中插入函数distint-nodes(请参阅下面的内容).我正在使用BaseX来达到这个目的. 这是我的代码: autores{ for $a in doc("libros.xml")//libro return autor nombre{ for $b in $a/autor return conca
所以我想在for子句中插入函数distint-nodes(请参阅下面的内容).我正在使用BaseX来达到这个目的.

这是我的代码:

<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)

但我收到以下错误(B​​aseX查询信息):

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函数名称空间,用于函数库定义的名称空间.

网友评论