2008-12-05 59 views
1

我試圖創建以XML模式的類型來執行與兩個元件:XML模式contruct用於與兩個枚舉類型和屬性

  • 單個屬性;和
  • 與枚舉匹配的簡單內容。

在XML文檔中,元素可能看起來像:

<Operator Permutation="true"> 
    Equals 
</Operator> 

其中 「等於」 將是枚舉之一。

這可能嗎?如果是這樣,怎麼樣?

我試過在XMLSpy中沒有成功。如果我做一個簡單的類型,它只允許沒有屬性的內容枚舉。如果我製作一個複雜的類型,它只允許沒有內容枚舉的屬性。

編輯: 謝謝,大衛。完美的作品,但我只是說此限制內,從而驗證忽略換行符:

<xs:whiteSpace value="collapse"/>

回答

1

如何

<xs:element name="Operator" type="MixedElement" /> 

    <xs:complexType name="MixedElement"> 
    <xs:simpleContent> 
     <xs:extension base="EnumType"> 
     <xs:attribute name="Permutation" type="xs:boolean"> 
     </xs:attribute> 
     </xs:extension> 
    </xs:simpleContent> 
    </xs:complexType> 

    <xs:simpleType name="EnumType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="Equals"/> 
     <xs:enumeration value="NotEquals"/> 
    </xs:restriction> 
    </xs:simpleType>