2011-11-15 149 views
1

我正在嘗試爲以下XML片段編寫XSD。XSD用於具有相同名稱但具有不同屬性值的重複元素

<loop id="1000" name="loop 1000" /> 
<loop id="1000" name="loop 1000" /> 
<loop id="2000" name="loop 2000" /> 
<loop id="2000" name="loop 2000" /> 
<loop id="2000" name="loop 2000" /> 

我寫了下面XSD

<xs:element name="loop" maxOccurs="3"> 
    <xs:simpleType> 
    <xs:attribute use="required" fixed="1000" type="xs:string" name="id" /> 
    </xs:simpleType> 
</xs:element> 
<xs:element name="loop" maxOccurs="3"> 
    <xs:simpleType> 
    <xs:attribute use="required" fixed="2000" type="xs:string" name="id" /> 
    </xs:simpleType> 
</xs:element> 

但這似乎在驗證XML要失敗的。

XML不在我的控制之下。我該如何處理?

編輯:

我寫了一個XML解析器+發電機和改變接收到的XML喜歡的東西

<_1000>...</_1000> 
<_1000>...</_1000> 
<_2000>...</_2000> 
<_2000>...</_2000> 
<_2000>...</_2000> 

現在,我可以很容易地編寫XSD這一點。

+0

您提到了獨特的屬性值,但我看到它的重複。 – Swanand

+0

獨特我的意思是區分不同的attrib值。所以1000和2000是2個不同的值 –

回答

1
<xs:element name="loop" minOccurs="3" maxOccurs="3"> 
      <xs:simpleType> 
       <xs:attribute use="required" fixed="1000" type="xs:string" name="id" /> 
       <xs:attribute use="required" fixed="loop 1000" type="xs:string" name="name" /> 
      </xs:simpleType> 
     </xs:element> 
     <xs:element name="loop" minOccurs="3" maxOccurs="3"> 
      <xs:simpleType> 
       <xs:attribute use="required" fixed="2000" type="xs:string" name="id" /> 
       <xs:attribute use="required" fixed="loop 2000" type="xs:string" name="name" /> 
      </xs:simpleType> 
     </xs:element> 
+0

嗨Swati,發佈的XML只是完整的XML片段。在XSD中提到了我需要實現的功能,我嘗試過。循環與id 1000可以重複3次,然後循環與id 2000 3次。我覺得你的xsd不會完全驗證。 –

+0

好的。那麼''內的代碼應該對你有用。試試看。 –

+0

好的。將更新它。 –

相關問題