<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.include.at/wikibati/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://www.include.at/wikibati/index.php?action=history&amp;feed=atom&amp;title=XSLT-Stylesheet</id>
		<title>XSLT-Stylesheet - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://www.include.at/wikibati/index.php?action=history&amp;feed=atom&amp;title=XSLT-Stylesheet"/>
		<link rel="alternate" type="text/html" href="https://www.include.at/wikibati/index.php?title=XSLT-Stylesheet&amp;action=history"/>
		<updated>2026-04-07T20:13:24Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in Wikibati</subtitle>
		<generator>MediaWiki 1.23.0</generator>

	<entry>
		<id>https://www.include.at/wikibati/index.php?title=XSLT-Stylesheet&amp;diff=1940&amp;oldid=prev</id>
		<title>N.raebiger: Die Seite wurde neu angelegt: „In diesem Abschnitt beschreibe ich die wichtigsten Befehle in einem XSLT-Stylesheet. Um sich selbst ein Stylesheet zu erstellen, ist es sinnvoll, die Struktur…“</title>
		<link rel="alternate" type="text/html" href="https://www.include.at/wikibati/index.php?title=XSLT-Stylesheet&amp;diff=1940&amp;oldid=prev"/>
				<updated>2016-09-06T13:53:38Z</updated>
		
		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „In diesem Abschnitt beschreibe ich die wichtigsten Befehle in einem XSLT-Stylesheet. Um sich selbst ein Stylesheet zu erstellen, ist es sinnvoll, die Struktur…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In diesem Abschnitt beschreibe ich die wichtigsten Befehle in einem XSLT-Stylesheet. Um sich selbst ein Stylesheet zu erstellen, ist es sinnvoll, die Struktur der [[Kiribati-XML-Export |XML-Datei aus Kiribati]] zu verstehen.&lt;br /&gt;
&lt;br /&gt;
== Grundgerüst des Stylesheets ==&lt;br /&gt;
Eingeleitet wird ein XSLT-Stylesheet durch&lt;br /&gt;
&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xsl:stylesheet&lt;br /&gt;
  xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
  version=&amp;quot;1.0&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; indent=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Version 2.0 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;xsl:stylesheet&lt;br /&gt;
  xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot;&lt;br /&gt;
  xmlns:fn=&amp;quot;http://www.w3.org/2005/xpath-functions&amp;quot;&lt;br /&gt;
  xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;br /&gt;
  version=&amp;quot;2.0&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;xsl:output method=&amp;quot;xml&amp;quot; version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot; indent=&amp;quot;yes&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht in der Versionsmitteilung &amp;lt;code&amp;gt;1.0&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;2.0&amp;lt;/code&amp;gt; und den aufgeführten Namensräumen (Namespaces xmlns:fn und xmlns:xs - diese werden von der Version 1.0 nicht zur Verfügung gestellt).&lt;br /&gt;
&lt;br /&gt;
Die &amp;lt;code&amp;gt;xsl:output&amp;lt;/code&amp;gt; Anweisung weist den Compiler an, eine neue XML-Datei zu erstellen.&lt;br /&gt;
&lt;br /&gt;
Als nächstes wird in beiden Versionen das Template erstellt. Dies geschieht durch:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
    &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Matchparameter gibt an, auf welches Element das Template bezogen wird &amp;lt;code&amp;gt;match=&amp;quot;/&amp;quot;&amp;lt;/code&amp;gt; gibt an, dass das Template für die gesamte Datei gilt.&lt;br /&gt;
