我使用xslt 2.0並使用copy-of來複制大多數XML。XSLT拷貝和字符8211
我有這樣的XML(這是有問題的部分):
<nitf>
<body>
<table class="4-col">
<tr><td>Sarpsborg – Høvik</td><td>6</td><td>-</td><td>8</td>
</tr>
</table>
</body>
</nitf>
這裏是XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:output indent="yes" media-type="text/xml" method="xml" encoding="ISO-8859-15" />
<xsl:template name="createBody">
<xsl:copy-of select="/nitf/body" />
</xsl:template>
輸出爲:
<nitf>
<body>
<table class="4-col">
<tr>
<td>Sarpsborg – Høvik</td>
<td>6</td>
<td>-</td>
<td>8</td>
</tr>
</table>
</body>
</nitf>
預期的輸出應該是:
<nitf>
<body>
<table class="4-col">
<tr>
<td>Sarpsborg – Høvik</td>
<td>6</td>
<td>-</td>
<td>8</td>
</tr>
</table>
</body>
</nitf>
解決方案
感謝Martin Honnen我能夠通過添加參考了一些撒克遜擴展以獲得正確的輸出。因爲我們有商業許可證,所以我可以使用這個擴展。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://saxon.sf.net/"
exclude-result-prefixes="xs"
version="2.0">
然後添加以下到了xsl: 可以通過添加撒克遜命名樣式表根節點添加它輸出元素:撒克遜:字符表示=「十進制」 你的輸出應再像這個(或至少我的是):
<xsl:output indent="yes" encoding="ISO-8859-15" saxon:character-representation="decimal" />
馬丁Honnen被鏈接到這個擴展在他的回答,所以請不要對如何推廣工作讀了。
這真是太棒了。它輕鬆解決了我的問題。 – Trond