1

我使用 Java 和Xalan 2.7将一个 XML 转换为另一个。

来源是StreamSource(UTF-8 Reader); 结果是StreamResult(ByteArrayOutputStream)

现在我的模板设置为使用UTF-8(注意版本 1.0):

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" 
            indent="yes" 
            omit-xml-declaration="yes"  
            encoding="UTF-8"/>

现在我希望输出对所有特殊字符进行编码。类似2.0字符映射的东西,因此€ = &#euro;或十六进制等效。

如何以最少的努力做到这一点?

4

2 回答 2

2

我假设“特殊”字符是指 ASCII 范围之外的任何内容。

如果您不希望在生成的 XML 中包含这些字符,则无需将 UTF-8 指定为编码,因为您的内容中不会直接包含任何非 ASCII 字符。

您可以简单地将 XSLT 样式表指定ASCII输出编码,以使 XSLT 处理器输出所有非 ASCII 字符的数字字符引用。

JDK 6 默认处理器和 Xalan 2.7 都支持这一点。

于 2011-03-29T08:07:58.943 回答
0

我曾经有过类似的需求,因为我需要通过 XSLT 处理不可打印的字符。我想出了使用 FilterInputStream/FilterOutputStream,它使用一个小的有限状态自动机来编组和解组这样的符号。希望这能给你一些想法:-)

于 2011-03-29T07:36:43.150 回答