Рекурсивное объединение нескольких таблиц стилей XSLT - PullRequest
1 голос
/ 03 мая 2011

Я хочу объединить несколько таблиц стилей xslt (V1.0) в одну таблицу стилей.

Я уже видел похожую проблему, опубликованную здесь.

Объединение нескольких таблиц стилей xslt

Ответ, предоставленный в сообщении, работает, но связывает только импортированные таблицы стилей на один уровень.

Вот предоставленный ответ, который достигает этого.

    <?xml version="1.0" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                    version="1.0">

    <xsl:template match="xsl:include">
      <xsl:copy-of select="document(@href)/xsl:stylesheet/*"/>
    </xsl:template>

    <xsl:template match="@*|node()">
      <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
    </xsl:template>

У меня есть xsl: import ссылки на один уровень ниже на импортированных таблицах стилей, поэтому нужно также прокрутить импортированные таблицы стилей, в противном случае я просто получаю ссылки xsl: import для следующего уровня, который побеждает объектодного XSLT.

Просто создать один XSLT в первую очередь невозможно, так как они должны быть отдельными, чтобы легче управлять управлением версиями контента.

Кто-нибудь знает, как это может бытьдостигнут?

1 Ответ

2 голосов
/ 03 мая 2011

Не могли бы вы просто заменить

<xsl:template match="xsl:include">
  <xsl:copy-of select="document(@href)/xsl:stylesheet/*"/>
</xsl:template>

с

<xsl:template match="xsl:include">
  <xsl:apply-templates select="document(@href)/xsl:stylesheet/*"/>
</xsl:template>

Однако вы говорите, что хотите свернуть объявления xsl:import, а также xsl: include. Это изменило бы семантику вашего кода.

(На самом деле, слияние в xsl: include может также иметь некоторые незначительные побочные эффекты. Это означает, что шаблоны во включенном модуле находятся под влиянием таких атрибутов, как exclude-result-prefixes в элементе xsl: stylesheet. основного модуля и теряет все такие атрибуты, которые присутствовали во включенном модуле.)

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