我正在尝试解决一个问题,即使用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相同的映射。
由于我是新手,可能犯了错误。另外,我知道HTML5放宽了这些属性限制,但目前没有普及。这个库有缺陷吗?如果是,应该使用哪种映射来替换给定的映射?
ä
、ö
和ü
不是有效的ID字符(我不知道它们是否有效),而不是因为&
、#
和;
无效,对吧? - dave4420