IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

Attribut uniques dans balises différentes [XSD]


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Attribut uniques dans balises différentes
    Bonjour,

    Etant débutant dans ce langage je rencontre un nouveau problème que je n'arrive pas à résoudre en consultant les différentes FAQs et forums.

    Je suis en train d'écrire un fichier XSD à partir d'un fichier XML que je ne peux pas modifier.
    Mon fichier XML est actuellement sous cette forme (que j'ai beaucoup simplifiée afin de rendre mon post compréhensible):




    Dans mon XSD, j'aimerais faire en sorte que l'ID (peut importe la balise à laquelle l'attribut Id appartient) soit unique sur tout mon document.
    Une précision: ce n'est pas une erreur que la balise3 contienne plusieurs balise3. Ici il n'y a que deux niveaux mais on peut imaginer que le dernier niveau de balise3 contienne a nouveau des balise3 et ainsi de suite.
    Pour le but de mon XSD, il est très important que cet Id soit unique sur tout le fichier.

    En vous remerciant par avance.
    PS: les balises de même indice signifie qu'elles ont le même nom et chaque balise portant un indice différent signifie un nom différent au cas ou je n'ai pas été assez clair.

  2. #2
    Membre à l'essai
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    Tu as une ébauche de XSD ou pas ? Je pense que tes balise3 imbriquées vont posées problèmes.
    En fait, je viens d'avoir un problème qui (je crois) ressemble au tiens. Mais si tu peux poster ton XSD ce serai bien.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Modifications
    Voilà mes documents en un peux plus détaillés. Tu trouvera si joins la façon dont est fait mon XSD et ce que je souhaite obtenir sur mon XML.

    J'ai simplifié du mieux possible mon document en enlevant tous les attributs etc qui n'étaient pas nécessaires à la compréhension et résolution de mon problème. Il en reste cependant certains (dont peut être certains inutiles qui sont des oublis de ma part) mais ce n'est pas le centre du problème donc tu peux les ignorer !

    Contrairement à mon exemple précédent très très simplifié, c'est donc la balise6 qui peut s'appeler elle même et faire plusieurs niveaux d'imbrication.

    En espérant que mes documents sont assez clair.

    PS: Id et ID sont bien les même, c'est une simple faute de frappe dans le document posté sur le forum mais dans mon document XSD ils sont bien écris de la même façon.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    pour cela tu dois définir un type unique (<xs:unique>), au niveau de ta racine avec le selecteur xpath qui va bien (donc ici tout tes id, quelque soit le niveau) et d'ajouter en paramètre "field" l'attribut (dans ton exemple pour tout les @id cela donnerait @*)
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    C'est justement le sélecteur path que je ne sais pas comment écrire. Saurait tu me l'écrire pour l'exemple que je t'ai mis en pièce jointe? Car l'ID revient dans plusieurs balises différentes et il doit vraiment être unique dans tout le document, peut importe la balise.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ça aurait été plus logique de faire en sorte que les Id soient de type xs:ID, ce type impliquant que chacun doit être unique. C'est le mécanisme que XML fournit déjà pour ça.

    Mais les id XML n'ont pas le droit de commencer par un chiffre. Il suffit mettre un 'i' devant, genre Id="i1" et ça roule.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ca devrait donner qqchose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<xs:unique name="idbal">
    			<xs:selector xpath=".//*"/>
    			<xs:field xpath="@*"/>
    		</xs:unique>
    avec .//* tu vas selectionner toutes les balises sous root et @* tout les @id

    P.S. tu mettre @id aussi
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  8. #8
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...oui sauf si il ne peut pas, pour diverses raisons, modifier le XML comme cela semble être le cas.

    Citation Envoyé par thelvin Voir le message
    Ça aurait été plus logique de faire en sorte que les Id soient de type xs:ID, ce type impliquant que chacun doit être unique. C'est le mécanisme que XML fournit déjà pour ça.

    Mais les id XML n'ont pas le droit de commencer par un chiffre. Il suffit mettre un 'i' devant, genre Id="i1" et ça roule.
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci à vous pour vos réponses. Effectivement thelvin il aurait été plus aisé de mettre un id de type "xs:ID" mais mon document XML n'est pas modifiable et concrètement j'ai mis 1, 2, 3 etc sur mon document pour ne pas le surcharger mais il s'agit en fait de GUID donc de la forme cad87eda-89ad-5e15-9a46-278e97711877 !

    Et merci Caballo ta solution marche parfaitement, c'est exactement ce qu'il me fallait. Comme j'ai commencé a étudier ce langage il y a seulement une semaine donc je n'ai pas encore tous les réflexes et diverses possibilités de syntaxe.

  10. #10
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut
    ...je te conseille de te pencher sur les tutoriaux qui traite de xpath (il y a en a sur le site il me semble bien...) Une fois que tu maitriseras ca, tu résoudras beaucoup de "problèmes" en comprenant simplement ce que tu fais
    "Chuck Norris a déjà compté jusqu'à l'infini. Deux fois."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Attribut ALT dans Balise Marquee
    Par toptip dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 26/06/2010, 10h20
  2. attribut bgcolor dans balise <tr>
    Par exe2bin dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/11/2009, 17h54
  3. [HTML] Attribut target dans balise <a>
    Par karfyn dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 22/07/2009, 10h29
  4. Attribut lang dans balise Input sous IE6
    Par jep33 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2009, 08h36
  5. Réponses: 2
    Dernier message: 14/12/2006, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo