2012-04-02 13 views
3

私はUnixの 'xmllint'コマンドを使用してXSDに対してXMLを検証しようとしています。私が直面しています問題は、このです:XSDでXML検証の問題

、フィールド "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:TYPE 1については

<state>FL</state> 

、私は次のエラーを取得:

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