Во многих статьях в Интернете (например, в этой ) предлагается использовать 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/ помогает проверить эти коды ( НЕПРАВИЛЬНЫЙ код против ПРАВИЛЬНЫЙ код ).
Что происходит вместо этого?
Валидатор воспринимает этот атрибут только как некоторый текст и не проверяет, является ли он реальным языковым кодом или каким-то бредом.