Ich habe folgende Beispiel-XML-Datei:
und möchte ABC durch DEF und XYZ durch UVW ersetzen.
Folgender XSLT-Code:
bringt dieses Ergebnis:
Das heißt, der Taginhalt wird zweimal ersetzt und zweimal ausgegeben, einmal wird nur die erste Ersetzung durchgeführt, einmal nur die zweite...
Wie kann ich es am besten lösen, dass beide Ersetzungen durchgeführt und als ein Inhalt ausgegeben werden?
Eine Möglichkeit wäre, das Suchergebnis in eine Variable zu speichern und diese Variable für die nächste Suche zu verwenden:
So würde es auch gehen:
Ist aber beides nicht unbedingt schön, vor allem, wenn man bedenkt, dass ich in Wirklichkeit Dutzende Ersetzungen durchführen muss.
Kann mir jemand eine bessere Lösung vorschlagen? Oder ist es generell besser, solche Such-/Ersetz-Vorgänge nicht mit XSLT, sondern
vorher oder nachher mit anderen Werkzeugen zu erledigen?
Gruß, Peter
Code:
<text> Das ist der Text: ABC - beliebiger weiterer Text - XYZ </text>
Folgender XSLT-Code:
Code:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="text"> <text> <xsl:value-of select="replace(.,'ABC','DEF')"/> <xsl:value-of select="replace(.,'XYZ','UVW')"/> </text> </xsl:template> </xsl:stylesheet>
Code:
<text> Das ist der Text: DEF - beliebiger weiterer Text - XYZ Das ist der Text: ABC - beliebiger weiterer Text - UVW </text>
Wie kann ich es am besten lösen, dass beide Ersetzungen durchgeführt und als ein Inhalt ausgegeben werden?
Eine Möglichkeit wäre, das Suchergebnis in eine Variable zu speichern und diese Variable für die nächste Suche zu verwenden:
Code:
<xsl:template match="text"> <xsl:variable name="var1"> <xsl:value-of select="replace(.,'ABC','DEF')"/> </xsl:variable> <text> <xsl:value-of select="replace($var1,'XYZ','UVW')"/> </text> </xsl:template>
So würde es auch gehen:
Code:
<xsl:value-of select="replace(replace(.,'XYZ','UVW'),'ABC','DEF')"/>
Ist aber beides nicht unbedingt schön, vor allem, wenn man bedenkt, dass ich in Wirklichkeit Dutzende Ersetzungen durchführen muss.
Kann mir jemand eine bessere Lösung vorschlagen? Oder ist es generell besser, solche Such-/Ersetz-Vorgänge nicht mit XSLT, sondern
vorher oder nachher mit anderen Werkzeugen zu erledigen?
Gruß, Peter
Comment