2016-12-01 40 views
-1

我是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"/> 

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

+0

告诉我们您的XML,你试过到目前为止一切XSL – ScanQR

回答

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>