在同一元素上进行XSLT多重转换

时间:2018-06-29 13:33:50

标签: xml xslt xslt-1.0

我有以下两个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 但是我无法使其工作。 预先感谢您的帮助。

0 个答案:

没有答案