Скопируйте часть XML с XSL без применения шаблонов - PullRequest
1 голос
/ 10 июня 2011

Я хотел бы применить шаблон 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 Ответ

2 голосов
/ 10 июня 2011

Это то, что вы пытаетесь сделать?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...