0

这个网页有一些关于我需要的字符的数据(大写 L,上面有点)。它大约在页面的一半处。

但我不知道如何把它变成 CDATA。例如,这就是我为 X 上的酒吧所做的事情。

<xsl:text disable-output-escaping="yes"><![CDATA[&#772;]]></xsl:text>

我会为 L 用一个点做什么 CDATA?

更新,这个 CDATA 模板是我的主要解决方案:

<xsl:text disable-output-escaping="yes">L<![CDATA[&#775;]]></xsl:text>

它在浏览器中测试得很好。

4

2 回答 2

2

您不需要引入 CDATA 部分 - 或通过禁用输出转义来解决它引入的问题。这是不必要的复杂。您输入的内容在解析为:

<xsl:text>L̇</xsl:text>

如果没有,那么您的堆栈中存在更深层次的 Unicode 问题,例如,没有以 UTF-8 提供输出(在这种情况下,您应该先解决该问题),或者使用不支持 Unicode 的文本编辑器(在这种情况下,您可以使用数字字符引用L&#775;,或者L&#x0307;如果您愿意)。

如果您看到点出现在一个意想不到的地方,那是您的浏览器/编辑器中的字体呈现问题,与 XML 无关。当您使用组合变音符号(例如长音符号 (U+0304, 772) 或上面的点 (U+0307, 775))来表示 X-macron 和 L-dot 等不常见的组合时,这些组合不会出现在任何现代语言中,您正在使用的字体确实不太可能具有该组合的良好预组合字形。

相反,你会得到两个形状的粗略叠加,它们是否完全对齐将是运气。最坏的情况是,字体根本没有组合字符的字形,在这种情况下,显示引擎通常会完全回退到不同的字体,这使得结果更不可能漂亮。

一般来说,常见的字体/网络浏览器在结合真实语言使用的常见变音符号方面并没有那么好。尝试将该功能用于任意组合最有可能导致混乱的 Z̛al͏go̵t̸e͝x҉t̷。

于 2013-02-03T01:38:37.763 回答
0

您根本不需要 CDATA。你可以只使用.

在此,CDATA 用于阻止字符引用被XSL 引擎转换为 a。也就是说,这&#772;是输出而不是.

不过没有任何必要,因为您可以在任何地方使用 raw 。

<xsl:text disable-output-escaping="yes">L̇</xsl:text>
于 2013-02-02T14:01:24.987 回答