Hallo,
Nein, den Tool kenne ich nicht.
Meinst du die pre-Filters? http://www.deltaxml.com/dxml/library/guide-to-using-filters.html#dsy98_2-2Ja genau die meine ich. Ich möchte gerne vor dem Vergleich falsche Leerzeichen (Â bzw.  ) aus den XML Files rauslöschen und richtige Leerzeichen einsetzen (also ersetzen), damit DeltaXML Wort für Wort vergleicht.
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?
Vielleicht ist aber schon mein Aufruf zum ersetzen der Leerzeichen falsch.
Ja ist er.
[contains(.,'Â ')]
Das "Â " ist die Darstellung des UTF-8 Zeichen in ANSI (z.B: ISO-8859-1). Sprich du würdest nur dann ein "Â " in deinem XML haben, wenn das XML durch irgendeinen Vorgang vom UTF-8 zu ANSI "dekodiert" (z.B. einfach im "falschen" Format abgespeichert) worden wäre.
Jedanfalls, wenn du "Â " und Konserten in deinem XML siehst, ist entweder dein Editor voll daneben (spich keine Unterstützung für UTF8), oder das XML ist unbrauchbar.
<xsl:template match="xhtml:div">
xsl:copy
<xsl:copy-of select="."/>
xsl:choose
<xsl:when test="//text()[contains(.,'Â ')]">
Du überprüfst den gesamten Text des Dokuments?
<xsl:value-of select="translate(., ' ', ' ')"/>
</xsl:when>
xsl:otherwise<!--xsl:apply-templates /--></xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
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).
Dann kannst du das natürlich so ersetzen:
<xsl:when test=".//text()[contains(.,'Â ')]">
<xsl:value-of select="translate(.//text(), 'Â', '')"/>
Aber sonst einfach:
<xsl:value-of select="normalize-space(.//text())"/>
Grüße
Thomas