&lt;br /&gt;
Abgeschlossen wird das Stylesheet noch durch das schließende Tag&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XSLT-Befehle ==&lt;br /&gt;
Eine XML-Datei zeichnet sich durch einen strukturierten Inhalt aus. Die Struktur wird mit sogenannten Tags dargestellt. XML selbst steht für Extensible Markup-Language, also eine erweiterbare Beschreibung der Struktur. Ein Tag besteht aus einem öffnenden und einem schließenden Element: &amp;lt;code&amp;gt;&amp;amp;lt;element&amp;amp;gt;INHALT&amp;amp;lt;/element&amp;amp;gt;&amp;lt;/code&amp;gt;. Ist der Inhalt leer, wird das öffnende Tag als &amp;lt;code&amp;gt;&amp;amp;lt;element /&amp;amp;gt;&amp;lt;/code&amp;gt; geschrieben. '''element''' ist ein freiwählbarer Text aus Buchstaben, Ziffern und dem Unterstrich.&lt;br /&gt;
&lt;br /&gt;
Auch ein XSLT-Stylesheet wird durch Tags beschrieben, die wie in einer XML-Datei aufgebaut sind. Den einzelnen Befehlen wird allerdings ein Namensraum vorangestellt: '''xsl:'''. Die hier beschriebenen Tags sind eine Auswahl, die für die Verarbeitung einer XML-Datei aus Kiribati zur Vorbereitung des Imports in InDesign hilfreich sein können. Weitere Tags und detailierte Beschreibungen können leicht über eine Suchmaschine gefunden werden (z. B. [http://www.w3schools.com/xsl]). Die Anweisungen zur Verarbeitung der XML-Datei werden zwischen &amp;lt;code&amp;gt;&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;...&amp;lt;/xsl:template&amp;gt;&amp;lt;/code&amp;gt; geschrieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Element erstellen ===&lt;br /&gt;
Möchte man ein neues Feld erstellen, teilt man dies dem Stylesheet durch das Tag &amp;lt;code&amp;gt;&amp;amp;lt;xsl:element name=&amp;quot;'''Bezeichnung'''&amp;quot;&amp;amp;gt;&amp;lt;/code&amp;gt; mit. Zwischen das öffnende und das schließende Tag wird dann der Inhalt gestellt. Der Inhalt kann entweder ein statischer Text sein, oder durch das Stylesheet berechnet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;lt;xsl:element name=&amp;quot;Bezeichnung&amp;quot;&amp;amp;gt;Statischer Text&amp;amp;lt;/xsl:element&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:element name=&amp;quot;veranstaltungen&amp;quot;&amp;gt;...&amp;lt;/xsl:element&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Damit wird ein umschließenden Tag um alle aufgeführten Veranstaltungen erstellt. Gleiches ist in der Ausgangsdatei zu finden. Dieses Tag wird als Root-Tag bezeichnet. In InDesign wird dieses Element dann in das Textfeld gezogen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mehrere gleiche Elemente behandeln ===&lt;br /&gt;
In der Ausgangsdatei sind die Daten der einzelnen Veranstaltungen jeweils zwischen &amp;lt;code&amp;gt;&amp;lt;veranstaltung&amp;gt;...&amp;lt;/veranstaltung&amp;gt;&amp;lt;/code&amp;gt; enthalten. Die einzelnen Veranstaltungen müssen nun auch einzeln behandelt werden. In einem XSLT-Stylesheet wird dies in einer '''fore-each'''-Schleife erledigt (für alle Elemente eines Pfades - in unserem Fall veranstaltungen/veranstaltung). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;xsl:fore-each select=&amp;quot;Pfad&amp;quot;&amp;gt;...&amp;lt;/xsl:fore-each&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:fore-each select&amp;quot;veranstaltungen/veranstaltung&amp;quot;&amp;gt;...&amp;lt;/xsl:fore-each&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Durch diese Anweisung wird die Schleife so oft durchlaufen, bis alle Veranstaltungen in der XML-Datei bearbeitet wurden.&lt;br /&gt;
'''Anmerkung''': Innerhalb der Schleife muss dann noch ein &amp;lt;code&amp;gt;&amp;lt;xsl:element name=&amp;quot;veranstaltung&amp;quot;&amp;gt;...&amp;lt;/xsl:element&amp;gt;&amp;lt;/code&amp;gt; aufgenommen werden, damit in der Ausgabedatei jede Veranstaltung auch wieder in einem eigenen Pfad enthalten ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Element aus der Ausgangsdatei kopieren ===&lt;br /&gt;
Möchte man ein Element komplett übernehmen, kann man dies ganz einfach durch die Anweisung &amp;lt;code&amp;gt;&amp;lt;xsl:copy-of select=&amp;quot;Bezeichnung&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; erledigen. Damit wird das Element inklusive der umschließenden Tags in die Ausgabedatei kopiert.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:copy-of select=&amp;quot;ver_titel1&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Kopiert das Feld &amp;lt;code&amp;gt;ver_titel1&amp;lt;/code&amp;gt; in die Ausgabedatei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nur den Wert eines Elements übernehmen ===&lt;br /&gt;
Im Gegensatz zu &amp;lt;code&amp;gt;copy-of&amp;lt;/code&amp;gt; kann man mit &amp;lt;code&amp;gt;value-of&amp;lt;/code&amp;gt; auf den Wert eines Elements zugreifen. Dadurch kann man z. B. mehrere Elemente zusammenfassen, den Wert in einer Variablen zwischenspeichern oder mit Funktionen (Version 2.0) bearbeiten. Der Wert wird ohne die umschließenden Tags übernommen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Bezeichnung&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:element name=&amp;quot;art_nummer&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ver_art&amp;quot; /&amp;gt; - &amp;lt;xsl:value-of select=&amp;quot;ver_nummer&amp;quot; /&amp;gt;&amp;lt;/xsl:element&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Durch diesen Anweisungsblock wird ein neues Element in der Ausgabedatei mit dem Namen &amp;lt;code&amp;gt;art_nummer&amp;lt;/code&amp;gt; erstellt. Die Werte der Felder &amp;lt;code&amp;gt;ver_art&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;ver_nummer&amp;lt;/code&amp;gt; werden ausgelesen und zwischen das neue umschließende Element geschrieben. Zwischen den beiden Werten wird ein Gedankenstrich platziert.&lt;br /&gt;
&lt;br /&gt;
=== Bedingte Ausführung von Anweisungen ===&lt;br /&gt;
Damit Elemente in der Ausgabedatei in Abhängigkeit von bestimmten Werten in der Ausgangsdatei erstellt werden, kann mit Bedingungen gearbeitet werden. XSLT kennt zwei unterschiedliche Anweisungen für eine bedingte Ausführung.&lt;br /&gt;
&lt;br /&gt;
==== einfache Bedingung ====&lt;br /&gt;
Die einfache Bedingung kennt nur einen Zweig, der ausgeführt wird, wenn ein Test positiv ist: &amp;lt;code&amp;gt;&amp;lt;xsl:if test=&amp;quot;'''Bedingung'''&amp;quot;&amp;gt;...&amp;lt;/xsl:if&amp;gt;&amp;lt;/code&amp;gt;. '''Bedingung''' steht dabei für einen logischen Ausdruck, z. B. einen Vergleich. Damit zwei Werte verglichen werden können, benötigt man unterschiedliche [http://www.w3schools.com/xsl/xpath_operators.asp Operatoren].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:if test=&amp;quot;ver_titel2 != &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;gt;&amp;lt;xsl:copy-of select=&amp;quot;ver_titel2&amp;quot; /&amp;gt;&amp;lt;/xsl:if&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Hier wird geprüft, ob &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; nicht leer ist. Wenn also ein Text enthalten ist, wir dieser in die Ausgabedatei kopiert.&lt;br /&gt;
&lt;br /&gt;
XSLT kennt keine &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;-Anweisung. Man kann dies aber durch eine Fallunterscheidung umgehen.&lt;br /&gt;
&lt;br /&gt;
==== Fallunterscheidungen - mehrere Bedingungen ====&lt;br /&gt;
Es ist auch möglich eine komplexere Fallunterscheidung aufzubauen, die dann zu verschiedenen Bedingungen jeweils andere Ergebnisse liefert. Anders als bei &amp;lt;code&amp;gt;&amp;lt;xsl:if&amp;gt;...&amp;lt;/xsl:if&amp;gt;&amp;lt;/code&amp;gt; gibt es bei der Fallunterscheidung die Möglichkeit einen Anweisungsblock aufzurufen, wenn keiner der vorangegangenen Fälle zutrifft. So lässt sich auch ein &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;-Block aufbauen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:when test=&amp;quot;Bedingung_1&amp;quot;&amp;gt;...&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:when test=&amp;quot;Bedingung_2&amp;quot;&amp;gt;...&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
		...&lt;br /&gt;
	&amp;lt;xsl:when test=&amp;quot;Bedingung_n&amp;quot;&amp;gt;...&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:otherwise&amp;gt;...&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mit &amp;lt;code&amp;gt;&amp;lt;xsl:choose&amp;gt;...&amp;lt;/xsl:choose&amp;gt;&amp;lt;/code&amp;gt; wird ein Block mit einer Fallunterscheidung aufgebaut. Die einzelnen Bedingungen werden mit &amp;lt;code&amp;gt;&amp;lt;xsl:when test=&amp;quot;Bedingung_x&amp;quot;&amp;gt;...&amp;lt;/xsl:when&amp;gt;&amp;lt;/code&amp;gt; aufgebaut. Trifft keine der Bedingungen zu, wird der Block &amp;lt;code&amp;gt;&amp;lt;xsl:otherwise&amp;gt;...&amp;lt;/xsl:otherwise&amp;gt;&amp;lt;/code&amp;gt; ausgeführt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:when test=&amp;quot;ver_titel2 != &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;gt;&amp;lt;xsl:copy-of select=&amp;quot;ver_titel2&amp;quot; /&amp;gt;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
	&amp;lt;xsl:when test=&amp;quot;ver_beschreibung_2&amp;quot; != &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt;&amp;quot;&amp;gt;&amp;lt;xsl:element name=&amp;quot;ver_titel2&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ver_beschreibung_2&amp;quot; /&amp;gt;&amp;lt;/xsl:element&amp;gt;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: Hier wird zunächst geprüft, ob &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; einen Wert enthält. Ist dies der Fall, wird eine Kopie von &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; erstellt. Falls &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; leer ist, wird die nächste Bedingung überprüft. Ist in dieser &amp;lt;code&amp;gt;ver_beschreibung_2&amp;lt;/code&amp;gt; nicht leer, wird ein Element mit dem Namen &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; erzeugt und der Wert aus &amp;lt;code&amp;gt;ver_beschreibung_2&amp;lt;/code&amp;gt; in das neue Element geschrieben. Sind beide Felder leer, erhält die Ausgabedatei für diese Veranstaltung auch keinen &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt;. Für InDesign ist dies wichtig, würde ein leerer &amp;lt;code&amp;gt;ver_titel2&amp;lt;/code&amp;gt; in der Ausgabedatei stehen, würde InDesign auch für ein leeres Feld einen Platzhalter einbauen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Arbeiten mit Variablen ===&lt;br /&gt;
Manchmal ist es sinnvoll Werte zwischenzuspeichern und diese dann an unterschiedlichen Stellen wieder aufzurufen. Mit &amp;lt;code&amp;gt;&amp;lt;xsl:variable name=&amp;quot;'''Bezeichner'''&amp;quot;&amp;gt;...&amp;lt;/xsl:variable&amp;gt;&amp;lt;/code&amp;gt; ist dies möglich. Der Name der Variablen wird mit '''Bezeichner''' festgelegt. Im Anweisungsblock zwischen den umschließenden Tags wird dann der Inhalt der Variablen aufgebaut.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:variable name=&amp;quot;tab&amp;quot;&amp;gt;&amp;lt;xsl:text&amp;gt;&amp;amp;#09;&amp;lt;/xsl:text&amp;gt;&amp;lt;/xsl:variable&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Damit wir eine Variable &amp;lt;code&amp;gt;tab&amp;lt;/code&amp;gt; angelegt. Der Inhalt ist ein Textelement, dessen Inhalt ein Tabulatorzeichen ist. Auf diese Variable kann dann mit &amp;lt;code&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$tab&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt; zugegriffen werden. Eine praktische Anwendung davon ist die Kombination mehrerer Felder in einem neuen Ausgabefeld. Die Inhalte der Eingabefelder wird dann durch ein Tabulator getrennt. In InDesign stellt man dann die Tabulatoren in den Absatzformaten entsprechend ein.&lt;br /&gt;
&lt;br /&gt;
=== Funktionen zur Verarbeitung von Feldern (Version 2.0) ===&lt;br /&gt;
Möchte man die Inhalte von Feldern noch weiter verändern, benötigt man einen Compiler, der die Version 2.0 von XSLT unterstützt. Hier sind nur wenige Funktionen beschrieben, mit denen man den Text verändern kann. Eine detailierte Beschreibungen der Funktionen findet sich unter http://www.xsltfunctions.com/.&lt;br /&gt;
&lt;br /&gt;
==== fn:replace(''string'', ''pattern'', ''replace'') ====&lt;br /&gt;
Mit dieser Funktion kann der Inhalt eines Feldes verändert werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
; &amp;lt;code&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;fn:replace(fn:replace(ver_geb_betrag, '\.', ','), ',00', '')&amp;quot; /&amp;gt;&amp;lt;/xsl:element&amp;gt;&amp;lt;xsl:text&amp;gt; Euro&amp;lt;/xsl:text&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Mit diesem Ausdruck werden im Feld &amp;lt;code&amp;gt;ver_geb_betrag&amp;lt;/code&amp;gt; Punkte durch Kommas ersetzt und Nachkommastellen gelöscht, wenn sie &amp;lt;code&amp;gt;,00&amp;lt;/code&amp;gt; sind. Und hinten wird noch ''Euro'' angehängt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;xsl:variable name=&amp;quot;termine&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ver_termine&amp;quot;/&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
&amp;lt;xsl:variable name=&amp;quot;newline&amp;quot;&amp;gt;&amp;lt;xsl:text&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:text&amp;gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
&amp;lt;xsl:variable name=&amp;quot;delimiter&amp;quot;&amp;gt;[&amp;lt;xsl:value-of select=&amp;quot;ver_delimiter&amp;quot;/&amp;gt;]&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;
&amp;lt;xsl:element name=&amp;quot;termine&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;fn:replace(fn:replace($termine, $delimiter, $newline), ' von', ',')&amp;quot;/&amp;gt;&amp;lt;/xsl:element&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
: In der Variablen &amp;lt;code&amp;gt;termine&amp;lt;/code&amp;gt; wird der Wert aus &amp;lt;code&amp;gt;ver_termine&amp;lt;/code&amp;gt; zwischengespeichert. Die Variable &amp;lt;code&amp;gt;newline&amp;lt;/code&amp;gt; erhält ein Textelment, dessen Inhalt ein Zeilenumbruch ist. Das Trennzeichen aus Kiribati wird in der Variablen &amp;lt;code&amp;gt;delimiter&amp;lt;/code&amp;gt; gespeichert. Die Zeichen &amp;lt;code&amp;gt;[...]&amp;lt;/code&amp;gt; sind notwendig, da das Trennzeichen in Kiribati der senkrechte Strich '|' ist. In XSLT bezeichnet dieser jedoch eine Schnittmenge. Würde man die Klammern nicht setzen, bricht der Compiler mit einer Fehlermeldung ab. Anschließend werden die Trennzeichen durch das Zeichen ''neue Zeile'' mithilfe von &amp;lt;code&amp;gt;fn:replace($termine, $delimiter, $newline)&amp;lt;/code&amp;gt; ersetzt. Außerdem wird, ebenfalls mit einer &amp;lt;code&amp;gt;fn:replace&amp;lt;/code&amp;gt;-Anweisung, ''von'' durch ein Komma ersetzt.&lt;br /&gt;
&lt;br /&gt;
== XML-Daten filtern und aufbereiten ==&lt;br /&gt;
=== Version 1.0 ===&lt;br /&gt;
==== XML-Datei und Stylesheet Version 1.0 direkt in InDesign importieren ====&lt;br /&gt;
==== XML-Datei mit einem Compiler bearbeiten ====&lt;br /&gt;
&lt;br /&gt;
=== Stylesheet Version 2.0 mit Saxon kompilieren ===&lt;br /&gt;
&lt;br /&gt;
== Weiterführende Links ==&lt;br /&gt;
* Einführung in XSLT http://www.w3schools.com/xsl/&lt;br /&gt;
* XSLT-Funktionen http://www.xsltfunctions.com/ (Version 2.0)&lt;br /&gt;
* [https://www.data2type.de/xml-xslt-xslfo/xslt/ XSLT-Referenz]&lt;br /&gt;
* [https://www.data2type.de/xml-xslt-xslfo/xpath/ XPath-Einführung]&lt;br /&gt;
* [https://www.data2type.de/en/xml-xslt-xslfo/xslt/xslt-xpath-function-reference/ XSLT- und XPath Funktionsreferenz]&lt;br /&gt;
* Saxon&lt;br /&gt;
* XML-Editor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* http://www.java2s.com/Tutorial/XML/0100__XSLT-stylesheet/countTakesanodesetargumentandreturnsavalueequaltothenumberofnodesinthenodeset.htm&lt;br /&gt;
* http://www.fh-wedel.de/~si/seminare/ss01/Ausarbeitung/5.xslt/xslt6.htm&lt;br /&gt;
* http://www.w3schools.com/xsl/el_preserve-space.asp&lt;br /&gt;
* http://www.w3schools.com/xsl/xsl_w3celementref.asp&lt;br /&gt;
* http://www.w3schools.com/xsl/el_decimal-format.asp&lt;br /&gt;
* *http://www.w3schools.com/xsl/el_text.asp&lt;/div&gt;</summary>
		<author><name>N.raebiger</name></author>	</entry>

	</feed>