Thomas J.S.: XSLT / XPath / my:translate()

Beitrag lesen

Hallo Tim,

Mit XSLT 2.0 ist es auch nicht so einfach. Falls du mit replace() nicht klar kommst.

Ich versuch's mal. Disclaimer: Ich hab keine Ahnung von XSLT 2 und probiert einfach nur mal meine Lösungsvorstellung mit bestehenden Elementen zu realisieren:

Funktioniert in Saxon. Etwas umständlich, ja, insbesondere das Tokenisieren und Zusammenfriemeln, aber mir macht es mehr Spaß als Deine Lösung, Thomas. ;)

Ja, sie ist eine schöne Lösung!
Ich habe ja von meiner auch nicht gesagt, dass sie schön sei (das war damals wirklich etwa '1 min quick&dirty hack' aus schon fertigen Conde-Teilen und ich hatte sie hier noch herumliegen) ;-)

(Und ausserdem war ich vorhin nur hier gelandet um kundzutun, dass man sicherlicher im Notfall eine sehr quicke und sehr dirrrrty Lösung mit xsl:character-map/ machen könnte, vorausgesetzt das Ziel-Markup käme einem nicht in die Quere. Aber nicht sehr empfehlenswert.)

So qick and ditry wäre das überhaupt nicht:
------

  
<?xml version="1.0"?>  
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
 <xsl:output encoding="UTF-8" indent="yes" method="xml" use-character-maps="sonderzeichen"/>  
 <xsl:param name="text"> Diés ist ein Töxt mit Ümläuten und scharfem Eß. Öder ätwa nücht? </xsl:param>  
 <xsl:template match="/">  
  <test>  
   <xsl:value-of select="$text"></xsl:value-of>  
  </test>  
 </xsl:template>  
 <xsl:character-map name="sonderzeichen">  
  <xsl:output-character character="ö" string="oe"/>  
  <xsl:output-character character="Ö" string="Oe"/>  
  <xsl:output-character character="ä" string="ae"/>  
  <xsl:output-character character="Ä" string="Ae"/>  
  <xsl:output-character character="ü" string="ue"/>  
  <xsl:output-character character="Ü" string="Ue"/>  
  <xsl:output-character character="ß" string="ss"/>  
  <xsl:output-character character="é" string="e"/>  
 </xsl:character-map>  
</xsl:stylesheet>  

aber, hätte den Nachteil, dass so die Ersetzung überall im Dokument stattfindet, was ja nicht unbedingt gewünscht ist (z.b. man braucht die Ersetzung nur bei der generierung von Dateinamen, nicht aber dann in der generierten Datei selbst.)

Grüße
Thomas