我是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 :(得分: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>