2011-09-07 59 views
0

嗨,我需要爲xml創建一個xsd,其中有許多名稱列和行的元素。XSD如何將maxOccurs設置爲之前元素值的值

請提出XSD,我已經把cols當成無界的,應該如何製作元素行。

<cols> 
    <id>a</id> 
    <type>string</type> 
</cols> 
<cols> 
    <id>b</id> 
    <type>string</type> 
</cols> 
<cols> 
    <id>c</id> 
    <type>number</type> 
</cols> 
<rows> 
    <c> 
     <v>a</v> 
    </c> 
    <c> 
     <v>b</v> 
    </c> 
    <c> 
     <v>3</v> 
    </c> 
</rows> 
<rows> 
    <c> 
     <v>c</v> 
+0

請編輯重組你的問題,實在是太模糊你的XML數據的格式。更加詳細一些。發佈迄今爲止獲得的XSD。 –

回答

0

您發佈的XML樣本不會對任何模式有效。事實上xml不應該有多個根節點(就像你的例子那樣)。您需要將這些包裝在一個根節點中。

在回答你的問題時,xsd不支持像你假設的節點集中的節點數量的條件的屬性值。你可以做的最好的事情就是使用unbounded爲你的maxOccurs。

你想將類似於這樣的模式:

<xs:schema xmlns="http://mynamespace" targetNamespace="http://mynamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element maxOccurs="unbounded" name="cols"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="id" type="xs:string" /> 
       <xs:element name="type" type="xs:string" /> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     <xs:element maxOccurs="unbounded" name="rows"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="c"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="v" type="xs:string" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

希望這有助於你

相關問題