1
我想從我的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:找不到函數:replace FatalError:javax.xml.transform.TransformerException:找不到函數標記。 FatalError:javax.xml.transform.TransformerException:java.lang.NullPointerException'因此我將其更改爲** xsl:sequence&of **添加了副本,因爲它根本沒有打印任何文本值。無論如何,我的壞。按照預期的方式在不同的工具中試用過您的代碼。謝謝。 :) –
'replace'只能在XSLT 2.0中使用,所以您嘗試的第一個工具可能只支持XSLT 1.0。 –
是的,從現在開始,我會在嘗試之前檢查所有這些細節。 –