2012-04-02 115 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