如何使用XSLT在XML中打印Section Symbol(§)?

时间:2018-06-04 06:29:12

标签: xml xslt stored-procedures

XML

<RevisionHistory>(R.S., D.C., § 1; June 11, 1878, 20 Stat. 102, ch. 180, § 1.)</RevisionHistory>

XSLT

<xsl:value-of select="RevisionHistory" disable-output-escaping="yes" />

输出:

§ = i want output this symbol
� = but wrong symbol shown

如何使用XSLT在XML中打印Section Symbol(§)?

2 个答案:

答案 0 :(得分:0)

需要XML文档(但不是必需的)在文档的开头使用XML声明,说明使用的编码:

<?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="iso-8858-1"?>

在没有XML声明的情况下,假定使用UTF-8或其他带外协议编码。

要排除编码问题的可能性(您的XML以非UTF-8编码存储但尚未通过XML声明公开其编码),您可以更改XML以使用&#167;部分标志的字符实体参考:

<RevisionHistory>(R.S., D.C., &#167; 1; June 11, 1878, 20 Stat. 102, ch. 180, &#167; 1.)</RevisionHistory>

答案 1 :(得分:0)

出现这种情况的原因有两种可能性。

(a)使用与XML解析器认为正在使用的编码不同的编码对输入文档中的字符进行编码。例如,也许字符在iso-8859-1中编码,但XML解析器认为它是用utf-8编码的。

(b)结果文档中的字符已正确编码,但您用于显示结果文档的软件并不了解该编码。

要研究这一点,您需要建立内部使用的二进制代码,以在输入和输出文档中表示此字符。要确定这一点,请使用十六进制编辑器等工具。

检查输入文件是否具有XML声明,以提供正确的编码。如果没有,这很可能是麻烦的根源。如果有,请检查它是否正确。

然后对输出文件执行相同的操作。

检查您使用的软件来显示输出文件。查看不同软件是否以不同方式显示字符。您可能需要更改显示软件的配置方式。如果显示软件是Web浏览器,您可能需要检查或更改HTTP标头对发送到浏览器的文档的字符编码的说法。

最后,摆脱那个disable-output-escaping属性。它只会增加额外的复杂性和可能的​​错误来源。