<xsl:text>-Element

Generiert Textknoten aus einem Stylesheet. Ausschließlich aus Leerraum bestehende Knoten werden in der Ausgabe beibehalten.

<xsl:text
  disable-output-escaping = "yes" | "no">
</xsl:text>

Attribute

  • disable-output-escaping
    Der Standardwert ist "no". Wenn der Wert "yes" ist, wird ein Textknoten ausgegeben, der durch Instanziieren des <xsl:text>-Elements generiert wurde, ohne mit einem Escapezeichen versehen zu werden. Beispielsweise wird nachfolgend das einzelne Zeichen "<" generiert.

    <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
    

    Hinweis

    Da mithilfe von disable-output-escaping="yes" Dokumente generiert werden können, die nicht wohlgeformt sind, empfiehlt sich eine sorgfältige Verwendung.Eine nicht wohlgeformte Ausgabe kann unter bestimmten Bedingungen zu Fehlern führen.Beispielsweise macht transformNodeToObject es für ein XML-Dokument erforderlich, dass das Ergebnis wohlgeformt ist, und wird daher möglicherweise nicht abgeschlossen, wenn durch disable-output-escaping die Wohlgeformtheit des Dokuments beeinträchtigt ist.disable-output-escaping="yes" sollte als erweiterte Funktion angesehen werden, das nur verwendet werden sollte, wenn der Benutzer vollständig mit den möglichen Fehlerquellen vertraut ist.

Elementinformationen

Anzahl der Vorkommen

Unbegrenzt

Übergeordnete Elemente

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:otherwise, xsl:message, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, Ausgabeelemente

Untergeordnete Elemente

(Keine untergeordneten Elemente)

Hinweise

In einem Stylesheet kann Text in eine Literalergebnisstruktur mit oder ohne <xsl:text> generiert werden. Dennoch können Sie mit diesem Element ein wenig Kontrolle über den vom Stylesheet erstellten Leerraum ausüben. Um das Stylesheet leichter lesbar zu machen, können Sie ein Element pro Zeile in eine Vorlage schreiben und einige Zeilen einziehen. Dadurch wird Leerraum als Bestandteil der Vorlagenregel eingeführt. Dies kann ein erwünschter oder nicht erwünschter Effekt der Transformation sein.

Möglicherweise möchten Sie in einigen Fällen einen Leerraum einführen, um zwei Datenwerte zu trennen. Hierzu kann ein <xsl:text>-Element verwendet werden. In <xsl:text> eingeschlossener Leerraum wird in der Ergebnisstruktur ausgegeben. Daher gibt die Vorlage –

<xsl:template match="a-node">
   <xsl:text>
   </xsl:text>
</xsl:template>

– in der Ergebnisstruktur immer einen Textknoten aus, der mit einer neuen Zeile beginnt. Nur aus Leerraum bestehende Textknoten, die nicht von <xsl:text> eingeschlossen sind, werden aus der Ergebnisstruktur entfernt. Im unten aufgeführten Beispiel ist die Verwendung leerer <xsl:text/>-Elemente dargestellt.

Beispiel

XML-Datei (text.xml)

<?xml version="1.0"?>
<topic>
  <text>First line.</text>
  <text>Second line.</text>
  <text></text>
</topic>

XSLT-Datei (text.xsl)

Im folgenden Stylesheet werden leere <xsl:text/>-Elemente verwendet, um alle Leerraumzeichen zu entfernen (Leerzeichen, Zeilenvorschub und Tabulatoren), die andernfalls von den Vorlagenrichtlinien erstellt werden würden. Das Ergebnis ist unten in der formatierten Ausgabe dargestellt.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="text">
    <xsl:text/>"<xsl:value-of select="."/>"<xsl:text/>
  </xsl:template>
</xsl:stylesheet>

HTML-Datei (text.htm)

Die folgende HTML-Datei kann verwendet werden, um die XSLT-Transformation auszuführen und die Ergebnisse anzuzeigen.

<html>
  <head>
    <title></title>
  </head>
  <body onload="init()">
     <div><input type="text" id="xmlName" value="text.xml"></div>
     <div><input type="text" id="xslName" value="text.xsl"></div>
     <div><input type=button value="transform" onclick="trans();"></div>
     <div id="divErr"></div>
     <pre id="preRes" style="background:blue;color:gold"></pre>
  </body>

  <script language="javascript">
    function trans() 
    {
      xmlFile=xmlName.value;
      xslFile=xslName.value;
      if (xmlFile == "" || xslFile == "") 
      {
         divErr.innerHTML = "invalid xml/xsl file names.";
      }

      var xsl = new ActiveXObject("MSXML2.DOMDOCUMENT.6.0");
      var xml = new ActiveXObject("MSXML2.DOMDocument.6.0");
      xml.validateOnParse = false;
      xml.async = false;
      xml.load(xmlFile);
      if (xml.parseError.errorCode != 0)
        divErr.innerHTML = "XML Parse Error : " + xml.parseError.reason;

      xsl.async = false;
      xsl.load(xslFile);
      if (xsl.parseError.errorCode != 0)
        divErr.innerHTML = "XSL Parse Error : " + xsl.parseError.reason;

      try
      {
        res = xml.transformNode(xsl.documentElement);
        preRes.innerText = res;
      }
      catch(err)
      {
        divErr.innerHTML = "Transformation Error:"
               +err.number+"*"+err.description;
      }
    }
  </script>
</html>

Probieren Sie es aus!

  1. Kopieren Sie den Beispielcode in entsprechende Dateien, und speichern Sie die Dateien auf dem lokalen Laufwerk.

  2. Doppelklicken Sie auf die HTML-Datei text.htm.

  3. Klicken Sie auf der angezeigten Webseite auf die Schaltfläche transform.

Ausgabe

Wenn das XSLT-Stylesheet wie oben dargestellt verwendet wird, werden alle Textwerte vom Kopf bis zum Ende in einer einzelnen Ausgabezeile verknüpft:

"First line.""Second line."""

Wenn Sie die beiden <xsl:text/>-Elemente aus der Vorlage entfernen, die mit text-Elementen übereinstimmt, erhalten Sie die folgende Ausgabe (in 7 Zeilen):

"First line."

"Second line."

""

Wenn Sie nur das erste <xsl:text/>-Element aus der Vorlage entfernen, erhalten Sie die folgende Ausgabe (in 4 Zeilen):

"First line."

"Second line."

""

Siehe auch

Referenz

<xsl:comment>-Element