开发者

Copy portion of an XML with XSL without applying templates

开发者 https://www.devze.com 2023-03-12 11:54 出处:网络
I would like to apply a XSL template to a portion of the XML and copy the rest unmodified in the result XML.

I would like to apply a XSL template to a portion of the XML and copy the rest unmodified in the result XML.

For the time being I'm doing something that works.

<xsl:template match="yt:bold">
  <xsl:choose>
       <xsl:when test="ancestor::ReportContent"> //I keep the ReportContent u开发者_如何学运维nchanged
            <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>

But I'm doing this for each template... and I am sure there is a more elegant way to do this.

I tried to copy portion of the XML using this template:

<xsl:template match="ReportContent">
<xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates select="???" /></xsl:copy>
 </xsl:template>

But I apply all the other templates when copying... and I don't want that.

So is there a more elegant way to do what I want to do?

Thanks in advance.


Is this what you're trying to do?

<xsl:template match="yt:bold[not(ancestor::ReportContent)]">
  <b>
    <xsl:apply-templates />
  </b>
</xsl:template>

Or perhaps

<xsl:template match="ReportContent">
  <xsl:copy-of select="."/>
</xsl:template>

?

0

精彩评论

暂无评论...
验证码 换一张
取 消