Stas: Blanks im HTML-output, die nach Silbentrennungaufheben entstehen

Hallo,
es gibt vermutlich schon ähnliche Themen, aber irgendwie habe ich keinen Erfolg gehabt mit der vorgeschlagenen Lösungen.
Die Situation ist folgende:
Im Retrodigitalisierungsprojekt werden die Zeilenumbrüche in <lb>-Elemente und Wörter mit Silbentrennungen so kodiert:

<w rend="Windwahr-sagerei">
                        Windwahr
                        <lb n="0136.079" />
                        sagerei
    </w>

Bei der Transformation in HTML, nach der Entfernung von <lb>Elemente entstehen dann:" Windwahr sagerei"

Hätte jemand eine Idee wie man die drin bleibende Blanks los werden könnte?

Ich hatte bis jetzt folgende Regel:

<xsl:template match="w">
            <xsl:value-of select="translate('.',' ','')"/>
            xsl:apply-templates/
    </xsl:template>

<xsl:template match="b:lb">
    </xsl:template>

Das scheint nichts zu nutzen...
Ähnlicherweise entsthen in HTML output Blanks vor Satzzeichen, die in <c> Elemente kodiert sind:

in XML:
in der Sprachlehre  <c type="$,">,</c> silbenmäßig zusammensetzen</hi> <c type="$,">,</c> <w rend="sil-benmäßig"> sil<lb n="0129.012"/>benmäßig</w> aussprechen <c type="$,">,</c>  die Silben deutlich hören lassen <c type="$.">.</c>

-->in HTML:
" in der Sprachlehre ,  silbenmäßig zusammensetzen  ,  silbenmäßig aussprechen  ,  die Silben deutlich hören lassen .  "
Hätte jemand eine Idee?
Danke im Voraus!

  1. Hallo Stas,

    Bei der Transformation in HTML, nach der Entfernung von <lb>Elemente entstehen dann:" Windwahr sagerei"

    Hätte jemand eine Idee wie man die drin bleibende Blanks los werden könnte?

    Verwende die Funktion normalize-space().

    Grüße,
    Thomas

    1. Hallo Thomas,
      vielen Dank für die Antwort!
      habe den Fehler gefunden, warum es gar nichts ging- falscher Namespace.:-)
      Jetzt ist die Lage so:

      nur   <xsl:value-of select="normalize-space()" />

      funktioniert nicht richtig , nicht mit Xalan, Saxon 6,55 oder Saxon 8B.
      Die Blanks bleiben. Auch translate funktioniert ähnlich.

      Aber die Kombination aus der beiden Funktionen- Bingo! (apply-templates nach der Funktion musste natürlich raus, sonst kommt das Ergebnis doppelt- einmal richtig ohne Blank und noch mal falsch mit blanks)

      <xsl:template match="b:w">
             <xsl:value-of select="(translate(normalize-space(.), ' ', ''))" />
         </xsl:template>

      <xsl:template match="b:lb">
          </xsl:template>

      So geht es richtig mit der Entfernung der Silbentrennungen.

      Das Problem mit Blanks vor Satzzeichen wie Komma, Punkt etc. und nach Klammern (alle kodiert in <c>-Elemente) bleibt weiter... Ist das überhaupt machbar mit XSLT?

      1. Hallo stas,

        Das Problem mit Blanks vor Satzzeichen wie Komma, Punkt etc. und nach Klammern (alle kodiert in <c>-Elemente) bleibt weiter... Ist das überhaupt machbar mit XSLT?

        Grundsätzlich sollte diese Vorbehandlung der Textknoten helfen:

        <xsl:template match="text()">  
          <xsl:value-of select="normalize-space(.)"/>  
        </xsl:template>
        

        Grüße,
        Thomas

        1. Hallo Thomas,
          Danke nochmal!
          ja, du hast Recht- das löst das Problem, aber viel zu gründlich- es lässt keine Blanks mehr an Elementengrenze, egal an welcher Position- vor oder nach Satzzeichen, und auch wenn keine Satzzeichen da sind:-))Ich will nur die Blanks entfernen, die gerade vor Satzzeichen(<c>-Elemente) stehen, und bei öffnenden Klammern- danach...So wie wir eben die Rechtschreibungsregel für Satzzeichen kennen. Es wird aber damit nicht unterschieden zwischen den ersten und letzten Blank an Elementengrenze...
          Habe die Regel jetzt allen sonstigen Regeln vorangestellt.
          Kann sie schwer auf einen bestimmten, dem <c> übergeordneten Textknoten zuschreiben,weil <c> ein Element ist, das überall, in fast jedem anderen Element auftauchen darf...
          Wahrscheinlich wird leichter das mit PHP script oder so zu erledigen...

          Hallo stas,

          Das Problem mit Blanks vor Satzzeichen wie Komma, Punkt etc. und nach Klammern (alle kodiert in <c>-Elemente) bleibt weiter... Ist das überhaupt machbar mit XSLT?

          Grundsätzlich sollte diese Vorbehandlung der Textknoten helfen:

          <xsl:template match="text()">

          <xsl:value-of select="normalize-space(.)"/>
          </xsl:template>

          
          >   
          > Grüße,  
          > Thomas