【发布时间】:2013-09-13 19:39:52
【问题描述】:
上下文
我正在使用 Apache Batik 处理字体文件,并使用 ttf2svg command 将字体转换为 SVG 文件。然而,Batik XML 给出的输出对初始的 -Chinese- 字形进行编码。
当前 XML
<glyph unicode="豈" glyph-name="null" horiz-adv-x="256" d="…" />
目标 XML
<glyph unicode="豈" glyph-name="null" horiz-adv-x="256" d="…"/>
XSL 模板
<xsl:template match="svg:glyph" mode="from-block">
<xsl:copy-of select="." disable-output-escaping="yes" />
<xsl:apply-templates />
</xsl:template>
问题
如何将 XML 十六进制实体解码为 XSLT 1.0 中的对应字符?
【问题讨论】:
-
您能更好地解释需求的性质吗?是否有一些下游进程声称接受 XML 输入但不能处理数字字符引用?或者它只是一个装饰性要求:您希望您的 XML 使用 Unicode 字符,而不是对它们的数字引用?无论哪种情况,我都会编写一个简单的身份转换并指定输出编码应该是 UTF-8。 (但如果就这么简单,我想你不会问这个问题,因为解决方案是显而易见的。)
-
@C.M.Sperberg-McQueen 您如何指定 UTF-8 输出编码?
-
与
<xsl:output encoding="UTF-8"/>。目前还不清楚为什么你认为你需要在这里做任何事情。 Batik 生成的输出和您说想要的表单包含完全相同的信息,并且将由任何符合标准的 XML 解析器进行相同的处理。坚持特定的编码看起来有点像图腾主义。 -
我知道 XML 实体代表字符,但人类使用字符而不是实体要容易得多
-
是的。这是使用能够以扩展形式显示字符的 XML 感知编辑器的充分理由。
标签: xslt svg fonts hex xslt-1.0