簡體   English   中英

XSD的XML元素驗證-如何定義無序元素?

[英]xml element validation against xsd - how to define unordered element?

現在,我正在驗證這樣的XML

<?xml version="1.0" encoding="utf-8"?>
  <all>
     <allElem>
      <a>12345</a>        
      <b>2</b>              
      <c>3</c>                  
      <d>                               
        <d1>4</d1>              
        <d2>5</d2>               
        <d3>6</d3>           
      </d>
      <d>                               
       <d1>7</d1>               
       <d2>8</d2>               
       <d3>9</d3>
      </d>                      
   </allElem>
</all>

我寫了一個簡單的XSD像這樣:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

   <xs:element name="all">
  <xs:complexType>
    <xs:sequence>
    <xs:element name="allElem" maxOccurs="1">
        <xs:complexType>
            <xs:sequence>
            <xs:element name="a" type="xs:string"/>
            <xs:element name="b" type="xs:string"/>
            <xs:element name="c" type="xs:string"/>
            <xs:element name="d" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>    
                    <xs:sequence>
                    <xs:element name="d1" type="xs:string"/>
                    <xs:element name="d2" type="xs:string"/>
                    <xs:element name="d3" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    </xs:sequence>
  </xs:complexType> 
   </xs:element>    

 </xs:schema>

我的問題是:我正在使用xs:sequence ,但是我不希望對xml元素進行排序,所以我不能使用xs:all,因為它只允許max出現一次,但是我的xml元素為“ d”應該可以出現多次。 xsd中是否有解決方案,我可以定義一個無序元素出現一次或多次出現? 換句話說,我想知道是否有一個xsd標記可以定義可以出現多次的無序元素。

在XSD 1.0中:

  • 您可以使用xs:all代替xs:sequence,但是每個元素只能出現(0或1)次。

  • 您可以將xs:choice與minOccurs = 0 maxOccurs = unbounded一起使用,但是每個元素可以出現任意次

在XSD 1.1中:

  • 您可以使用xs:all並為每個元素指定最小/最大基數(這是您要的)

XSD 1.1當前在Xerces(測試版)和Saxon(當前版本的Saxon-EE 9.5)中可用。

暫無
暫無

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

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