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 02/08/2012, 21h29   #1
Team2009
Candidat au titre de Membre du Club
 
Inscription : novembre 2009
Messages : 40
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 40
Points : 11
Points : 11
Par défaut Dupliqué un groupe

Bonjour à tous,

Je génère un fichier XML à partir du XSD (partiel) ci-dessous :

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
 
        <xs:element name="structure">
          <xs:complexType>
 
            <xs:sequence>
              <xs:element name="volume">
                <xs:complexType>
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
 
              <xs:element name="repertoire">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence> 
 
          </xs:complexType>
        </xs:element>
Résultat en XML (partiel) :

Code :
1
2
3
4
5
 
<structure>
	<volume>test1-1</volume>
	<repertoire>test1-1</repertoire>
</structure>
Je souhaiterais pour voir dupliqué le groupe (volume et répertoire) autant de fois que souhaité mais sans créer une nouvelle "structure", comment dois-je modifié mon XSD ?

Résultat souhaité :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<structure>
	<volume>test1-1</volume>
	<repertoire>test1-2</repertoire>
 
	<volume>test2-1</volume>
	<repertoire>test2-2</repertoire>
 
	<volume>test3-1</volume>
	<repertoire>test3-2</repertoire>
 
</structure>
Merci d'avance .
Team2009 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 00h31   #2
thelvin
Modérateur
 
Inscription : septembre 2004
Messages : 7 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 7 092
Points : 10 321
Points : 10 321
Envoyer un message via Skype™ à thelvin
Tu ne peux pas vraiment. XSD n'a pas de syntaxe pour osciller entre <volume> et <repertoire>.

Tu pourrais mettre autant de <volume> que tu veux et autant de <repertoire> que tu veux, mais ce ne serait pas forcément le même nombre, et ce serait dans n'importe quel ordre.

Avec XSD la seule solution serait de chapeauter chaque paire <volume>/<repertoire> avec un élément.


Edit: complètement faux, j'avais compliqué le problème tout seul dans ma tête :p
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/08/2012, 11h54   #3
tsuji
Membre chevronné
 
Inscription : octobre 2011
Messages : 412
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 412
Points : 675
Points : 675
Citation:
Je souhaiterais pour voir dupliqué le groupe (volume et répertoire) autant de fois que souhaité mais sans créer une nouvelle "structure", comment dois-je modifié mon XSD ?
Oui, comme ça:
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
 
        <xs:element name="structure">
          <xs:complexType>
 
            <xs:sequence maxOccurs="unbounded">   <!-- un facet rajouté ici -->
              <xs:element name="volume">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
 
              <xs:element name="repertoire">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:maxLength value="255"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
            </xs:sequence> 
 
          </xs:complexType>
        </xs:element>
ps ligne#7 est un typo. Il faut bien-entendu l'enlever.
Citation:
<xs:complexType>
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 20h55.


 
 
 
 
Partenaires

Hébergement Web