Bonjours
j'ai un pb je reçois des XML (dont je veux définir le schéma) qui on la particularité d'avoir un élément avec des fils dans de désordre et pour certains répété
un bon exemple est toujours plus parlant
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="windows-1250"?> <xml> <element> <fils1 /> <fils2 /> <fils3 /> <fils4 /> <fils5 /> <fils6 /> <fils7 /> <repeted /> <repeted /> </element> </xml>
si je définis mon XSD avec une séquence, je peux mettre un élément répété mais les élément son trié et mon deuxième xml est invalide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?xml version="1.0" encoding="windows-1250"?> <xml> <element> <fils4 /> <fils1 /> <fils2 /> <repeted /> <fils3 /> <fils6 /> <fils5 /> <repeted /> <fils7 /> </element> </xml>Si je mets all mes élément ne sont pas triés mais je ne peux pas répéter d'éléments et c'est alors les deux qui sont invalide
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 <xsd:schema xmlns="myNS" targetNamespace="myNS" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="myElement"> <xsd:sequence> <xsd:element minOccurs="0" name="fils1" type="xsd:string" /> <xsd:element minOccurs="0" name="fils2" type="xsd:string" /> <xsd:element minOccurs="0" name="fils3" type="xsd:string" /> <xsd:element minOccurs="0" name="fils4" type="xsd:string" /> <xsd:element minOccurs="0" name="fils5" type="xsd:string" /> <xsd:element minOccurs="0" name="fils6" type="xsd:string" /> <xsd:element minOccurs="0" name="fils7" type="xsd:string" /> <xsd:element minOccurs="0" maxOccurs="unbounded" name="repeted" type="xsd:string" /> </xsd:sequence> </xsd:complexType> <xsd:element name="element" type="myElement" /> </xsd:schema>de plus mes émetteurs ont la fâcheuse tendance à ajouter des attributs ou des éléments non prévus.
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 <xsd:schema xmlns="myNS" targetNamespace="myNS" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="myElement"> <xsd:all> <xsd:element minOccurs="0" name="fils1" type="xsd:string" /> <xsd:element minOccurs="0" name="fils2" type="xsd:string" /> <xsd:element minOccurs="0" name="fils3" type="xsd:string" /> <xsd:element minOccurs="0" name="fils4" type="xsd:string" /> <xsd:element minOccurs="0" name="fils5" type="xsd:string" /> <xsd:element minOccurs="0" name="fils6" type="xsd:string" /> <xsd:element minOccurs="0" name="fils7" type="xsd:string" /> <xsd:element minOccurs="0" name="repeted" type="xsd:string" /> </xsd:all> </xsd:complexType> <xsd:element name="element" type="myElement" /> </xsd:schema>
du coup j'escomptais ajouter un attribut any pour accepter n'importe quoi d'autre. or si je mets any le schéma devient ambigu et invalide
Je suis preneur de toute piste permettant de répondre à ce besoin
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 <?xml version="1.0" encoding="windows-1250"?> <xml> <element> <fils4 /> <fils1 /> <fils2 /> <repeted /> <fils3 /> <fils6 /> <fils5 /> <undeclaredelement /> <repeted /> <fils7 /> </element> </xml>
soit donc un élément avec 7 fils présent une seule fois dans le désordre 1 fils répétable et acceptant l'ajout de fils inconnus.
A+JYT
Partager