Как проверить xml:lang ATTLIST внутри XML с помощью DTD?
Многие статьи в интернете (вроде этой) предлагают использовать xml:lang
или некоторый пользовательский атрибут для кодирования метаинформации о языке внутри тегов XML. Они упоминают, что эти коды должны соответствовать стандарту BCP47.
Давайте посмотрим, что произойдет, если я закодирую атрибут языка, как предлагают статьи:
- Внутри DTD:
<!ATTLIST text xml:lang NMTOKEN #IMPLIED>
- Внутри XML:
<text xml:lang="YODU991Yklew-e-ijsw02ijwk">...</text>
Каков ожидаемый результат?
Валидатор DTD проверит, YODU991Yklew-e-ijsw02ijwk
Код - это реальный код языка BCP47, если страна и сценарий существуют, и пометьте его красным, если эти коды неверны. Точно так же, как http://schneegans.de/ помогает проверить эти коды ( НЕПРАВИЛЬНЫЙ код против ПРАВИЛЬНОГО кода).
Что происходит вместо этого?
Валидатор воспринимает этот атрибут только как некоторый текст и не проверяет, является ли он реальным языковым кодом или какой-то тарабарщиной.