Bonjour,

Cela fait deux jours que je suis sur ce problème. J'aimerais valider mon XML avec un schéma XSD. Jusque là tout va bien j'ai trouvé tout ce qu'il me fallait sur le net. Maintenant le problème est que j'essaie d'avoir un schéma XSD le plus restrictif possible et c'est là que cela commence à se gâter. J'ai vu que dès qu'on ajoutais des "nillable" et des type a tester cela se compliquait. J'ai trouvé qu'il fallait ajouter un attribut "nil=true" dans le XML mais maintenant c'est encore, pire.

Voici mes exemple XML et XSD, il y aurait-il une âme charitable pour me dire si y'a une solution ou si finalement au lieu de cherche à tester un double je dois juste tester une string (mais on perds en restriction...).

Mon XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="utf-8" ?> 
- <SellerExtranet>
- <Property Ref="2890">
  <Type>Appartment</Type> 
  <Transaction>Vente</Transaction> 
  <City>ARNAC POMPADOUR</City> 
  <District /> 
  <Surface>50.5</Surface> 
  <Rooms>3</Rooms> 
  <Price>149000.45</Price> 
  <Currency>EUR</Currency> 
  </Property>
- <Property Ref="19295">
  <Type>House</Type> 
  <Transaction>Location</Transaction> 
  <City>Paris 02</City> 
  <District /> 
  <Surface>84</Surface> 
  <Rooms nil="true" /> 
  <Price>680</Price> 
  <Currency>EUR</Currency> 
  </Property>
</SellerExtranet>
Mon XSD :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SellerExtranet">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Property">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Type" type="xs:string" />
              <xs:element name="Transaction" type="xs:string" />
              <xs:element name="City" type="xs:string" />
              <xs:element name="District" type="xs:string" />
              <xs:element name="Surface" type="xs:decimal" />
              <xs:element name="Rooms" type="xs:unsignedShort" nillable="true" />
              <xs:element name="Price" type="xs:string" />
              <xs:element name="Currency" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="Ref" type="xs:unsignedShort" use="required" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Et voilà mes erreurs en retour :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Error: L'attribut 'nil' n'est pas déclaré. Error: L'élément 'Rooms' n'est pas valide - La valeur '' n'est pas valide selon son type de données 'http://www.w3.org/2001/XMLSchema:unsignedShort' - La chaîne '' n'est pas une valeur UInt16 valide. Error: L'attribut 'nil' n'est pas déclaré. Error: L'élément 'Rooms' n'est pas valide - La valeur '' n'est pas valide selon son type de données 'http://www.w3.org/2001/XMLSchema:unsignedShort' - La chaîne '' n'est pas une valeur UInt16 valide. Error: L'attribut 'nil' n'est pas déclaré. Error: L'élément 'Rooms' n'est pas valide - La valeur '' n'est pas valide selon son type de données 'http://www.w3.org/2001/XMLSchema:unsignedShort' - La chaîne '' n'est pas une valeur UInt16 valide.
Voilà en gros. Je vous remercie par avance de votre aide et si vous avez des questions n'hésitez par. J'ai regardé partout sur le net mais je ne trouve vraiment pas la solution...