Я хочу обрезать дополнительные пробелы из текстовых значений моего XML. Я пробовал различные варианты через Интернет, но никто из них не работал на меня. Я не могу использовать normalize-space(), потому что мне нужно удалить только ведущие & трейлинг-пространства.XSLT для удаления пробелов из текстовых узлов
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>
Ожидаемые результаты:
<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>
т.е. только ведущие & конечные пробелы должны быть удалены.
XSLT используется:
<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>
Я также попытался translate(.,' 	

', '')
& replace(.,'^ +','')
. Я не уверен, что не так с моим кодом, из-за которого никто из них не работал. Буду признателен за любую помощь по этому вопросу.
Большое спасибо за ваш ответ. На самом деле я пытался это сделать на инструменте, доступном в Интернете, который выдавал ошибку - 'Недействительно. FatalError: javax.xml.transform.TransformerException: Не удалось найти функцию: заменить FatalError: javax.xml.transform.TransformerException: токен функции не найден. FatalError: javax.xml.transform.TransformerException: java.lang.NullPointerException', поэтому я изменил его на ** xsl: sequence-of ** & Я добавил копию, потому что она не печатала никакого текстового значения вообще. В любом случае, мое плохое. Попробовал свой код в другом инструменте, где он работал, как ожидалось. Благодарю. :) –
'replace' работает только в XSLT 2.0, поэтому первый инструмент, который вы пробовали, вероятно, поддерживал только XSLT 1.0. –
Да, может быть, с этого момента я проверю все эти детали, прежде чем пытаться. –