我正在尝试解决使用来自UTF-8文本的Haskell生成XHTML的程序的问题.该程序采用该文本的字符串,应该生成有效的XHTML实体但不生成.我正在导入Text.XHtml.Transitional,并使用函数href和identifier从UTF-8字符串生成URI和ID属性.使用Haskell解释器,我们可以看到:
Prelude Text.XHtml.Transitional> href "äöü"
href="äöü"
Run Code Online (Sandbox Code Playgroud)
这很好,是一个有效的XHTML URI.然而,
Prelude Text.XHtml.Transitional> identifier "äöü"
id="äöü"
Run Code Online (Sandbox Code Playgroud)
不是,根据不允许'&','#'和';'的规范 字符.因此,看起来Text.XHtml.Transitional lib是错误的.此外,我认为即使XHMTL也不好,因为它不会在属性中提供UTF-8的1:1映射,也不会与URI的映射相同.
由于我是Haskell的新手,我可能在某处犯了一个错误.另外,我知道HTML5放宽了这些属性限制.但那并不是主导性的.图书馆有车吗?如果是这样,哪个映射应该替换给定的映射?