在XSLT输出中编码特殊字符

时间:2012-02-17 13:13:41

标签: unicode vbscript

我已经构建了一组脚本,其中一部分将XML文档从一个词汇表转换为另一个词汇表中的文档子集。

由于对我不透明,但显然不可协商的原因,目标平台(基于Java)要求输出文档在XML声明中包含'encoding =“UTF-8”',但是其中包含一些特殊字符文本节点必须使用其十六进制unicode值进行编码 - 例如'''必须替换为'”'等等。我无法获得一个必须编码哪些字符的确定列表,但它似乎并不像“所有非ASCII”那样简单。

目前,我有一个可怕的VBScript混乱使用ADODB在处理后直接检查输出文件的每一行,并在必要时替换字符。这是非常缓慢的,并且毫不奇怪,一些角色会被错过(并且因此被目标平台所摧毁)。

虽然我可以浪费时间“精炼”VBScript,但长期目标是完全摆脱它,并且我确信必须有更快更准确的方法来实现这一点,理想情况是在XSLT阶段本身。

有人能提出任何富有成效的调查途径吗?

(编辑:我不相信角色地图是答案 - 我以前看过它们,除非我弄错了,因为我的输入可以想象包含任何 unicode字符,我需要一张包含所有的地图,除了我不想编码的地图......)

2 个答案:

答案 0 :(得分:3)

<xsl:output encoding="us-ascii"/>

告诉序列化器必须生成与ASCII兼容的输出。这应该强制它为文本内容和属性值中的所有非ASCII字符生成字符引用。 (如果标签或属性名称等其他地方存在非ASCII,则序列化将失败。)

答案 1 :(得分:0)

使用XSLT 2.0,您已经标记了帖子,您可以使用字符映射,请参阅http://www.w3.org/TR/xslt20/#character-maps