2016-07-26 9 views
1

У меня есть документ XML с языком конкретных элементов, например:Как проверить атрибуты языка в XSD?

<root lang="en fr"> 
    <section> 
     <title lang="en">English Title</title> 
     <title lang="fr">French Title</title> 
     <sequence>2</sequence> 
     <field> 
      <type>date</type> 
      <label lang="en">English field label</label> 
      <label lang="fr">French field label</label> 
     </field> 
    </section> 
    <section> 
     <title lang="en">Another English Title</title> 
     <title lang="fr">Another French Title</title> 
     <sequence>1</sequence> 
    </section> 
</root> 

В верхней части, корневой элемент предназначен для объявления документ определяет как английский и французский информации.

В документе есть определенные элементы, которые должны быть представлены на английском и французском языках, например title и label, так как корневой элемент объявляет о поддержке обоих.

Можно ли выразить такое ограничение в XML-схеме? Я мог бы выразить атрибут языка элемента root по-разному, например lang-en="1" lang-fr="1", если это поможет.

ответ

0

В XSD 1.0 вы не можете представлять такое ограничение.

В XSD 1.1 вы можете использовать xsd:assert, но это должно быть на уровне root. См. How to access parent element in XSD assertion XPath? для примера того, как сделать утверждение, используя выражение XPath 2.0 every..in..satisfies.

Смотрите также для общего i18n в конструктивных соображений XML: xml:lang in XML document schemas

+0

Вы можете (только) быть в состоянии использовать XSD 1.1 наследуемые атрибуты здесь. Определяя атрибут root/@ lang как наследуемый, он становится доступным для использования в условном назначении типа для элементов, расположенных далее по дереву. Но, глядя на детали, я не уверен, что он достаточно гибкий для этого случая использования. –