2016-07-26 7 views
1

Iは、例えば、言語固有の要素を持つ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> 

、ルート要素は、両方の英語とフランス語の情報定義文書を宣言することを意図しています。

titlelabelのように、英語とフランス語で提供する必要のある要素がドキュメントにあります。ルート要素は両方のサポートを宣言しているためです。

XMLスキーマでこのような制約を表すことは可能ですか?私はroot要素の言語属性を異なって表現することができます。例えば、lang-en="1" lang-fr="1"などが役に立ちます。

答えて

0

XSD 1.0では、このような制約を表すことはできません。

XSD 1.1ではxsd:assertを使用できますが、レベルはrootでなければなりません。 every..in..satisfies XPath 2.0式を使用してアサーションを作成する方法の例については、How to access parent element in XSD assertion XPath?を参照してください。

は、XMLの設計上の考慮事項で一般的な国際化のためにも参照してください:xml:lang in XML document schemas

+0

あなたは(だけ)ここでXSD 1.1継承属性を使用することができるかもしれません。 root/@ lang属性を継承可能と定義することにより、ツリーのさらに下の要素に対する条件付き型の割り当てに使用できるようになります。しかし、詳細を見ると、このユースケースには十分柔軟性がないのかどうかはわかりません。 –

関連する問題