Создание условных комментариев с помощью XSLT?
-
03-07-2019 - |
Вопрос
Я хочу создать условные комментарии в 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"><!--[if IE 7]></xsl:text>
<link rel="stylesheet" type="text/css" href="{$DATA_ROOT_PATH}/resources/css/ie7.css" media="screen"/>
<xsl:text disable-output-escaping="yes"><![endif]--></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]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
Я должен был убедиться, что между моим текстом и тегами открытия / закрытия комментария xsl нет пробелов