Я хочу создать условные комментарии в 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]-->
Это был единственный способ, которым я смог применить мою таблицу стилей:
<xsl:comment>[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
Мне нужно было убедиться, что между моим текстом и ярлыками открытия/закрытия комментариев xsl: нет: