Précédent   Forum du club des développeurs et IT Pro > Autres langages > XML/XSL et SOAP > Valider
Valider W3C XML Schemas, DTD, Relax NG, Schematron...) et tout ce qui permet de les mettre en oeuvre. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 16/04/2012, 18h48   #1
vanquish
Membre confirmé
 
Inscription : juin 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 253
Points : 279
Points : 279
Par défaut XSD qui oblige à un xmlns="" dans chaque élément de l'XML

Bonjour,

Je dois constituer un fichier XML répondant à un fichier XSD et comme je suis total débutant, je me heurte à un soucis que je ne comprend pas.

J'arrive bien à constituer le fichier, mais si je ne met pas un attribut xmlns="" à chaque element, les éditeurs que j'ai utilisés refusent de valider le document.

J'ai raccoucis le XSD au max pour expliquer le problème :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/EprImport" xmlns:tns="http://www.example.org/EprImport" elementFormDefault="unqualified">
 
    <complexType name="epr">
              <sequence>              
                   <element name="pat_age" minOccurs="0" maxOccurs="1">
                     <simpleType>
                             <restriction base="int">
                                  <minInclusive value="1"></minInclusive>
                                  <maxInclusive value="999"></maxInclusive>
                             </restriction>
                        </simpleType>
             </element>
          </sequence>
    </complexType>
 
    <element name="ImportEPR" type="tns:epr"></element>
</schema>
exemple de fichier
Code :
1
2
3
4
5
 
<?xml version="1.0" encoding="utf-8" ?>
<ImportEPR xsi:schemaLocation="http://www.example.org/EprImport C:\Users\Gabriel\Downloads\XML\EprImport0.xsd" xmlns="http://www.example.org/EprImport" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <pat_age xmlns="">55</pat_poids>
</ImportEPR>
En l'état ça valide.
Si je supprime l'attribut xmlns="" de pat_age, ça ne valide plus.

Peut-être est-ce l'entête de mon XML ou une maladresse dans le XSD qui m'a été fourni.
Que faire pour ne plus rendre cet attribut obligatoire ?

Les attributs de l'élément ImportEPR ont été ajouté par EditriX lorsque je veux lier le XSD au XML.
Et visible ces attributs sont aussi utile à VisualStudio, car si je les supprime VisualStudio accepte tout et n'importe quoi comme élément.

Bref j'aimerais bien en simplifiant soit le XSD soit le XML faire fonctionner la validation de l'un ou l'autre de ces éditeurs sans obliger à cet attribut vide.

Merci de l'aide que vous pourrez m'apporter.
__________________
--
vanquish
vanquish est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/04/2012, 20h52   #2
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 412
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 412
Points : 675
Points : 675
D'abord, il s'agit l'intention vraie de l'auteur de l'xsd. Si vous voulez au fait entendre de dire que l'element pat_age (a part, il y a un typo là) vit dans l'espace de nom comme celui de epr au lieu de vivre dans un espace de nom null, un changement suffit.

Au lieu de ceci
Citation:
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/EprImport" xmlns:tns="http://www.example.org/EprImport" elementFormDefault="unqualified">
mettez la comme ça
Code :
1
2
3
4
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.org/EprImport" 
    xmlns:tns="http://www.example.org/EprImport" 
    elementFormDefault="qualified">
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2012, 01h53   #3
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 089
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 089
Points : 10 318
Points : 10 318
Envoyer un message via Skype™ à thelvin
Note que, pour respecter le XSD fourni, sans modification, et sans s'emmerder avec des xmlns="" à tout bour de champ, il y a une solution simple dans le fichier XML :

Code :
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8" ?>
<epr:ImportEPR
  xmlns:epr="http://www.example.org/EprImport"
  xsi:schemaLocation="http://www.example.org/EprImport C:\Users\Gabriel\Downloads\XML\EprImport0.xsd"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  >
  <pat_age>55</pat_age>
</epr:ImportEPR>
Mais bon, je pense que c'est le fichier XSD, qui est incorrect. Ça semble plus logique.
thelvin est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2012, 15h07   #4
vanquish
Membre confirmé
 
Inscription : juin 2002
Messages : 253
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 253
Points : 279
Points : 279
Super, ça marche.

Grand merci à tous les deux.
__________________
--
vanquish
vanquish est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h21.


 
 
 
 
Partenaires

Hébergement Web