我想将XSL模板应用于XML的一部分,并在结果XML中复制未修改的其余部分。
暂时我正在做一些有效的事情。
<xsl:template match="yt:bold">
<xsl:choose>
<xsl:when test="ancestor::ReportContent"> //I keep the ReportContent unchanged
<xsl:copy><xsl:copy-of select="@*"/>
<xsl:apply-templates />
</xsl:copy>
</xsl:when>
<xsl:otherwise>
<b>
<xsl:apply-templates />
</b>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
但是我正在为每个模板做这个...而且我确信有更优雅的方法来做到这一点。
我尝试使用此模板复制部分XML:
<xsl:template match="ReportContent">
<xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates select="???" /></xsl:copy>
</xsl:template>
但是我在复制时应用了所有其他模板......我不希望这样。
那么有更优雅的方式来做我想做的事吗?
提前致谢。
答案 0 :(得分:2)
这是你想要做的吗?
<xsl:template match="yt:bold[not(ancestor::ReportContent)]">
<b>
<xsl:apply-templates />
</b>
</xsl:template>
或者
<xsl:template match="ReportContent">
<xsl:copy-of select="."/>
</xsl:template>