使用XSL复制XML的一部分而不应用模板

时间:2011-06-10 09:18:03

标签: xml xslt

我想将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>

但是我在复制时应用了所有其他模板......我不希望这样。

那么有更优雅的方式来做我想做的事吗?

提前致谢。

1 个答案:

答案 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>