【发布时间】:2011-11-23 03:13:46
【问题描述】:
我正在尝试解决使用 Haskell 从 UTF-8 文本生成 XHTML 的程序的问题。该程序接受该文本的字符串,并应生成有效的 XHTML 实体,但不会。我正在导入 Text.XHtml.Transitional,并使用函数 href 和 identifier 从 UTF-8 字符串生成 URI 和 ID 属性。使用 Haskell 解释器我们可以看到:
Prelude Text.XHtml.Transitional> href "äöü"
href="äöü"
这很好,是一个有效的 XHTML URI。然而,
Prelude Text.XHtml.Transitional> identifier "äöü"
id="äöü"
不是,根据规范,它不允许使用 '&'、'#' 和 ';'人物。 因此,Text.XHtml.Transitional 库似乎有问题。此外,我认为即使是 XHMTL 也很糟糕,因为它既没有在属性中提供 UTF-8 的 1:1 映射,也没有提供与用于 URI 的映射相同的映射。
由于我是 Haskell 的新手,我可能在某个地方犯了错误。另外,我知道 HTML5 放宽了这些属性限制。但这并不占主导地位。图书馆有问题吗?如果是这样,哪个映射应该替换给定的映射?
【问题讨论】:
-
好的。我想给他们一个现成的解决方案。我可以使用哪些 1:1 映射?是否已经有另一种语言的解决方案?
-
如果无效,那是因为
ä,ö`和ü作为ID字符无效(我不知道它们是否有效),而不是因为@ 987654326@、#和;肯定是无效的吗? -
是的,我假设 UTF-8 作为 ID 无效。但 &, #, ;也一样,所以普通的 URI 转义机制是不够的。