2012-04-02 10 views
3

Ich versuche, ein XML gegen eine XSD zu validieren, die 'xmllint' Befehl von Unix verwendet. Das Problem, das ich bin vor, ist dies:XML-Validierungsproblem

Im XSD, das Feld "state" wird wie folgt angegeben:

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

Mitteilung über das <xs:maxLength value="2"/>

Und im XML, das Statusfeld kommt wie folgt aus:

TYP 1:

 <state> 
      FL 
     </state> 

ODER

TYP 2:

<state>FL</state> 

für Typ-1, erhalte ich die folgende Fehlermeldung:

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. 

Und für Typ-2, es valides richtig ohne Fehler.

Also, im Grunde verursachen die Leerzeichen im formatierten XML Probleme. Ich möchte, dass das XML für beide Fälle gilt. Gibt es eine Möglichkeit, dies mit oder ohne xmllint zu tun?

Vielen Dank.

Antwort

4

dieses Schema versuchen, QTAssistant Ihre XML validiert, ich bin sicher, dass Ihr Validator sollte auch:

<?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> 

Der Trick die Klausel Whitespace.

+0

Upvote und akzeptiert !!! Vielen Dank! – Bhushan