Controle fichier XML par XSD

Résolu
sirefalas Messages postés 219 Date d'inscription   Statut Membre Dernière intervention   -  
sirefalas Messages postés 219 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Voila mon souci, je dois controler l'intégrité d'un fichier XML en passant par un fichier XSD, or je me retrouve soit avec des erreurs soit avec mon controle qui n'est pas complet.
Je voudrais controler la longueur des champs pour m'assurer qu'ils sont corrects.

le fichier XML:
<?xml version="1.0" encoding="ISO-8859-15"?>
<exercice>
  <ligne>
    <CODCLI>SAR_0000123</CODCLI>
  </ligne>
</exercice>


Le fichier XSD que j'ai crée:
<?xml version="1.0" encoding="ISO-8859-15"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="exercice">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="ligne" maxOccurs="unbounded">
	   <xs:complexType>
        <xs:sequence>
		 <xs:simpleType name="CODCLI">
		  <xs:restriction base="xs:string">
		   <xs:length value="11"/>
		  </xs:restriction>
		 </xs:simpleType>
		</xs:sequence>
	   </xs:complexType>
	  </xs:element>
	 </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:schema>


Lorsque je fais mon controle, je me retrouve avec l'erreur suivante:
s4s-elt-must-match.1 : Le contenu de 'sequence' doit concorder avec (annotation?, (element | group | choice | sequence | any)*). Problème détecté à partir de : simpleType.

Merci d'avance de votre aide

1 réponse

Joe
 
sequence n'accepte que des elements. Il faut donc créer un type pour CODCLI.
Ca donne ça :

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
		 <xs:simpleType name="codeclient">
		  <xs:restriction base="xs:string">
		   <xs:length value="11"/>
		  </xs:restriction>
		 </xs:simpleType>
  
   <xs:element name="exercice">
    <xs:complexType>
     <xs:sequence>
      <xs:element name="ligne" maxOccurs="unbounded">
	   <xs:complexType>
        <xs:sequence>
          <xs:element name="CODCLI" type="codeclient"/>
		</xs:sequence>
	   </xs:complexType>
	  </xs:element>
	 </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:schema>
1
sirefalas Messages postés 219 Date d'inscription   Statut Membre Dernière intervention   8
 
Merci,
Je m'en vais tester de ce pas.
J'avais trouvé une solution de contournement en passant par un xs:pattern
Le truc qui me gène c'est que je vais me retrouver à devoir créer un type pour toutes les données où je veux vérifier la taille du champ :(
0
sirefalas Messages postés 219 Date d'inscription   Statut Membre Dernière intervention   8
 
Je confirme mon message plus haut, j'ai trop de variables pour passer par cette méthode la.
J'ai préféré faire ça:

<xs:element name="CODCLI">
  <xs:simpleType>
   <xs:restriction base="xs:string">
    <xs:pattern value="[a-zA-Z0-9_]{11}"/>
   </xs:restriction>
  </xs:simpleType>
</xs:element>


En plus ça me donne un controle en plus si jamais je veux filtrer les caractères spéciaux
0