如何在xslt中重复值而不是元素

时间:2016-12-01 06:56:30

标签: xslt

我是XSLT的新手。任何人都可以帮助我获得所需的输出吗?

我的代码

 <xsl:for-each
                 select="/path-to-element-in-xpath">
                 <xsl:element name="element_name">
                       <xsl:attribute name="Type">text</xsl:attribute>
                       <xsl:attribute name="Value">
                      <xsl:value-of select="element_name/@displayValue"></xsl:value-of>
            </xsl:attribute>
                 </xsl:element>
          </xsl:for-each>

实际输出

    <element_name Type="text" Value="element_name_1"/>
        <element_name Type="text" Value="element_name_2"/>
        <element_name Type="text" Value="element_name_3"/>
        <element_name Type="text" Value="element_name_4"/>
        <element_name Type="text" Value="element_name_5"/>

预期产出

<gl_coveragename Type="text" Value="element_name_1, element_name_2, element_name_3, element_name_4, element_name_5"/>

增加:需要帮助消除价值中的重复。

1 个答案:

答案 0 :(得分:0)

您正在为每个循环添加新元素,而您应该只添加一次元素,如下所示,

由于我们在问题中没有任何XML,因此假设以下是

<data>
    <Element11 displayValue="First">
        <key>73004</key>
        <number>001001</number>
    </Element11>
    <Element11 displayValue="Second">
        <key>7300465</key>
        <number>002001</number>
    </Element11>
    <Element11 displayValue="Third">
        <key>730046</key>
        <number>003001</number>
    </Element11>
</data>

应添加的XSL模板,

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://locomotive/bypass/docx" >
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="data">
   <xsl:element name="element_name">
       <xsl:attribute name="Type">text</xsl:attribute>
       <xsl:attribute name="Value">       
        <xsl:for-each  select="Element11">
            <xsl:value-of select="@displayValue"/>
            <xsl:text> </xsl:text>                 
       </xsl:for-each>
   </xsl:attribute> 
    </xsl:element>  
</xsl:template>

</xsl:stylesheet>