2009-05-02 5 views

ответ

21

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

Например:

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

Taming Your Multiple IE Standalones большая статья на эту тему.

+0

Да .. Это работает :) Почему вы использовали первую строку кода?

+0

? Я думал, что вам нужен комментарий, который будет включен условно! Где мой голос/прием?! ;-) – Cerebrus

+0

Голосование добавлено. ;-) Условный комментарий включен безоговорочно. Но IE оценивает комментарий как условный - если он оценивает true, код внутри запускается. – Tomalak

6

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

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

Вы написали _ « не подходит» _, но это соответствует http://www.w3.org/TR/xslt#section-Creating-Comments: _ "' <- Содержание: шаблон -> '" _ Это означает, что вы можете использовать любой шаблон содержимого внутри 'XSL : comment', если он выводит только текстовые узлы. – 2011-04-15 20:05:01

+0

Это совершенно правильный сценарий, когда вам нужно обработать содержимое условного комментария дальше. Существует опечатка с закрывающим тегом, хотя: после endif есть два дополнительных символа ']]'. Правильно он должен сказать: ' <! [Endif] - >' –

0

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

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

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