2016-07-26 54 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> 

在頂部,根元素旨在聲明文檔定義英語和法語的信息。

文檔中有某些元素需要用英文和法文提供,例如titlelabel,因爲根元素聲明瞭對這兩個元素的支持。

是否有可能在XML Schema中表達這樣的約束?我可以用不同的方式表示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屬性定義爲可繼承的,它可用於在樹下的元素上進行條件類型分配。但是看看細節,我不確定它對這個用例足夠靈活。 –