2012-11-05 64 views
1

我寫XML文檔的模式是這樣的:XSD上下文相關類型;包裝類型

<workbook> 
    <worksheet> 
    <column/> 
    </worksheet> 
</workbook> 

其中每個節點都可以被包裝成ENV元素(例如)

<workbook> 
<env> 
    <worksheet> 
    <column/> 
    </worksheet> 
</env> 
</workbook> 

<workbook> 
<worksheet> 
    <env> 
    <column/> 
    </env> 
</worksheet> 
</workbook> 

因此,根據env元素的位置,它可以有不同的子項(工作簿的env子項必須有工作表子項和工作表的env子項) st有列的孩子)

當我聲明env元素爲嵌套時,我得到了多重定義的元素錯誤。

我該如何爲這樣的文檔編寫xsd,或者完全有可能嗎?

在此先感謝!

回答

0

是的,這是可能的,因爲你可以有元素名稱相同env但在不同的地方不同的類型(結構) - 這是臨客這樣的:

<xs:element name="workbook"> 
    <xs:complexType> 
    <xs:choice> 
     <xs:element name="env"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element ref="worksheet"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element ref="worksheet"/> 
    </xs:choice> 
    </xs:complexType> 
</xs:element> 

<xs:element name="worksheet"> 
    <xs:complexType> 
    <xs:choice> 
     <xs:element name="env"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element ref="column"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element ref="column"/> 
    </xs:choice> 
    </xs:complexType> 
</xs:element> 

<xs:element name="column" type="xs:string"> 
</xs:element>