xslt/XML消除重复的属性值

xslt/XML消除重复的属性值,xml,xslt,xslt-3.0,Xml,Xslt,Xslt 3.0,我想从XSLT给出的结果中删除重复的值 我的输入(两个标签用于我的示例,但有5000多个标签需要处理): 如果我明白了,我就得这样重写 <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="us-ascii"/> <xsl:strip-space elements="*"/> <

我想从XSLT给出的结果中删除重复的值

我的输入(两个标签用于我的示例,但有5000多个标签需要处理):

如果我明白了,我就得这样重写

<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="us-ascii"/>
<xsl:strip-space elements="*"/>

<xsl:template match="addRequest">    
    <xsl:apply-templates select="attributes"/><xsl:text>&#xd;</xsl:text><xsl:text>&#xa;</xsl:text>          
</xsl:template>

<xsl:template match="attributes">
   <xsl:value-of select="distinct-values(attr[@name='GPEIEnsDiv']/value/substring-before(.,'$'))" separator=","/>
   <xsl:text>&#10;</xsl:text>
</xsl:template>

</xsl:stylesheet>

一般来说,在使用XSLT 3时,通常可以简单地使用
不同的值

<xsl:template match="attributes">
   <xsl:value-of select="distinct-values(attr[@name='GPEIEnsDiv']/value/substring-before(.,'$'))" separator=","/>
   <xsl:text>&#10;</xsl:text>
</xsl:template>




输入文件怎么样?我们需要查看输入文件,这样才能知道重复项来自何处。我输入了不同的值,如: ;但这表明了错误吗?在源代码下方使用不同的值有助于消除重复项,您需要更具体地说明完整结果是否不应包含任何重复项,或者在输出每个
属性的值时是否要消除重复项。你现在的代码就是后者。我试着使用它,但它是无效的。我发布的模板当然必须放在一个完整的样式表中,但你似乎已经做到了,你的尝试没有给我任何错误。因此,请更具体地说明您遇到的错误以及您使用的表示“它不是有效的xsl”的工具。我尝试像您显示给我的链接一样,在链接中没有错误,它工作正常,但我在XML Tools 2.4.9.2中使用xsl转换与notepad++7插件,它向我显示了错误“无法对当前源应用转换。确保XSL是有效的“,我不知道为什么?XSLT 3在2017年最终确定为规范,并在一些XSLT 3处理器中实现,如Saxon 9.9和Saxon 9.8以及AltovaXML 2017版和更高版本,但以前发布的旧软件并不神奇地支持它。因此,要使用XSLT2或XSLT3,您需要使用XSLT2或XSLT3处理器,不确定Notepad++是否允许您集成一个处理器。请告诉我您的答案,我将尝试XML copy editor 1.2,看看它是否工作正常
5001,4873,5001,5001,5001,5001,5001,5001,5001,
6623,6623,
5264,5264,5264,5264,5264,5264,5264,5264,
,
5044,5044,5044,5044,5044,5044,5044,5044,
6621,
,
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="us-ascii"/>
<xsl:strip-space elements="*"/>

<xsl:template match="addRequest">    
    <xsl:apply-templates select="attributes"/><xsl:text>&#xd;</xsl:text><xsl:text>&#xa;</xsl:text>          
</xsl:template>

<xsl:template match="attributes">
   <xsl:value-of select="distinct-values(attr[@name='GPEIEnsDiv']/value/substring-before(.,'$'))" separator=","/>
   <xsl:text>&#10;</xsl:text>
</xsl:template>

</xsl:stylesheet>
<xsl:template match="attributes">
   <xsl:value-of select="distinct-values(attr[@name='GPEIEnsDiv']/value/substring-before(.,'$'))" separator=","/>
   <xsl:text>&#10;</xsl:text>
</xsl:template>