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

时间:2011-11-19 08:36:26

标签: html5 haskell xhtml

我正在尝试解决使用UTF-8文本的Haskell生成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 lib是错误的。此外,我认为即使是XHMTL也不好,因为它不会在属性中提供UTF-8的1:1映射,也不会与URI的映射相同。

由于我是Haskell的新手,我可能在某个地方犯了错误。另外,我知道HTML5放宽了这些属性限制。但那并不是主导性的。图书馆有车吗?如果是这样,哪个映射应该替换给定的映射?

另见Xhtml Invalid Characters?

1 个答案:

答案 0 :(得分:7)

Plenty of non-ascii unicode characters are valid in IDs(请参阅Name制作),包括您的重音字母。

请注意the production applies after normalisation

即。 &#;可能不会出现在ID中,但在您的示例中,不会出现在ID中 - ID为{ {1}}。然后将其编码为äöü,大概是为了输出为US-ASCII或ISO-8859-1。

所以我认为这不是图书馆的错误。