Ich möchte zusätzliche Leerzeichen aus Textwerten meines XML zuschneiden. Ich habe verschiedene Optionen über das Internet ausprobiert, aber keiner von ihnen hat für mich funktioniert. kann ich nicht normalize-space() verwenden, weil ich nur führenden & nachfolgenden Leerzeichen entfernen muss.XSLT, um Leerzeichen aus Textknoten zu entfernen
XML:
<BillEvent>
<TransactionInfo>
<EventDate> 2016-04-13T05:40:28 </EventDate>
</TransactionInfo>
<CaseID> Since this is a CDATA section! </CaseID>
<BillGroup>
<Bill>
<BillNumber> 253545666847</BillNumber>
<ToDate> 2016-05-31 </ToDate>
<BillActivityCode tc="1"/>
<BillCreationDate> Since this is a CDATA section! </BillCreationDate>
</Bill>
</BillGroup>
</BillEvent>
Erwartete Ausgabe:
<BillEvent>
<TransactionInfo>
<EventDate>2016-04-13T05:40:28</EventDate>
</TransactionInfo>
<CaseID>Since this is a CDATA section!</CaseID>
<BillGroup>
<Bill>
<BillNumber>253545666847</BillNumber>
<ToDate>2016-05-31</ToDate>
<BillActivityCode tc="1"/>
<BillCreationDate>Since this is a CDATA section!</BillCreationDate>
</Bill>
</BillGroup>
</BillEvent>
das heißt nur führende & Leerzeichen entfernt werden sollte.
XSLT verwendet:
<xsl:stylesheet version ="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method ="xml" indent = "yes" cdata-section-elements="BillCreationDate"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:copy>
<xsl:sequence-of select="replace(., '^\s+|\s+$', '')"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Ich habe auch versucht translate(.,' 	

', '')
& replace(.,'^ +','')
. Ich bin nicht sicher, was mit meinem Code falsch ist, wegen dem keiner von ihnen arbeitete. Ich würde jede Hilfe zu diesem Thema schätzen.
Vielen Dank für Ihre Antwort. Eigentlich habe ich das auf einem online verfügbaren Tool versucht, das einen Fehler ausgelöst hat - 'nicht gültig. FatalError: javax.xml.transform.TransformerException: Funktion konnte nicht gefunden werden: replace FatalError: javax.xml.transform.TransformerException: Funktions-Token nicht gefunden. FatalError: javax.xml.transform.TransformerException: java.lang.NullPointerException' also änderte ich es in ** xsl: sequence-of ** & Ich fügte eine Kopie hinzu, weil überhaupt kein Textwert gedruckt wurde. Wie auch immer, mein Schlechter. Versuchte den Code in einem anderen Tool, in dem es wie erwartet funktionierte. Vielen Dank. :) –
'Ersetzen' funktioniert nur in XSLT 2.0, also hat das erste von Ihnen getestete Tool wahrscheinlich nur XSLT 1.0 unterstützt. –
Ja, vielleicht werde ich von jetzt an alle diese Details überprüfen, bevor ich es versuche. –