Вопрос

Я хочу создать условные комментарии в XSLT.

Но когда я использую это:

<!-- [If IE7] [endif] -->

в <xsl:comment> XSLT удаляет его из вывода при его отображении.

Есть ли способ создать условные комментарии в XSLT?

Это было полезно?

Решение

Просто используйте тег <xsl:comment> и включите свой комментарий в тег.

Например:

<xsl:if test="@id = '1'">
  <xsl:comment>
    <![CDATA[[if IE]><![endif]]]>
  </xsl:comment>
</xsl:if>

Укрощение нескольких отдельных IE - отличная статья на эту тему.

Другие советы

Приведенное выше решение предполагает, что содержимое внутри условного комментария не содержит никаких параметров XSLT. В приведенном ниже примере у нас есть параметр $DATA_ROOT_PATH, который должен быть обработан, чтобы дать нам правильное местоположение CSS-файла. В этом случае <xsl:comment/> не подходит. Мы должны использовать <xsl:text/> и отключить экранирование выхода.

Пример здесь будет включать файл CSS, только если мы используем IE7.

<xsl:text disable-output-escaping="yes">&lt;!--[if IE 7]&gt;</xsl:text>
  <link rel="stylesheet" type="text/css" href="{$DATA_ROOT_PATH}/resources/css/ie7.css" media="screen"/>
<xsl:text disable-output-escaping="yes">&lt;![endif]--&gt;</xsl:text>

Пример кода сгенерирует вывод примерно так, если <=> = / example :

<!--[if IE 7]>
  <link rel="stylesheet" type="text/css"
        href="/example/resources/css/ie7.css"
        media="screen" />
<![endif]-->

Это был единственный способ, с помощью которого я смог применить свою таблицу стилей ie:

    <xsl:comment>[if IE]>
      &lt;link rel="stylesheet" type="text/css" href="ie.css" />
      &lt;![endif]</xsl:comment>

Я должен был убедиться, что между моим текстом и тегами открытия / закрытия комментария xsl нет пробелов

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top