Hallo,
des Rätsels Lösung: text() reagierts auch auf Absatzmarken und Tabulatoren. (zumindest bei sablotron)
Also sowohl mit
<xsl:if test="child::text()"> als auch
<xsl:if test="./node()[1]=text()">
<person><name>Brunner</name><vorname>Paul</vorname></person>
geht
<person>
<name>Brunner</name>
<vorname>Paul</vorname>
</person>geht nicht!
Ja, richtig, das wird es sein
Hast Du es schonmal mit dem Top-Level-Element xsl:strip-space versucht? Es hat ein Attribut namens "element", das eine durch Leerzeichen getrennte Liste der Elementnamen aufnimmt, bei denen die Whitespace-Knoten entfernt werden sollen.
<xsl:strip-space name="person"> könnte Dir also helfen. Vielleicht geht auch <xsl:strip-space name="*"> für alle Elemente. Das wäre die einfachste Lösung. Kann es hier gerade nicht ausprobieren.
Folgefrage:
Wie codiere ich bei translate() Sonderzeichen?
Hm, mit Zeichenreferenzen und Unicode-Nummer. Also für Whitespace:
tab #x9
newline #xA
Carriage Return #xD
space #x20
Gruß
Franz
Gruß
Paul