簡體   English   中英

如何在xsd模式中定義XML元素以使所有子元素具有相同的屬性值?

[英]How to define XML element in xsd schema to make all child elements to have same attribute value?

<root>
<elem type="1" id="1"/>
<elem type="1" id="2"/>
</root>

我想檢查XSD架構,以便所有元素都應具有相同的“類型”屬性值。 假設一個元素的type =“1”而另一個元素的type =“2”,那么我希望模式驗證失敗。 如何在Schema中限制它?

我認為在xsd 1.0中不可能。

我不知道你到底在做什么,但在這種情況下,它會給我一個感覺,有一些包裝元素,例如elems ,它將保持這個價值。 從而

<root>
   <elems type="1">
      <elem id="1"/>
      <elem id="2"/>
   </elems>
</root>

如果您想要單個值類型,為什么不將該單個值放在一個位置,而不是在多個位置復制它? 也就是說,為什么不以這種方式構建XML?

<root type="1">
  <elem id="1"/>
  <elem id="2"/>
</root>

不允許不同元素具有不同類型值的事實表明,類型並不嚴格地說是elem的屬性,而是整個文檔的屬性。

這樣,XML的結構已經保證了類型只有一個值,而不是允許您或驗證者必須添加額外的臨時檢查的不一致性。

可能還有一些更復雜的方法來確保類型只有一個值(可能是一些非常聰明的鍵和keyref約束;在XSD 1.1中,使用斷言;使用外部或內部Schematron斷言),但我不知道當有這么簡單的選擇時,我想鼓勵他們使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM