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?

Était-ce utile?

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">&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>

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]>
      &lt;link rel="stylesheet" type="text/css" href="ie.css" />
      &lt;![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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top