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!
Folgefrage:
Wie codiere ich bei translate() Sonderzeichen?
Gruß
Paul