2012-03-16 47 views
0

的名單請告訴我,我怎麼可以創建XSD架構,成功地驗證了以下XML: ---> XML 1XSD爲XML的不同類型

<?xml version="1.0" encoding="UTF-8"?> 
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> 
    <list> 
    <typeA> 
     <value>test string value 123</value> 
    </typeA> 
    <typeB> 
     <value>test string value 456</value> 
    </typeB> 
    <typeC> 
     <value>test string value 789</value> 
    </typeC> 
    </list> 
</start> 

---> XML 2

<?xml version="1.0" encoding="UTF-8"?> 
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> 
    <list> 
    <typeB> 
     <value>test string value 456</value> 
    </typeB> 
    <typeC> 
     <value>test string value 789</value> 
    </typeC> 
    </list> 
</start> 

---> XML 3

<?xml version="1.0" encoding="UTF-8"?> 
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> 
    <list> 
    <typeC> 
     <value>test string value 789</value> 
    </typeC> 
    <typeC> 
     <value>test string value 123</value> 
    </typeC> 
    </list> 
</start> 

---> XML 4

<?xml version="1.0" encoding="UTF-8"?> 
<start xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> 
    <list> 
    <typeC> 
     <value>test string value 789</value> 
    </typeC> 
    </list> 
</start> 

我寫XSD,但它不工作:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="typeC"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="value" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="typeB"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="value" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="typeA"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="value" type="xs:string"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="start"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="list"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
    <xs:element name="list"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element ref="typeA"/> 
       <xs:element ref="typeB"/> 
       <xs:element ref="typeC"/> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 

是否有任何其他的方式來實現這一目標?

在此先感謝!

回答

0

您定義包含元素typeA,typeB和typeC的方式是這樣設置的,即每個元素必須包含一個元素和一個元素。這聽起來像你希望它更靈活,以便每個元素可以包含0個或多個元素。查看maxOccurrsminOccurs屬性。