私の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しかサポートしていませんでした。 –
ええ、これからは、試してみる前に、これらのすべての詳細をチェックします。 –