Hallo,
ich möchte gerne ein XSLT für ein XML schreiben, welches in den Textknoten des XML Files überprüft, ob Buchstaben und Zahlen verwendet wurden. Wenn keine Buchstaben oder Zahlen enthalten sind (aber Leerzeichen, Zeilenumbrüche oder Tabulatoren), sollen diese Knoten dann gelöscht werden.
Mit einfachen
<xsl:when test="text()[contains(.,a-z) or contains(., 0-9)]"/>
war es nicht möglich.Brauche ich dafür regular Expressions von EXSLT und wenn ja, wie gehe ich dann weiter vor?
Nein, du brauchst nicht unbedingt EXSLT. Wenn du XSLT 2.0 verwenden kannst, kannst du mit dem "boardmittel" vom XSLT 2 die aufgabe lösen (auch mit Reg.Exp).
Kannst du keinen XSLT 2.0 verwenden und willst du die EXSLT-Erweiterungen nützen, ist die erste Frage ob dein XSLT-Prozessor diese unterstützt (darauf gibt die antwort die jeweilige Seite (der gewünschten Funktion) bei exslt.org).
Ünterstützt dein Prozessor die gewünschte Erweiterung, findest du auf der Seite (bei exslt.org) dazu passende Beispiel XSLTs.
Ansonsten kannst du es mit einem anderen "Trick" versuchen:
<xsl:when test="string-length(translate(normalize-space(text()), ' ', '')) = 0"></xsl:when>
Grüße
Thomas