2014-11-05 63 views
2

我試圖創建一個XML模式來驗證以下xml結構。包含非空字符串和元素的混合內容complexType的XML模式

<ul> 
    <li>123 
     <ul> 
      <li>A</li> 
      <li>B</li> 
      <li>C</li> 
     </ul> 
    </li> 
</ul> 

我想它如果「123」的文本內容丟失或僅是空白失敗。

下面的模式就我所知。它堅持正好3個非空列表元素。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="ul"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="li"> 
      <xs:complexType mixed="true"> 
      <xs:sequence> 
       <xs:element name="ul"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element type="nonEmptyString" name="li" maxOccurs="3" minOccurs="3" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="nonEmptyString"> 
     <xs:restriction base="xs:string"> 
      <xs:minLength value="1"/> 
      <xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern> 
     </xs:restriction> 
    </xs:simpleType>  
</xs:schema> 

我從In XML Schema, can mixed content restrict the type of the text?猜測,這可能是不可能的,但我想我會問無論如何萬一有一個解決方法。

回答

2

如果你只想要字母大寫或小寫變化

<xs:pattern value="(\s*[^\s]\s*)+"></xs:pattern> 

相關問題