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 :

Aide modélisation XML : MLD => DTD/XML


Sujet :

Valider XML

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Aide modélisation XML : MLD => DTD/XML
    Bonjour ,

    Désolé de vous demander de l'aide mais je vais devenir à folle !!

    Voila, j'ai commencé récemment le XML et j'ai un devoir à rendre ...
    Je pars d'un modèle relationnel avec une table de données en exemple et je dois "pondre", une DTD et un doc XML valide mais j'y arrive pas.

    Mon soucis concerne un système de réservation de vols dans un aeroport.
    Je dois représenter le fait qu'un meme client ne peut faire qu'une réservation par jour pour un vol donné. Et donc un client peut réserver plusieurs vols différents pour la meme date.
    Une réservation est identifié par un numéro de client et un numéro de vol , la date est un attribut ( dans le MLD )

    Mon premier bloquage est que dans l'exemple fourni, le client est identifié par un numéro, je ne peux donc le définir avec un attribut ID dans la DTD.

    J'ai beau retourné le modèle dans tous les sens, je n'arrive pas à obtenir un XML valide ou bien je ne respecte pas la contrainte ci dessus.

    Je ne vous demande pas de faire le boulot à ma place, mais j'ai vraiment besoin d'avoir une piste ... Je cogite tellement que j'arrive plus à reflechir clairement ( et ca fait plus d'une semaine que je m'acharne ... )

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Tu peux nous montrer ce que tu as fait (XML + DTD) ?

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Loceka Voir le message
    Tu peux nous montrer ce que tu as fait (XML + DTD) ?
    Je n'arrete de faire et refaire mon modèle.
    Voici , donc, la dernière chose faite :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE aeroport [

    <!ELEMENT aeroport ( client+, avion+)>

    <!ELEMENT vol EMPTY>
    <!ATTLIST vol nov ID #REQUIRED
    origin CDATA #REQUIRED
    destin CDATA #REQUIRED
    distance CDATA #REQUIRED
    hdep CDATA #REQUIRED
    harr CDATA #REQUIRED
    prixbase CDATA #REQUIRED>



    <!ELEMENT client ( reservation+ )>
    <!ATTLIST client nocl NMTOKEN #REQUIRED
    nomcl CDATA #REQUIRED
    prenomcl CDATA #REQUIRED
    nomsoc CDATA #REQUIRED>

    <!ELEMENT reservation ( vol, classe )>
    <!ATTLIST reservation date CDATA #REQUIRED >

    <!ELEMENT classe EMPTY>
    <!ATTLIST classe class NMTOKEN #REQUIRED
    coeff CDATA #REQUIRED>

    <!ELEMENT avion ( employe+ )>
    <!ATTLIST avion noav NMTOKEN #REQUIRED
    type CDATA #REQUIRED
    distmax CDATA #REQUIRED>


    <!ELEMENT employe EMPTY>
    <!ATTLIST employe noe NMTOKEN #REQUIRED
    nome CDATA #REQUIRED
    naiss CDATA #REQUIRED
    embauche CDATA #REQUIRED
    derpromo CDATA #REQUIRED
    salaire CDATA #REQUIRED
    indem CDATA #REQUIRED>


    ]>

    <aeroport>
    <client nocl="16012" nomcl="Grimaldi" prenomcl="Jean" nomsoc="Matra">
    <reservation date="21-MAR-12">
    <vol nov="BAS134" origin="Londres" destin="Moscou" distance="2500" hdep="14.15" harr="17.30" prixbase="6000" />
    <classe class="2" coeff="1" />
    </reservation>
    <reservation date="22-MAR-12">
    <vol nov="BAS134" origin="Londres" destin="Moscou" distance="2500" hdep="14.15" harr="17.30" prixbase="6000" />
    <classe class="2" coeff="1" />
    </reservation>
    </client>
    <avion noav="324" type="airbus320" distmax="10000">
    <employe noe="15809" nome="Courrier" naiss="27-JUN-66" embauche="01-MAR-00" derpromo="01-MAR-01" salaire="500" indem="" />
    </avion>
    </aeroport>






    Merci de ta reponse

  4. #4
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Je n'avais pas vu que tu avais fait un double post quand je t'ai répondu la première fois et la réponse que t'a fait thelvin sur l'autre post est toujours d'actualité ici.

    Un attribut de type NMTOKEN ou ID ne peut pas commencer par un chiffre.

    Voilà la définition de NMTOKEN par le W3C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [4]   	NameStartChar	   ::=   	":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
    [4a]   	NameChar	   ::=   	NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
    [7]   	Nmtoken	   ::=   	(NameChar)+

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Le document XML tel que je l'ai fourni n'est pas valide. Il faut enlever une "reservation" mais sinon , il est valide d'après le site XMLVALIDATION.
    D'autant plus, que NMTOKEN peut contenir que des chiffres d'apres ce que j'ai lu ... Je peux au pire remplacer par du CDATA mais ca change pas grand chose par rapport à ma problématique

  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
    Citation Envoyé par pettte Voir le message
    D'autant plus, que NMTOKEN peut contenir que des chiffres d'apres ce que j'ai lu ...
    Effectivement, je n'avais pas remarqué.

    Citation Envoyé par pettte Voir le message
    Je peux au pire remplacer par du CDATA mais ca change pas grand chose par rapport à ma problématique
    Dans l'exemple que tu nous montres, le seul problème est que tu utilises deux fois l'id "BAS134". Il faudrait utiliser des outils qui te disent pour quelle raison la validation échoue -_-°.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Analyste d'exploitation
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    ela echoue parce que j'ai mis deux vols identiques mais que vol a un attribut ID : un vol ne peut apparaitre qu'un seule fois ...
    Ce qui est totalement illogique : un client peut réserver le meme vol à des dates differentes . Je devrais donc enlever modifier l'attribut ID de col en CDATA ou NMTOKEN.
    Mais dans tous les cas , les contraintes sur les differents elements ne sont pas respectés ( ce que j'ai cité dans mon 1er post ) , et c'est CA mon probleme !

    Je sais pourquoi mon 1er exemple n'est valide ... je l'ai ecrit dans mon precedent commentaire ... ce qui fait que mon exemple n'a pas de sens

  8. #8
    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
    Citation Envoyé par pettte Voir le message
    ela echoue parce que j'ai mis deux vols identiques mais que vol a un attribut ID : un vol ne peut apparaitre qu'un seule fois ...
    Ce qui est totalement illogique : un client peut réserver le meme vol à des dates differentes . Je devrais donc enlever modifier l'attribut ID de col en CDATA ou NMTOKEN.
    Mais dans tous les cas , les contraintes sur les differents elements ne sont pas respectés ( ce que j'ai cité dans mon 1er post ) , et c'est CA mon probleme !
    Je te l'ai déjà dit, on ne peut pas exprimer de telles contraintes en DTD. Il n'y a rien à faire.
    Ça se fait déjà un peu mieux en XML Schema.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Citation Envoyé par pettte Voir le message
    ela echoue parce que j'ai mis deux vols identiques mais que vol a un attribut ID : un vol ne peut apparaitre qu'un seule fois ...
    Un vol ne peut apparaître qu'une seule fois mais tu peux y faire référence autant de fois que tu veux.
    C'est le principe des attributs ID/IDREF.

    Donc tu déclares une liste de vols, chaque vol ayant un attribut ID unique, et tu fais référence à ces vols en utilisant la valeur de l'ID dans un attribut de type IDREF.

Discussions similaires

  1. Aide modélisation XML : MLD => DTD/XML
    Par pettte dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 23/09/2012, 20h34
  2. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 11h28
  3. Réponses: 2
    Dernier message: 06/07/2006, 08h47
  4. Réponses: 2
    Dernier message: 03/06/2005, 11h00
  5. XML conforme à une DTD
    Par ange bleu dans le forum Valider
    Réponses: 4
    Dernier message: 20/04/2004, 09h37

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