2
問題:我們有字符實體以各種格式來到我們的系統(例如:&
和&
),我們需要將它們轉換爲標準XML字符實體(& < > ' "
),然後通過幾次單獨的轉化將它們作爲實體來維護。通過多次轉換替換和維護字符實體
鑑於XML:
<rootelm>
<testdata>&apos; &gt; &lt; &quot;</testdata>
</rootelm>
和樣式表(基於xsl:character-map to replace special characters):
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- COPY EVERYTHING -->
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="@* | node()">
<xsl:sort select="local-name()"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:variable name="quote">
<xsl:text>&quot;</xsl:text>
</xsl:variable>
<xsl:variable name="quote2">
<xsl:value-of select="string('"')"/>
</xsl:variable>
<xsl:template match="text()[contains(.,'&lt;') or contains(.,'&gt;') or contains(.,'&quot;') or contains(.,'&apos;')]">
<xsl:value-of select='replace(
replace(
replace(
replace(., "&lt;", "<"),
"&gt;",
">"
),
"&apos;",
"'"
),
$quote,
$quote2
)
' />
</xsl:template>
</xsl:stylesheet>
我怎能撇號的和報價爲實體(源系統期望/需要的話) ?
電流輸出:
<rootelm>
<testdata>' > < "</testdata>
</rootelm>
謝謝,就是這麼做的。 – johkar 2010-11-16 14:02:20
@johkar:你很好。 – 2010-11-16 14:09:11