Pregunta

quiero crear comentarios condicionales en XSLT.

Pero cuando uso esto:

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

en un <xsl:comment>, XSLT lo elimina de la salida cuando se procesa.

¿Hay alguna forma de crear comentarios condicionales en XSLT?

¿Fue útil?

Solución

Simplemente use una etiqueta <xsl:comment> e incluya su comentario dentro de la etiqueta.

Por ejemplo:

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

Domesticar sus múltiples IE Standalones es un excelente artículo sobre este tema.

Otros consejos

La solución anterior supone que el contenido dentro del comentario condicional no contiene ningún parámetro XSLT.En el siguiente ejemplo tenemos un parámetro $DATA_ROOT_PATH que debe procesarse para darnos la ubicación correcta de un archivo CSS.En este caso <xsl:comment/> no es adecuado.debemos usar <xsl:text/> y deshabilite el escape de salida.

El ejemplo aquí incluirá el archivo CSS solo si usamos 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>

El ejemplo de código generaría una salida así si $DATA_ROOT_PATH = /ejemplo:

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

Esta fue la única forma en que pude aplicar mi hoja de estilo, es decir:

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

Tenía que asegurarme de que no había espacio entre mi texto y el xsl: comentar las etiquetas de apertura / cierre

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top