[XSD] Problème lors de la validation d'un xml
Bonjour à tous,
Je rencontre de grosses difficultées pour la validation d'un fichier XML à l'aide d'un schéma XSD
Tout d'abord mon fichier XML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| <?xml version="1.0" encoding="ISO-8859-15"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<flux>
<name>XXXX</name>
<mode>put</mode>
<dir_in></dir_in>
<dir_out>/OUT</dir_out>
<file>*.txt</file>
<host>555.5.55.555</host>
<login>jean</login>
<pwd>paul</pwd>
<port></port>
<compress>1</compress>
<fcontrol>1</fcontrol>
</flux>
<flux>
<name>YYYYYY</name>
<mode>put</mode>
<dir_in>/IN</dir_in>
<dir_out>/OUT</dir_out>
<file>*.txt</file>
<host>555.5.55.555</host>
<login>luc</login>
<pwd>jacques</pwd>
<port>0</port>
<compress></compress>
<fcontrol></fcontrol>
</flux>
</configuration> |
Suivi du fichier XSD :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" elementFormDefault = "qualified">
<xs:element name="configuration">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="flux"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="flux">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="mode"/>
<xs:element ref="dir_in"/>
<xs:element ref="dir_out"/>
<xs:element ref="file"/>
<xs:element ref="host"/>
<xs:element ref="login"/>
<xs:element ref="pwd"/>
<xs:element ref="port"/>
<xs:element ref="compress"/>
<xs:element ref="fcontrol"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="name" nillable="false"/>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLenght value="5"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="mode" type="xs:string"/>
<xs:element name="dir_in" type="xs:string"/>
<xs:element name="dir_out" type="xs:string"/>
<xs:element name="file" type="xs:string" />
<xs:element name="host" type="xs:string" />
<xs:element name="login" type="xs:string"/>
<xs:element name="pwd" type="xs:string"/>
<xs:element name="port" nillable="false">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="65536"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="compress" type="xs:string" nillable="true"/>
<xs:element name="fcontrol" type="xs:string" nillable="true"/>
</xs:schema> |
Ce dernier n'est pas entier, je rencontre divers problèmes donc je commence par celui des balises vides.
La balise <port> pour le premier flux est vide et celle du deuxieme flux est egale à 0 les deux cas devrait engendrer un rejet du fichier XML. Pour le port sa doit etre rejeté quand la balise est vide ou valeur non comprise entre 1 et 65356. Hors le fichier est considéré comme valide (dans le validateur sur Internet lien plus bas mais également dans Talend).
Ensuite une erreur me parlant de contexte apparait apparament à cause la restriction minLenght (maxLenght ne passe pas non plus).
J'utilise le validateur à l'adresse suivante : http://www.xmlme.com/Validator.aspx?mid=83
Merci d'avance :oops: