【问题标题】:Need help on xsl/xquery desired ouput需要有关 xml/xquery 所需输出的帮助
【发布时间】:2014-07-27 04:58:44
【问题描述】:

我的要求如下:

输入:-

<Root>
<Name>abc</Name>
<Name>def</Name>
<Name>abc</Name>
<Name>abc</Name>
<Name>def</Name>
<Name>def</Name>
</Root>

输出:- 我需要使名称元素的 xml 的值不重复

<Root>
<Name>abc</Name>
<Name>def</Name>  
</Root>  

我们可以使用 xsl 或 xquery 任何东西... 请帮助我...

【问题讨论】:

  • 感谢 Magicianred...
  • 嗨,它在没有使用 xml 定义的命名空间时工作。但在实际情况下,xml 将包含如下命名空间:- xmlns.oracle.com/abc" xmlns:xsi="w3.org/2001/XMLSchema-instance"> abcdefabcabcdefdef
  • 您尝试将命名空间添加到 xsl:for-each? ?
  • 嘿尝试使用本地名称约定。它工作..非常感谢您的超级快速帮助...

标签: xslt xquery


【解决方案1】:

在 XSLT 2.0 中,使用

<xsl:for-each-group select="/*/Name" group-by=".">
  <xsl:copy-of select="current-group()[1]"/>
</xsl:for-each>

在 XQuery 1.0 中使用

for $n in distinct-values(/*/Name)
return <Name>{$n}</Name>

【讨论】:

    【解决方案2】:

    除了@michael-kay 的出色回答,如果您有 XQuery 3.0,那么您可以使用:

    distinct-values(/*/Name) ! <Name>{.}</Name>
    

    !Simple Map Operator,恕我直言,对于这种简单的单线转换情况,它比 for 更好。

    【讨论】:

      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多