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?

War es hilfreich?

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

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

Ich musste sicherstellen, dass es keinen Platz zwischen meinem Text und der xsl: Kommentar Öffnen / Schließen-Tags

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top