在xslt 1.0中用逗号分隔属性值?

时间:2014-12-17 08:10:55

标签: xslt xslt-1.0

我的源XML: -

<wireframe:xaIDExclusion>
    <widget:xaID id="12"/>
    <widget:xaID id="121"/>
    <widget:xaID id="123"/>
    <widget:xaID id="124"/>
    <widget:xaID id="3456"/>
</wireframe:xaIDExclusion>

这是我试过的

<xsl:template match="widget:xaID">
      <xsl:element name="xaid">
<xsl:variable name ="value" select="@id"></xsl:variable>       
<xsl:value-of select="concat($value,',')"></xsl:value-of>
</xsl:element>        
</xsl:template>

我需要像这样的输出,怎么做

12,121,123,124,3456

提前致谢

1 个答案:

答案 0 :(得分:0)

您的方法存在的问题是您匹配widget:xaID,然后创建xaid元素;这导致多个xaid元素,每个widget:xaID一个元素。当您处于xaid的父级的上下文中时,您需要创建widget:xaID元素。

尝试(未经测试,因为您没有提供格式良好的XML):

<xsl:template match="wireframe:xaIDExclusion">
    <xaid>
        <xsl:for-each select="widget:xaID">
            <xsl:value-of select="@id">
            <xsl:if test="position()!=last()">, </xsl:if>
        </xsl:for-each>
    </xaid>        
</xsl:template>