2010-03-09 54 views
1

這裏下是XML文件:XML架構將序列和所有一個複雜類型節點

<section> 
    <number>1</number> 
    <title>A Title goes here...</title> 
    <code>TheCode</code> 

    <element></element> 
    <element></element> 
</section> 

在部分節點之外,還有編號,名稱和代碼節點。他們的順序一定不能修復。 然後,節節點下面也有多個元素。

的想法是使用以下模式:

<xs:complexType name="Type-section"> 

    <xs:all> 
    <xs:element name="number" minOccurs="0"></xs:element> 
    <xs:element name="code" minOccurs="1"></xs:element> 
    <xs:element name="title" minOccurs="1"></xs:element> 
    </xs:all> 

    <xs:sequence> 
    <xs:element maxOccurs="unbounded" name="element"></xs:element> 
    </xs:sequence> 
</xs:complexType> 

但它是無效的。我不能將「序列」和「全部」放在一起。我該如何解決它?

回答

1

如果訂單一定不重要,那麼您可以做的一種方式是列出所有排列並作爲選擇。然而隨着選擇數量增加O(n!),它將很難保持。由於XML Schema等限制,我不得不恢復序列化一些我寫的東西。

例如

<choice> 
    <sequence> 
    <element name="a" /> 
    <element name="b" /> 
    <element name="c" /> 
    </sequence> 

    <sequence> 
    <element name="a" /> 
    <element name="c" /> 
    <element name="b" /> 
    </sequence> 


    <sequence> 
    <element name="b" /> 
    <element name="a" /> 
    <element name="c" /> 
    </sequence> 


    <sequence> 
    <element name="b" /> 
    <element name="c" /> 
    <element name="a" /> 
    </sequence> 


    <sequence> 
    <element name="c" /> 
    <element name="a" /> 
    <element name="b" /> 
    </sequence> 


    <sequence> 
    <element name="c" /> 
    <element name="b" /> 
    <element name="a" /> 
    </sequence> 
</choice> 
相關問題