From: Carbone Cedric (C.Carbone@NEOPOST.FR)
Date: 27/02/2004 - 15:50
Je n'avais pas pensé à ce genre de solution!
J ai peur pour les perfs mais je vais quand meme essayer dans cette voie.
Merci
C.
-----Message d'origine-----
De : Pierre MARTEL [mailto:pierre.martel@cetp.ipsl.fr]
Envoyé : vendredi 27 février 2004 16:29
À : xml-tech@xmlfr.org
Objet : [xml-tech] Re: XSD : avoir des balises filles avec un ordre
aléatoire
Si j'ai bien compris, il y a deux degrés de liberté :
- le nombre d'occurence de certains éléments
- l'ordre des éléments
En faisant d'abord un tri sur les éléments par une XSLT du genre :
<xsl:stylesheet version='1.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:template match="/*">
<xsl:element name="{name()}">
<xsl:apply-templates select="*">
<xsl:sort select="name()"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
<xsl:template match="*">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
qui donne pour Ex3 :
<persone><mail>XXX</mail>
<mail>XXX</mail>
<nom>XXX</nom>
<prenom>XXX</prenom>
</persone>
puis en appliquant une séquence normale avec les bons minOccurs et
maxOccurs :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="persone">
<xs:complexType>
<xs:sequence>
<xs:element name="mail" type="xs:string"
minOccurs="1"
maxOccurs="unbounded"/>
<xs:element name="nom" type="xs:string"
minOccurs="1"
maxOccurs="1"/>
<xs:element name="prenom" type="xs:string"
minOccurs="1"
maxOccurs="1"/>
</xs:sequence >
</xs:complexType>
</xs:element>
</xs:schema>
L'inconvénient est qu'il faut maintenir le même ordre dans la séquence
que dans le tri en XSLT (ascendant dans mon exemple de XSLT).
Çà marcherait ?
Pierre MARTEL
Le mercredi, 25 fév 2004, à 20:00 Europe/Paris, Carbone Cedric a écrit :
>
> Bonjour la liste !
>
> Ca fait longtemps que je n'ai pas fait de schéma et je suis coincé sur
> un
> truc :((
>
> J'aimerai pouvoir valider une balise personne qui contient un nom (et
> un
> seul) un prenom (et un seul) et un ou plusieurs mail. Cependant,
> l'ordre de
> ces trois balises n'est pas important.
>
> Voici 3 exemples de fichiers XML qui seraient valide :
> Ex1 :
> <persone>
> <nom>XXX</nom>
> <prenom>XXX</prenom>
> <mail>XXX</mail>
> <mail>XXX</mail>
> </persone>
>
> Ex2 :
> <persone>
> <nom>XXX</nom>
> <prenom>XXX</prenom>
> <mail>XXX</mail>
> </persone>
>
> Ex3 :
> <persone>
> <mail>XXX</mail>
> <prenom>XXX</prenom>
> <nom>XXX</nom>
> <mail>XXX</mail>
> </persone>
>
>
>
> J'ai essayé:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xs:element name="persone">
> <xs:complexType>
> <xs:all maxOccurs="unbounded">
> <xs:element name="nom" type="xs:string"/>
> <xs:element name="prenom" type="xs:string"/>
> <xs:element name="mail" type="xs:string"
> maxOccurs="unbounded"/>
> </xs:all>
> </xs:complexType>
> </xs:element>
> </xs:schema>
>
> mais le all ne permet pas d'avoir un element avec un
> maxOccurs="unbounced".
>
> Si vous avez une idée ?
> Merci.
> Cédric.
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:05 UTC
webmaster@xmlfr.org
|