Создание условных комментариев с помощью XSLT? - PullRequest
11 голосов
/ 02 мая 2009

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

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

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

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

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

Ответы [ 3 ]

21 голосов
/ 02 мая 2009

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

Например:

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

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

6 голосов
/ 07 октября 2010

Приведенное выше решение предполагает, что содержимое внутри условного комментария не содержит никаких параметров 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>

Пример кода будет генерировать вывод, как если бы $DATA_ROOT_PATH = / example :

<!--[if IE 7]>
  <link rel="stylesheet" type="text/css"
        href="/example/resources/css/ie7.css"
        media="screen" />
<![endif]-->
0 голосов
/ 11 сентября 2013

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

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

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

...