Я хочу создать условные комментарии в XSLT.
Но когда я использую это:
<!-- [If IE7] [endif] -->
в <xsl:comment>
XSLT удаляет его из вывода при рендеринге.
Есть ли способ создавать условные комментарии в XSLT?
Я хочу создать условные комментарии в 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>
Пример кода будет генерировать вывод следующим образом, если $DATA_ROOT_PATH
= /example:
<!--[if IE 7]>
<link rel="stylesheet" type="text/css"
href="/example/resources/css/ie7.css"
media="screen" />
<![endif]-->
<!-- Category: instruction --> <xsl:comment> <!-- Content: template --> </xsl:comment>
Это означает, что вы можете использовать любой шаблон контента внутри инструкции xsl:comment
, если он ничего не выводит. кроме текстовых узлов.
- person ; 16.04.2011
]]
. Правильно надо сказать: <xsl:text disable-output-escaping="yes"><![endif]--></xsl:text>
- person aron.lakatos; 31.10.2016
Это был единственный способ применить мою таблицу стилей ie:
<xsl:comment>[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
Я должен был убедиться, что между моим текстом и открывающими/закрывающими тегами xsl:comment нет пробела.