需要有关xsl / xquery所需输出的帮助

时间:2014-07-27 04:58:45

标签: xslt xquery

我的要求如下:

输入: -

<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任何东西...... 请帮我一下......

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

除了@ michael-kay的优秀答案,如果您有XQuery 3.0,那么您可以使用:

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

!简单地图运算符,对于这种简单的单行转换情况,IMHO可以比for更好。