Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Invité de passage
    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 : 2
    Points
    2

    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é Sénior Avatar de Loceka
    Profil pro Tlouye Ci
    Inscrit en
    mars 2004
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Nom : Tlouye Ci

    Informations forums :
    Inscription : mars 2004
    Messages : 2 048
    Points : 4 054
    Points
    4 054

    Par défaut

    Tu peux nous montrer ce que tu as fait (XML + DTD) ?

  3. #3
    Invité de passage
    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 : 2
    Points
    2

    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é Sénior Avatar de Loceka
    Profil pro Tlouye Ci
    Inscrit en
    mars 2004
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Nom : Tlouye Ci

    Informations forums :
    Inscription : mars 2004
    Messages : 2 048
    Points : 4 054
    Points
    4 054

    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 :
    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
    Invité de passage
    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 : 2
    Points
    2

    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

    Inscrit en
    septembre 2004
    Messages
    9 728
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 728
    Points : 16 063
    Points
    16 063

    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 -_-°.

  7. #7
    Invité de passage
    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 : 2
    Points
    2

    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

    Inscrit en
    septembre 2004
    Messages
    9 728
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 9 728
    Points : 16 063
    Points
    16 063

    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.

  9. #9
    Expert Confirmé Sénior Avatar de Loceka
    Profil pro Tlouye Ci
    Inscrit en
    mars 2004
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Nom : Tlouye Ci

    Informations forums :
    Inscription : mars 2004
    Messages : 2 048
    Points : 4 054
    Points
    4 054

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •