¿Crear comentarios condicionales con XSLT?
-
03-07-2019 - |
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?
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"><!--[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>
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]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![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