XSLT: Entferne überschüssige Whitespace-Zeichen, wobei die Knoten @ erhalten bleibe

Also mein Problem ist das. Ich habe ein Transformationsdokument, das an vielen Stellen verwendet wird und im Allgemeinen viele kleine Formatierungstransformationen verarbeitet. In einem bestimmten Fall muss ich Leerzeichen aus dem Ergebnis entfernen. Die Ausgabe sieht ungefähr so aus:

'\ n <I> Etwas </ I>, das mit einem hochgestellten Vermerk <SUP> 1 </ SUP> von großer Bedeutung ist \ n'

Ich habe versucht Variationen über:

<xsl:template match="no_whitespace">
    <xsl:variable name="result">
        <xsl:apply-templates/>
    </xsl:variable>
    <xsl:copy-of select="normalize-space($result)"/>
</xsl:template>

, aber die Unterknoten werden von der Ausgabe entfernt. Ich muss sehr vorsichtig sein, um keine universellen Vorlagen wie 'text ()' einzurichten, da dies die allgemeine Verarbeitung der Transformation beeinträchtigt. Anscheinend fehlt mir hier etwas Offensichtliches.

EDIT: Es wurde versucht, eine Identitätstransformation zu schreiben, wie von Stefan-Hegny vorgeschlagen.

<xsl:template match="title_full">
    <xsl:apply-templates mode="stripwhitespace"/>
</xsl:template>

<xsl:template match="text()" mode="stripwhitespace">
    <xsl:value-of select="normalize-space(translate(., '\n', ''))"/>
</xsl:template>

<xsl:template match="/ | @* | *" mode="stripwhitespace">
    <xsl:apply-templates select="."/>
</xsl:template>

Dies löste mein Problem, das darin bestand, Leerzeichen und Zeilenumbrüche auf der höchsten Ebene des Tags zu entfernen und dann zuzulassen, dass Transformationen normal ablaufen. Entschuldigung für die trübe Frage und vielen Dank für Ihre Hilfe.

EDIT the second: Die Verwendung von 'translate' funktioniert nicht wie erwartet, sondern zeichenweise. Ich habe eine Transformation verwendet, die stattdessen Teilzeichenfolgen ersetzt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage