Schaffung eines bedingten Kommentare mit XSLT?
-
03-07-2019 - |
Frage
Ich möchte bedingte Kommentare in XSLT.
Aber wenn ich diese:
<!-- [If IE7] [endif] -->
in einem <xsl:comment>
, XSLT entfernt es aus dem Ausgang, wenn es gemacht wird.
Gibt es eine Möglichkeit bedingte Kommentare in XSLT zu erstellen?
Lösung
Sie einfach einen <xsl:comment>
Tag verwenden, und geben Sie Ihren Kommentar im Tag.
Zum Beispiel:
<xsl:if test="@id = '1'">
<xsl:comment>
<![CDATA[[if IE]><![endif]]]>
</xsl:comment>
</xsl:if>
Taming Ihre Multiple IE Standalones zu diesem Thema ein großer Artikel ist.
Andere Tipps
Die obige Lösung geht davon aus, dass der Inhalt innerhalb des bedingten Kommentars keinen XSLT-Parameter enthält. Im Beispiel unten haben wir einen Parameter $DATA_ROOT_PATH
haben, das uns verarbeitet werden soll die richtige Position einer CSS-Datei zu geben. In diesem Fall <xsl:comment/>
ist nicht geeignet. Wir müssen <xsl:text/>
verwenden, und deaktivieren Sie die Ausgabe zu entkommen.
Das Beispiel hier wird die CSS-Datei nur enthalten, wenn wir IE7 verwenden.
<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>
Das Codebeispiel würde erzeugt eine Ausgabe wie so, wenn $DATA_ROOT_PATH
= / example :
<!--[if IE 7]>
<link rel="stylesheet" type="text/css"
href="/example/resources/css/ie7.css"
media="screen" />
<![endif]-->
Das war der einzige Weg, ich konnte meinen dh Sheet erhalten angewandt werden:
<xsl:comment>[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]</xsl:comment>
Ich musste sicherstellen, dass es keinen Platz zwischen meinem Text und der xsl: Kommentar Öffnen / Schließen-Tags