【发布时间】:2018-02-06 08:36:54
【问题描述】:
我收到不同的 xml。其中一个具有值为 true/false 的标签,我必须将其替换为 1/0。 我的 xsl:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<tag1>
<tag2>
<xsl:choose>
<xsl:when test="string-length(ERRORMSG) > 0">
<xsl:apply-templates select="ERRORMSG" />
</xsl:when>
<xsl:otherwise>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:otherwise>
</xsl:choose>
</tag2>
</tag1>
</xsl:template>
我的 xml:
<tag2>
<tag3>
<tag4>
<tag5>abc</tag5>
<tag6>
<tag7>
<tag8>false</tag8>
<tag9>true</tag9>
</tag7>
</tag6>
</tag4>
</tag3>
</tag2>
我该怎么做?我无法删除<xsl:apply-templates select="node()|@*"/>,因为我收到了不同的模板,并且在其中一个模板中,如果真/假,我必须将特定标签值(tag8,tag9)替换为 1/0。
【问题讨论】:
-
使用两个模板:一个identity transform模板作为规则复制所有节点,一个模板匹配真/假元素作为规则的例外。 -- 注意模板不能嵌套。