标准Haskell库中的XHTML可能无效?

标准Haskell库中的XHTML可能无效?,html,haskell,xhtml,Html,Haskell,Xhtml,我试图解决一个程序的问题,该程序使用Haskell从UTF-8文本生成XHTML。该程序接受该文本的字符串,并应生成有效的XHTML实体,但不会。我正在导入Text.XHtml.Transitional,并使用href和identifier函数从UTF-8字符串生成URI和ID属性。使用Haskell解释器,我们可以看到: Prelude Text.XHtml.Transitional> href "äöü" href="äöü" 这

我试图解决一个程序的问题,该程序使用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库似乎有缺陷。此外,我认为即使是XHTML也是不好的,因为它没有在属性中提供来自UTF-8的1:1映射,也没有提供与URI使用的映射相同的映射

由于我是哈斯克尔的新手,我可能在某个地方犯了一个错误。另外,我知道HTML5放松了这些属性限制。但这并不是atm机的主流。图书馆有小车吗?如果是,应该用哪个映射替换给定的映射

另请参见

(参见
名称
制作),包括您的重音字母

请注意

i、 e.
&
可能不会出现在ID中,但在您的示例中,它们不会出现在ID中——ID是
äöü
。然后将其编码为
和#228öü,大概可以作为US-ASCII或ISO-8859-1输出


所以我认为这不是图书馆里的一个bug。

好的。我想给他们一个现成的解决方案。我可以使用什么1:1映射?已经有另一种语言的解决方案了吗?如果它无效,那可能是因为
ä
、ö`和
ü
作为ID字符无效(我不知道它们是否有效),而不是因为
&
#
确实无效?是的,我假设UTF-8作为ID无效。但是&,#;都是,因此正常的URI转义机制是不够的。