XML Ausgabe ohne <
ker
- xsl
1 Tim Tepaße0 Ker
Hallo,
habe mal ne Frage:Wie kann ich in der XML Ausgabe die Zeichen < durch < und > durch > ersetzen?
Mein Stylesheet arbeitet mit einer Java-Funktion, die mir verschiedene Daten aus einer Datenbank ermittelt. Diese Daten sind in einer Liste und jedes Element dieser Liste soll in einen XML-Tag eingebettet sein.
Beispiel:
<!-- Abfrage -->
<xsl:variable name="test1" select="my-finder:getvorname("Müller")"/>
<!-- Liste in Java -->
[Max,Franz,Elli]
<!-- in XML -->
<Vorname>Max</Vorname>
<Vorname>Franz</Vorname>
<Vorname>Elli</Vorname>
Die Funktion wird wie folgt in das Styesheet integriert:
<Person>
<Name>Müller</Name>
<xsl:value-of select="$test1"/>
</Person>
Nun habe ich aber das Problem, das mir nicht <Vorname> sondern <Vorname> ausgegeben wird. Da die Ausgabe aber wiederum weiterverarbeitet werden soll, müssen die Zeichen < in < und > in > dargestellt sein.
Wie bekomme ich das hin das die Zeichen < und > ausgegeben werden, oder kann ich die Liste [Max,Franz,Elli] mit einer Schleife (xsl:for) bearbeiten und in die benötigte Form bringen?
Den rekursiven Templateansatz habe ich auch schon versucht, funktioniert aber in diesem Zusammenhang nicht.
Vielen Dank im voraus!
Hallo Ker,
<xsl:variable name="test1" select="my-finder:getvorname("Müller")"/>
<xsl:value-of select="$test1"/>
Erste ungetestete† Idee:
<xsl:value-of select="$test1" disable-output-escaping="yes"/>
Zweite ungetestete† Idee:
xsl:value-of/ ist explizit dafür da, Text in ein Dokument auszugegen, wenn es XML-Elemente (eine Knotenmenge) kriegt, werden diese implizit zu Text umgewandelt. Besser wär es wohl, direkt die Elemente mit xsl:copy-of/ in das Resultatdokument zu kopieren, anstatt einen Umweg über Text zu gehen. Da wäre disable-output-escaping auch nicht mehr notwendig. Die Voraussetzung wäre natürlich, dass my-finder:getvorname() auch eine Knotenmenge zurück gibt und keinen String. Das läge dann aber im der Verantwortung der Kaffeebohne.
Tim
Hallo Tim,
Super, die erste Idee funktioniert!
Vielen Dank!