2010-02-16 16 views
3

我寫了一個XMLSchema,它看起來像下面的那個。這個想法是,baseContainer只允許一些標籤,而fullContainer允許baseContainer +一些其他標籤中的所有標籤。標籤可以以任何順序出現,並且可以有多個標籤。在我的真實示例中,有更多的標籤,所以這種寫XMLSchema的方法往往會變得很大並且非結構化。我想使用XMLSchema擴展標籤來構建文檔,但它不能像我期望的那樣工作。XMlSchema的擴展,如何?

感謝提前:)

<complexType name="baseContainer"> 
    <sequence minOccurs="0" maxOccurs="unbounded"> 
    <choice minOccurs="0" maxOccurs="1"> 
     <element ref="w:aTag0"/> 
     <element ref="w:aTag1"/> 
     <element ref="w:aTag2"/> 
    </choice> 
    </sequence> 
</complexType> 

<complexType name="fullContainer"> 
    <sequence minOccurs="0" maxOccurs="unbounded"> 
    <choice minOccurs="0" maxOccurs="1"> 
     <element ref="w:aTag0"/> 
     <element ref="w:aTag1"/> 
     <element ref="w:aTag2"/> 
     <element ref="w:aTag3"/> 
     <element ref="w:aTag4"/> 
    </choice> 
    </sequence> 
</complexType> 

我已經試過這樣:

<complexType name="fullContainer"> 
    <complexContent> 
    <extension base="w:baseContainer"> 
     <sequence minOccurs="0" maxOccurs="unbounded"> 
     <choice minOccurs="0" maxOccurs="1"> 
      <element ref="w:aTag3"/> 
      <element ref="w:aTag4"/> 
     </choice> 
     </sequence> 
    </extension> 
    </complexContent> 
</complexType> 

回答

0

就一個,我知道,你想要什麼在XML的模式是不可能的。 您可以擴展(或限制)定義的類型。但是你不能擴展選擇元素。

+0

是否有另一種方式來描述可以包含多個無序元素的元素?我知道有標籤,但據我所知,當它是多個可選元素時不能使用 –

+0

Hans對此是正確的;你不能限制任何粒子(全部,選擇等)。無法擴展無序元素的集合。 您可以嘗試將主類型定義爲包含xsd:any,然後以其他方式驗證。 – xcut