Créer des commentaires conditionnels avec XSLT?
-
03-07-2019 - |
Question
Je souhaite créer des commentaires conditionnels dans XSLT.
Mais quand j'utilise ceci:
<!-- [If IE7] [endif] -->
dans un <xsl:comment>
, XSLT le supprime de la sortie lorsqu’il est rendu.
Y a-t-il un moyen de créer des commentaires conditionnels dans XSLT?
La solution
Utilisez simplement une balise <xsl:comment>
et incluez votre commentaire dans la balise.
Par exemple:
<xsl:if test="@id = '1'">
<xsl:comment>
<![CDATA[[if IE]><![endif]]]>
</xsl:comment>
</xsl:if>
Apprivoiser vos multiples versions d'Internet Explorer est un excellent article sur ce sujet.
Autres conseils
La solution ci-dessus suppose que le contenu du commentaire conditionnel ne contient aucun paramètre XSLT. Dans l'exemple ci-dessous, nous avons un paramètre $DATA_ROOT_PATH
qui doit être traité pour nous donner l'emplacement correct d'un fichier CSS. Dans ce cas, <xsl:comment/>
ne convient pas. Nous devons utiliser <xsl:text/>
et désactiver l'échappement de sortie.
L'exemple ici inclura le fichier CSS uniquement si nous utilisons 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>
L'exemple de code générerait une sortie semblable à celle-ci si <=> = / exemple :
<!--[if IE 7]>
<link rel="stylesheet" type="text/css"
href="/example/resources/css/ie7.css"
media="screen" />
<![endif]-->
C’est la seule façon pour moi d’appliquer ma feuille de style, par exemple:
<xsl:comment>[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
Je devais m'assurer qu'il n'y avait pas d'espace entre mon texte et les balises d'ouverture / fermeture de xsl: comment