簡體   English   中英

具有重復元素的XML模式

[英]XML Schema with repeating elements

我正在嘗試反序列化以下XML:

<queries>
    <query name='abc'>
        <statement>SELECT * FROM table1</statement>
        <label row='1' name='id'/>
        <label row='2' name='name'/>
    </query>
    <query name='another'>
        <statement>SELECT * FROM table2</statement>
        <label row='1' name='myTabID'/>
        <label row='2' name='myTabName'/>
    </query>
</queries>

要驗證我使用的架構:

<xs:complexType name="Queries">
  <xs:sequence>
    <xs:element name="query" type="Query"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="Query">
  <xs:sequence>
    <xs:element name="statement" minOccurs="1" maxOccurs="1"/>
    <xs:element name="label">
      <xs:complexType>
        <xs:attribute name="row" type="xs:int" use="required"/>
        <xs:attribute name="name" type="xs:string" use="required"/>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
  <xs:attribute name="name" type="xs:string"/>
</xs:complexType>

驗證失敗,並顯示以下消息:

無效。 錯誤-第7行,第48行:org.xml.sax.SAXParseException; lineNumber:7; columnNumber:48; cvc-complex-type.2.4.d:發現無效的內容,以元素“ label”開頭。 此時,預計沒有子元素。 錯誤-第9行,第31行:org.xml.sax.SAXParseException; lineNumber:9; columnNumber:31; cvc-complex-type.2.4.d:發現無效內容(從元素“ query”開始)。 此時,預計沒有子元素。

我想念什么? 我需要指定一個不同於序列的標簽嗎? 我想強制執行至少一個現有查詢。

謝謝你高級:)

錯誤消息抱怨定義

<xs:element name="label">

和使用

<label row='1' name='id'/>
<label row='2' name='name'/>

minOccursmaxOccurs默認值(W3)為1,因此您只能在其中使用一個標簽。 如果您想使用更多標簽,則需要更改它。 unbounded使用unbounded量。

還要注意, query需要類似的maxOccurs調整( unbounded或大於1 )(如@kjhughes所評論)

嘗試這個 :

  <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
     <xs:element name="queries">
<xs:complexType>
  <xs:sequence>
    <xs:element name="query" maxOccurs="unbounded" minOccurs="0">
      <xs:complexType>
        <xs:sequence>
          <xs:element type="xs:string" name="statement"/>
          <xs:element name="label" maxOccurs="unbounded" minOccurs="0">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:string">
                  <xs:attribute type="xs:int" name="row" use="optional"/>
                  <xs:attribute type="xs:string" name="name"    use="optional"/>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute type="xs:string" name="name" use="optional"/>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
      </xs:complexType>
        </xs:element>
  </xs:schema>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM