xml:lang в схемах XML документа

xml:lang в схемах XML документа

Когда следует использовать xml:lang и когда нужно определить свой ​​собственный элемент или атрибут для передачи языковых значений в схему XML документа (DTD)?

Иногда документы содержат или включают различные типы естественного речевого контента. В других случаях они необходимы для хранения значения естественного языка в качестве внешних по отношению к документу данных или meta данных. Так как различные приложения используют аналогичные форматы, дизайнеры схем иногда путают, когда они должны использовать xml:lang а, когда определять свой ​​собственный связанный с языком элемент или атрибут.

<a xml:lang="en" href="xyz" hreflang="de">Click for German</a>

Атрибут xml:lang описывает язык, который содержится в element (элементе) a ("Click for German"), в то время как атрибут hreflang это meta данные, в этом случае описывает язык некоторого внешнего по отношению к этой Веб странице контента.

Answer

Когда использовать xml:lang

Контент, непосредственно связанный с XML документом (или содержится непосредственно в документе или рассматривается как часть документа когда он обрабатывается или предоставляется) должен использовать атрибут xml:lang для указания языка контента. xml:lang имеет резервироваться для авторов контента для непосредственного обозначения любого естественного речевого контента, что они могут иметь.

xml:lang определяется в XML 1.0 как общий атрибут, который может использоваться для определения языка любого контента element (елемента). Сюда включается как текст, который можно прочитать, так и другой контент (такой как встроенные объекты, такие как изображения и звуковые файлы), содержащийся в element (элементе) в котором он появился. Значение xml:lang применяется к любым sub-elements, содержащихся в element (элементе). Это также применяется к значениям атрибута, которые связаны с element и sub-elements (Хотя использование естественного языка в атрибутах это не лучшая идея). Значение атрибута xml:lang - это language тэг, который определяется в BCP 47.

Например, вот xml:lang в element (элементе) t :

Этот пример показывает, как xml:lang применяется к атрибуту:

<para>Il faut utiliser <abbr title="Simple Object Access Protocol" xml:lang="en">SOAP</abbr></para>

Когда следует использовать свой ​​собственный element (элемент) или attribute (атрибут)

Когда значение языка - на самом деле является атрибутом или meta данными для некоторого внешнего контента, тогда xml:lang не следует использовать. В этих случаях вы хотите сохранить информацию о языке, но язык непосредственно не относится к содержанию XML документа (или содержит такой контент, как изображения, которые обрабатываются как часть документа). В этом случае вы должны определить элемент или атрибут используя другое название и не следует использовать атрибут xml:lang . Для выбора значения элемента или атрибута следует использовать BCP 47, так же, как для xml:lang .

Некоторые примеры этого могут включать в себя:

  • element (элемент) в XML документе описывает вашу коллекцию DVD для того, чтобы определить, какие языки доступны на звуковой дорожке
  • element (элемент) в клиентской базе данных с полем для языка которой пользователь предпочитает
  • attribute (атрибут) link element (элемента ссылки) (такой как a в XHTML), что указывает на написанную на другом языке версию этого документа

Вам следует создать ваш собственный element (элемент) (или attribute (атрибут)) тогда, когда есть необходимость передать значение языка (как часть структуры данных или как meta данные для внешнего документа), а не чтобы указать язык конкретной части контента. Не используйте xml:lang для описания значений внешне языка - это позволит избежать создания проблем для авторов контента, которым необходимо отмечать контент для обработки текстов.

Например, документ XML может выглядеть так:

В этом примере атрибут xml:lang передает информацию о естественном языке текста, который появляется в этом документе. Элемент dialogue (диалог) и атрибут language (язык) элемента subtitles (подзаголовки) определены в схеме XML документа и передают значение естественного языка, который с ними связан. Например, он передает информацию, с subtitles (подзаголовки), что написанные на Track (запись) #1 или показанные на Традиционном Китайском языке ( zh-Hant ).

By the way

Важно помнить, что xml:lang обладает свойством: элементы более низкого уровня наследуют language attribute (речевой атрибут). Это можно использовать для того, чтобы определить язык для большинства контента (без redundant (избыточных) language тэгов для каждого element (элемента)). Например, это хорошая идея, чтобы разместить xml:lang в свой html element (елемент) в начале своего XHTML документа и использовать его только там где меняется язык текста. Дополнительную информацию смотрите в статье Language тэги в HTML и XML.

Проблематичным является приминення xml:lang к атрибуту - нет никакого способа, чтобы:

определить более чем один язык в title attribute (атрибуте заголовка)

отделять язык, используемый в attribute (атрибуте) от того, что используется в element (элемент).

Обратите внимание, что три языка схем (XML DTD, XML Schema, и RELAX NG) отличаются по вопросу: должен ли пользователь определить xml:lang перед использованием его в качестве attribute (атрибута)? Особенно:

XML DTDs требует, чтобы любой элемент, который использует xml:lang в качестве attribute (атрибута) назначал его в DTD

XML Schema требует чтобы xml namespace (пространство имен) было назначено и импортировано к использованию xml:lang (и другие значения xml namespace (пространства имен))

RELAX NG предварительно назначает xml namespace (пространство имен), как в XML, поэтому не нужно никакого дополнительного назначения.

Further reading

BCP 47, Тэги для Определения Языков Определяет, как использовать language тэги для значений xml:lang .

📎📎📎📎📎📎📎📎📎📎