возможно, неверный XHTML из стандартной библиотеки Haskell? - PullRequest
4 голосов
/ 19 ноября 2011

Я пытаюсь исправить проблему с программой, которая генерирует XHTML, используя Haskell из текста UTF-8.Программа принимает строки этого текста и должна создавать допустимые объекты XHTML, но не делает этого.Я импортирую Text.XHtml.Transitional и использую функции href и identifier для генерации URI и атрибутов ID из строк UTF-8.Используя интерпретатор Haskell, мы можем увидеть:

Prelude Text.XHtml.Transitional> href "äöü"
href="äöü"

Это нормально и является допустимым URI XHTML.Однако,

Prelude Text.XHtml.Transitional> identifier "äöü"
id="äöü"

не соответствует спецификации, которая не допускает '&', '#' и ';'персонажи.Итак, похоже, что библиотека Text.XHtml.Transitional содержит ошибки.Более того, я думаю, что даже XHMTL плох, потому что он не дает сопоставления 1: 1 из UTF-8 в атрибутах и ​​идентичного сопоставлению, используемому для URI.

Поскольку я новичокдля Хаскелла я мог где-то ошибиться.Кроме того, я знаю, что HTML5 ослабляет эти ограничения атрибутов.Но это не доминирующий атм.Библиотека глючит?Если да, то какое отображение должно заменить данное?

См. Также Недопустимые символы Xhtml?

1 Ответ

7 голосов
/ 19 ноября 2011

Множество не-ascii символов юникода действительны в идентификаторах (см. Производство Name), включая ваши акцентированные буквы.

Обратите внимание, что производство применяется после нормализации .

т.е. &, # и ; могут не отображаться в идентификаторе, но в вашем примере они не появляются в идентификаторе --- идентификатор равен äöü. Затем он был закодирован как äöü, предположительно, чтобы выжить, и выводится как US-ASCII или ISO-8859-1.

Так что я не думаю, что это ошибка в библиотеке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...