Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Literaler Text  Dokument im Navigationsbaum lokalisieren

Jeder Inhalt eines Templates, das kein Element ist (d.h., nicht innerhalb von < > steht), ist literalerText. Dazu gehören auch Zeilenumbrüche und Leerzeichen, die zusammengefasst als Leerraum (englisch Whitespace) bezeichnet werden. In ST-Programmen kann literaler Text zuätzlich durch den ST-Befehl tt:text gekennzeichnet werden.

Literaler Text ohne Kennzeichnung:

 

...>text<...

 

Literaler Text mit Kennzeichnung:

 

...><tt:text>text</tt:text><...

 

Die beiden Varianten unterscheiden sich dadurch, dass ein ungekennzeichneter Text text bei Serialisierung und Deserialisierung nicht berücksichtigt wird, wenn er nur Leerräume enthält. Ein gekennzeichneter Text wird immer berücksichtigt.

 

Serialisierung von literalem Text

Wenn ein literaler Text berücksichtigt wird, werden alle seine Zeichen in das Ziel-XML-Dokument geschrieben. Dazu gehören alle Leerräume. Bei einem nicht berücksichtigten Text wird nichts übertragen.

 

Deserialisierung von literalem Text

Der literale Text des XML-Ausgangsdokuments wird Zeichen für Zeichen (inklusive Leerzeichen und Zeilenumbrüchen) mit dem ST-Programm abgeglichen und konsumiert. D.h., an allen Stellen, an denen im Eingangsstrom literaler Text steht, muss genau der gleiche Text im ST-Programm aufgeführt sein und dort auch berücksichtigt werden.

 

Hinweis

Literale Texte mit anderen Zeichen außer Leerräumen sollten sparsam verwendet, immer mit tt:text gekennzeichnet und nicht zeilenübergreifend angelegt werden, da Zeilenumbrüche und Einrückungen Fehlerquellen bei der Deserialisierung darstellen. Ungekennzeichnete Texte sollten der Formatierung des ST-Programms mit Zeilenumbrüchen und Leerzeichen (Einrückungen) vorbehalten sein. Um Probleme bei der Deserialisierung von literalen Texten zu vermeiden, können diese mit tt:skip übersprungen werden

 

Beispiel.

Das folgende ST-Programm enthält vier Elemente X1 bis X4 mit literalem Text.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:template>

    <X0>
      <X1> a b c </X1>
      <X2><tt:text> d e f </tt:text></X2>
      <X3>     </X3>
      <X4><tt:text>     </tt:text></X4>

    </X0>
  </tt:template>

</tt:transform>

 

Das Ergebnis einer Serialisierung ist wie folgt, wobei die Leerzeichen in X3 nicht berücksichtigt werden:

 

<X0><X1> a b c </X1><X2> c d e </X2><X3/><X4>     </X4></X0>

 

Dieses XML-Dokument kann von obigem ST-Programm selbst wieder deserialisiert werden. Folgendes ST-Programm führt aber zur Ausnahme CX_ST_MATCH_ELEMENT, da für die Leerzeichen des Eingangsstroms innerhalb von X4 wegen der fehlenden Kennzeichnung mit tt:text keine Leerzeichen im ST-Programm vorhanden sind.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:template>

    <X0>
      <X1>a b c</X1>
      <X2><tt:text>d e f</tt:text></X2>
      <X3>     </X3>
      <X4>     </X4>

    </X0>
  </tt:template>

</tt:transform>

 

Auch folgendes ST-Programm kann das XML-Dokument nicht deserialisieren, da es in X1 Zeilenumbrüche und durch die Einrückung mehr Leerzeichen erwartet.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:template>
    <X0>
      <X1>
        a b c
      </X1>
      <X2><tt:text>d e f</tt:text></X2>
      <X3>     </X3>
      <X4>     </X4>
    </X0>
  </tt:template>

</tt:transform>

 

Folgendes ST-Programm kann das XML-Dokument deserialisieren, wobei alle Elemente mit tt:skip übersprungen werden.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:template>
    <X0>
      <X1><tt:skip /></X1>
      <X2><tt:skip /></X2>
      <X3><tt:skip /></X3>
      <X4><tt:skip /></X4>
    </X0>
  </tt:template>
</tt:transform>

 

 

 

 

Ende des Inhaltsbereichs