我有以下两个XLST1规则
<!-- First Transformation -->
<xsl:template match="Cond">
<xsl:element name="NewCond">
<Start>
<xsl:copy-of select="node()"/>
</Start>
</xsl:element>
</xsl:template>
<!-- Second transformation -->
<xsl:template match="@rule">
<xsl:attribute name="rule">
<xsl:choose>
<xsl:when test=". = 'greater_than'">greater-than</xsl:when>
<xsl:when test=". = 'less_than'">less-than</xsl:when>
<xsl:when test=". = 'equal_to'">equal-to</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
以及以下输入xml
<Cond>
<Elem1>
<Eleme2 rule="less_than">
</Eleme2>
</Elem1>
</Cond>
转换的输出是
<NewCond>
<Start>
<Elem1>
<Eleme2 rule="less_than">
</Eleme2>
</Elem1>
</Start>
</NewCond>
我的问题是我的第二个转换从未应用。 如果我在xml的其他位置具有@rule属性,则该规则正常。
通过阅读其他线程来解决此问题,似乎解决方案以某种方式将转换的结果存储在变量中,并将该结果用于第二次转换。 我尝试用作参考:XSLT - Apply two different template in sequence 但是我无法使其工作。 预先感谢您的帮助。