我的要求如下:
输入: -
<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任何东西...... 请帮我一下......
答案 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
更好。