2013-02-23 127 views
0

我有一個屬性(類),其可採取任何2個值的父元素(產物)(腐爛,和不易腐爛)。如果該項目是易腐,我希望有子元素「食品」,如果它不容易變質,我想擁有的子元素「股票」。從看,我收集,這可以在XSD 1.1,但不是XSD 1.0。但是,我沒有找到如何做到這一點。XML模式選擇基於父項的子元素屬性

下面是我的代碼,縮短展示的重要組成部分:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="products"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="product" minOccurs="1" maxOccurs="unbounded"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="name" type="xs:string"/> 
      <xs:choice> 
       <xs:element name="food"> 
       <xs:complexType> 
        /*DEFINED FOOD HERE*? 
       </xs:complexType> 
       </xs:element> 
       <xs:element name="stock"> 
       <xs:complexType> 
        /*DEFINED STOCK HERE*/ 
       </xs:complexType> 
       </xs:element> 
      </xs:choice> 
      </xs:sequence> 
      <xs:attribute name="id" type="xs:ID"/> 
      <xs:attribute name="category"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:enumeration value="perishable"/> 
       <xs:enumeration value="nonPerishable"/> 
       </xs:restriction> 
      </xs:simpleType> 
      </xs:attribute> 
     </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

誰能幫助我嗎?

回答

0

如果你正在尋找的東西,如:

<perishable> 
    <food>cheese</food> 
    </perishable> 


<xs:element name="perishable"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="food" type="xs:string"/> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 
+0

對不起echew,這dosent幫助。請重新閱讀第一段:) – 2013-02-23 23:40:46

+0

給我一個例子,說明如何讓xml看起來像。 如果元素不符合易腐標準,您是否希望元素定義爲不易變質? – echew 2013-02-23 23:49:38

+0

產品具有一個屬性,該屬性可以具有易腐性或非易腐性作爲其值。如果屬性的值是易腐爛的,我想要一個食品元素在產品元素中。如果該屬性的值爲nonPerishable,那麼我需要產品元素中的庫存元素 – 2013-02-24 13:45:58