Hallo,
was ist der effizienteste Weg, alle deutschen Sonderzeichen in einer Zeichenkette zu ersetzen?
Also so:
ä -> ae
ö -> oe
ü -> ue
u. s. w.
Mit der replace-Funktion ist das offenbar möglich, aber die beiden Lösungen, die mir damit einfallen, sind unschön:
Variante 1: Verschachtelte Aufrufe von replace().
replace(replace(replace(.,ü,ue)),'ö',oe),'ä',ae)
Das ist schon so kaum lesbar, und es fehlen ja noch ß und die Großbuchstaben. Da ist mir dann Variante 2 eingefallen.
Variante 2: Einsatz von Variablen
<xsl:variable name="orig" select="."></xsl:variable>
<xsl:variable name="orig_zwischen" select="replace(replace(replace(replace({$orig_zwi schen},'ß','ss'),'ü','ue'),'ö','oe'),'ä','ae')"/>
<xsl:variable name="ergebnis" select="replace(replace(replace({$ergebnis},'Ü','U e'),'Ö','Oe'),'Ä','Ae')"/>
Da muss sich doch was Bessers finden lassen...?
Vielen Dank für alle Vorschläge!
Alex
Hier noch ein paar Infos zum Hintergrund: Ich habe ein Problem mit Dateinamen unter Windows. Ein Skript (.bat) ruft mehrfach Saxon auf, um XSL-T-Stylesheets auf XML-Dokumente anzuwenden. Dabei werden neue Dateien für nachfolgende Verarbeitungsschritte angelegt.
Problem: Die erzeugten Dateien können (abhängig vom Inhalt des verarbeiteten XML-Dokuments) Namen mit deutschen Sonderzeichen haben.
Für Saxon und XSL-T ist das offenbar kein Problem, leider aber für das Batch-Skript: Es liefert mir bei allen Dateinamen mit Sonderzeichen die Fehlermeldung "Datei nicht gefunden".
was ist der effizienteste Weg, alle deutschen Sonderzeichen in einer Zeichenkette zu ersetzen?
Also so:
ä -> ae
ö -> oe
ü -> ue
u. s. w.
Mit der replace-Funktion ist das offenbar möglich, aber die beiden Lösungen, die mir damit einfallen, sind unschön:
Variante 1: Verschachtelte Aufrufe von replace().
replace(replace(replace(.,ü,ue)),'ö',oe),'ä',ae)
Das ist schon so kaum lesbar, und es fehlen ja noch ß und die Großbuchstaben. Da ist mir dann Variante 2 eingefallen.
Variante 2: Einsatz von Variablen
<xsl:variable name="orig" select="."></xsl:variable>
<xsl:variable name="orig_zwischen" select="replace(replace(replace(replace({$orig_zwi schen},'ß','ss'),'ü','ue'),'ö','oe'),'ä','ae')"/>
<xsl:variable name="ergebnis" select="replace(replace(replace({$ergebnis},'Ü','U e'),'Ö','Oe'),'Ä','Ae')"/>
Da muss sich doch was Bessers finden lassen...?
Vielen Dank für alle Vorschläge!
Alex
Hier noch ein paar Infos zum Hintergrund: Ich habe ein Problem mit Dateinamen unter Windows. Ein Skript (.bat) ruft mehrfach Saxon auf, um XSL-T-Stylesheets auf XML-Dokumente anzuwenden. Dabei werden neue Dateien für nachfolgende Verarbeitungsschritte angelegt.
Problem: Die erzeugten Dateien können (abhängig vom Inhalt des verarbeiteten XML-Dokuments) Namen mit deutschen Sonderzeichen haben.
Für Saxon und XSL-T ist das offenbar kein Problem, leider aber für das Batch-Skript: Es liefert mir bei allen Dateinamen mit Sonderzeichen die Fehlermeldung "Datei nicht gefunden".