Hi Thomas,
Delta empfielt hier schon vorher im Java die Leerzeichen rauszunehmen:
http://www.deltaxml.com/dxml/library/how-to-manage-white-space/version/live
Die bieten ja selbst sowohl ein XSLT (normalize-space.xsl) als auch ein JavaClass dazu (com.deltaxml.pipe.filters.NormalizeSpace). Funktionieren die denn nicht?
Ich kann sie aber erst mit dem Filter rausnehmen, da ich ohne Java arbeite.
Ich verstehe jetzt so nicht ganz, warum du es noch immer auf diese Weise versucht. Es sei denn dein XML ist wirklich unbrauchbar: d.h. du hast in der Tat "Â " da drinn stehen (auch in einem UTF fähigen Editor).
Ja, meine XML enthalten diese Zeichen anstelle der Leerzeichen (es gab vorher Formatierungsfehler beim Erstellen der XMLFiles, die nicht manuell behoben werden sollen, deswegen ja der Filter).
Überall im Text wo sie auftauchen sollen sie ersetzt werden, aber die restliche Struktur des XML's erhalten bleiben.
Dann kannst du das natürlich so ersetzen:
<xsl:when test=".//text()[contains(.,'Â ')]">
<xsl:value-of select="translate(.//text(), 'Â', '')"/>
Ich hab's so probiert:
<xsl:template match="*[xhtml:div]">
xsl:copy
<xsl:if test="//text()[contains(.,'Â ')]">
<xsl:value-of select="translate(., ' ', ' ')"/>
</xsl:if>
</xsl:copy>
</xsl:template>
das hat meinen Text zwar bearbeitet aber die restliche Struktur rausgehauen. Und wenn ich ein <xsl:copy-of select="@*" /> mit reinsetze bekomme ich den Text nochmal angezeigt, aber ohne Änderung.
Aber sonst einfach:
<xsl:value-of select="normalize-space(.//text())"/>
Habe ich probiert, hat aber nicht geklappt.
Gruß
Joy