我目前坚持为一个元素应用多个具有相同匹配的 xsl:template。下面的示例显示了该问题。
有谁知道使用两个“模板匹配”创建预期输出的 XSL 模板?由于技术原因,不可能将两个“模板”元素放在一起。
输入
<root>
<elem>123.45</elem>
<elem>789.12</elem>
</root>
XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:decimal-format name="de" decimal-separator="," grouping-separator="."/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/root/elem">
<xsl:element name="renamed">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="/root/elem">
<xsl:element name="elem">
<xsl:value-of select="format-number(.,'#.##0,0000','de')" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>
输出:
<root>
<elem>123,4500</elem>
<elem>789,1200</elem>
</root>
预期输出:
<root>
<renamed>123,4500</renamed>
<renamed>789,1200</renamed>
</root>