2012-04-02 130 views
3

我正在嘗試使用Unix的'xmllint'命令驗證XML對XSD。我現在面臨的問題是這樣的:XML驗證問題

在XSD,現場 「state」 規定如下:

<xs:element name="state"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:maxLength value="2"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 

通知的<xs:maxLength value="2"/>

而在XML中,狀態字段當屬此:

TYPE 1:

 <state> 
      FL 
     </state> 

OR

TYPE 2:

<state>FL</state> 

1型,我得到以下錯誤:

test.xml:243: element state: Schemas validity error : Element 'state': [facet 'maxLength'] The value has a length of '32'; this exceeds the allowed maximum length of '2'. 
test.xml:243: element state: Schemas validity error : Element 'state': ' 
       FL 
      ' is not a valid value of the local atomic type. 

和2型,它正確地valides沒有任何錯誤。

因此,基本上格式化XML中的空格造成問題。我希望XML能夠通過這兩種情況。有沒有辦法做到這一點有或沒有xmllint?

非常感謝。

回答

4

嘗試這個模式,QTAssistant驗證你的XML,我相信您應該驗證,太:

<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="state"> 
     <xs:simpleType> 
      <xs:restriction base="xs:string"> 
       <xs:whiteSpace value="collapse"/> 
       <xs:maxLength value="2"/> 
      </xs:restriction> 
     </xs:simpleType> 
    </xs:element> 
</xs:schema> 

訣竅是空白條款。

+0

Upvote and accepted !!!非常感謝! – Bhushan 2012-04-03 00:02:41