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 :

définition d'une dtd en vue d'un import dans ezpublish


Sujet :

Valider XML

  1. #1
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut définition d'une dtd en vue d'un import dans ezpublish
    Bonsoir à tous!

    Je suis entrain de définir une dtd d'un mensuel en vue d'une importation dans ezpublish => passage du print au web
    J'ai une forte contrainte : je dois partir des fichiers quark xpress.
    Je me suis documenté sur avenuequark qui est à ma connaissance la seule extension à générer des xml.

    J'ai donc commencé à étudier la structure du mensuel et de son hebdo et j'ai pu mettre en avant qu'il y a une forte correspondance entre l'article et l'actu.

    L'article a seulement des champs supplémentaires.

    Je suis parti de l'hypothèse que mes schémas ne seront pas "xmlisés".
    Pour trier ensuite dans ezpublish les articles, actus, offre d'emplois et les catégories de mes articles... j'ai rajouté les attributs categorie et source.


    Ma dtd est pour le moment structuré de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <!DOCTYPE mensuelhebdo [
     
    <!-- définition de mensuelhebdo qui englobe des articles du mensuel et des actus de l'hebdo-->
     
    <!ELEMENT mensuelhebdo (article+)>
     
    <!-- l'article est composé d'un titre, chapo,d'une tetiere, d'un corps et d'un ou pls auteurs. L'hebdo concentre des actus qui n'ont pas de chapo ni de tetiere-->
     
    <!ELEMENT article (titre,chapo?,tetiere?,corps,auteur+)>
    <!ELEMENT titre (#PCDATA)>
    <!ELEMENT chapo (#PCDATA)>
    <!ELEMENT tetiere (#PCDATA)>
    <!ELEMENT corps(paragraphe+)
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema)*>
    <!ELEMENT titrepara (#PCDATA)>
    <!ELEMENT auteur (#PCDATA)>
    <!ELEMENT photo EMPTY>
    <!ELEMENT schema EMPTY>
     
    <!ATTLIST photo src CDATA #REQUIRED>
    <!ATTLIST schema src CDATA #REQUIRED>
     
    <!ATTLIST photo titrephoto CDATA #REQUIRED>
    <!ATTLIST photo copyright  CDATA #IMPLIED>
     
     
    <!ATTLIST schema titreschema CDATA #REQUIRED>
    <!ATTLIST schema copyrightschema  CDATA #IMPLIED>
     
     
     
     
    <!ATTLIST article categorie (echosarticle|agenda|offreemplois|hebdoactualites|hebdoentreprises|mensuelactutechno|hebdolivres|hebdodroitreglementation|hebdoveilleregle) #REQUIRED>
    <!ATTLIST article mois (Janvier|Février|Mars|Avril|Mai|Juin|juillet|Août|Septembre|Octobre|Novembre|Décembre) #REQUIRED>
    <!ATTLIST article annee NMTOKEN #REQUIRED>
    <!ATTLIST article numero CDATA #REQUIRED>
    <!ATTLIST article langue (fr|en|nl) "fr">
    <!ATTLIST article source (mensuel|hebdo) #REQUIRED>
    <!ATTLIST article keywords PCDATA #IMPLIED>
     
     
    ]>
    Ma dtd vous semble t'elle pertinente ? ai je réalisé des contre sens ?

    merci

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,
    Un paragraphe peut être vide ?
    L'attribut keywords devrait être de type CDATA.

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    Bonjour emmanuel,
    Merci de ta réponse.
    Mon paragraphe ne peut pas être vide. J'ai donc changé :
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema)*>
    par
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema)+>
    et
    <!ATTLIST article keywords PCDATA #IMPLIED>
    en
    <!ATTLIST article keywords CDATA #IMPLIED>

    J'ai quelques doutes sur la conception de ma dtd sur mes catégories :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <!ATTLIST article source (mensuel|hebdo) #REQUIRED>
    <!ATTLIST article categorie (echosarticle|agenda|offreemplois|hebdoactualites|hebdoentreprises|mensuelactutechno|hebdolivres|hebdodroitreglementation|hebdoveilleregle) #REQUIRED>
    J'aurai trouvé plus intéressant d'avoir une sorte de condition :
    si c'est mensuel les catégories dispo sont mensuel, actutechno
    si c'est hebdo les catégories sont offreemplois...
    cela faciliterait l'identification des catégories par l'utilisateur dans quark.


    Je reconnais aussi qu'elle à encore des zones d'ombres : je serai obligé de mettre les schémas (tableaux...) en images dans le site. C'est pas terrible pour le référencement...

    Je te remercie !
    ++
    jérôme

  4. #4
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    Je l'ai un peu modifié en permettant de positionner du texte dans les schémas qui sont basiques (titre avec du texte au kilomètre et éventuellement une image).
    Si le schema est trop compliqué, on fait une photoschema...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <!DOCTYPE mensuelhebdo [
     
    <!-- définition de mensuelhebdo qui englobe des articles du mensuel et des actus de l'hebdo-->
     
    <!ELEMENT mensuelhebdo(article+)>
     
    <!-- l'article est composé d'un titre, chapo,d'une tetiere, d'un corps et d'un ou pls auteurs. L'hebdo concentre des actus qui n'ont pas de chapo ni de tetiere-->
     
    <!ELEMENT article (titre,chapo?,tetiere?,corps,auteur+)>
    <!ELEMENT titre (#PCDATA)>
    <!ELEMENT chapo (#PCDATA)>
    <!ELEMENT tetiere (#PCDATA)>
    <!ELEMENT corps(paragraphe+)
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema+)+>
    <!ELEMENT titrepara (#PCDATA)>
    <!ELEMENT auteur (#PCDATA)>
    <!ELEMENT photo EMPTY>
    <!ELEMENT schema (#PCDATA|titreschema|photoschema)+>
    <!ELEMENT photoschema EMPTY>
     
    <!ATTLIST photo src CDATA #REQUIRED>
    <!ATTLIST photo titrephoto CDATA #REQUIRED>
    <!ATTLIST photo copyright  CDATA #IMPLIED>
    <!ATTLIST photo legende  CDATA #IMPLIED>
     
    <!ATTLIST photoschema src CDATA #REQUIRED>
    <!ATTLIST photoschema titreschema CDATA #REQUIRED>
    <!ATTLIST photoschema copyrightschema  CDATA #IMPLIED>
    <!ATTLIST photoschema legendeschema  CDATA #IMPLIED>
     
    <!ATTLIST article categorie (echosarticle|echonominations|dossier|articlefar|agenda|offreemplois|hebdoactualites|hebdocestarrive) #REQUIRED>
    <!ATTLIST article mois (Janvier|Février|Mars|Avril|Mai|Juin|juillet|Août|Septembre|Octobre|Novembre|Décembre) #REQUIRED>
    <!ATTLIST article annee NMTOKEN #REQUIRED>
    <!ATTLIST article numero CDATA #REQUIRED>
    <!ATTLIST article langue (fr|en|nl) "fr">
    <!ATTLIST article source (mensuel|hebdo) #REQUIRED>
    <!ATTLIST article keywords CDATA #IMPLIED>
     
    ]>

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Idée
    J'aurai trouvé plus intéressant d'avoir une sorte de condition :
    si c'est mensuel les catégories dispo sont mensuel, actutechno
    si c'est hebdo les catégories sont offreemplois...
    Je ne suis pas un pro de la conception de DTD , mais dans ce cas ne peux tu pas créer un element article_mois et un autre article_hebo dont chacun a sa propre liste d'attributs et qui serait ainsi défini:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!ELEMENT article (article_mois+|article_hebdo+)>
    <!ELEMENT article_mois (titre,chapo?,tetiere?,corps,auteur+)>
    <!ELEMENT article_hebdo (titre,chapo?,tetiere?,corps,auteur+)>
    <!ATTLIST article_hebdo categorie (offreemplois|hebdoactualites|hebdocestarrive) #REQUIRED>
    <!ATTLIST article_mois categorie (mensuel|actutechno) #REQUIRED>
    et tu peux même peut-être ajuster en factorisant dans article.

    Ce n'est qu'une idée.

    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    attention, cette déclaration n'est pas valide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema+)+>
    Les éléments déclarant un mélange de noeuds texte (#PCDATA) et d'autres éléments sont dits « à contenu mixte » et leur déclaration est contrainte par la spécification XML à cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema)*>
    Malheureusement, avec cette forme, la DTD ne pourra contraindre les éléments paragraphe à ne pas être vide. C'est une grosse restriction des DTD, qui impose souvent le passage au XSD (W3C XML Schema) quand il y a un impératif de précision de la validation.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    bonsoir grandfather.

    Merci pour ta correction!
    Je vais me renseigner sur quark pour voir si il peut générer des fichiers de données xml en partant d'un xsd.
    ++
    jérôme

  8. #8
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Pour info, il n'est pas possible d'utiliser un xsd dans quark 7.
    ++
    jérôme

  9. #9
    Membre régulier Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Points : 84
    Points
    84
    Par défaut
    par ailleurs grandfather,

    est il possible de contourner ce problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT paragraphe (#PCDATA|titrepara|photo|schema+)+>
    en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!ELEMENT paragraphe (texte|titrepara|photo|exergue+|schema+)+>
    <!ELEMENT texte (#PCDATA)>
    <!ELEMENT titrepara (#PCDATA)>
    <!ELEMENT exergue (#PCDATA)>
    Dans ce cas je ne mixte pas les élément ce sont des sous élements d'élements??

    J'ai tout de même pu réalisé une dtd bien plus complète avec vos conseils !!
    Merci beaucoup
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    <!DOCTYPE FAR [
    <!ELEMENT FAR (article+)>
     
    <!ELEMENT article (article_mois+|article_hebdo+)>
     
    <!ATTLIST article jour NMTOKEN #IMPLIED>
    <!ATTLIST article mois (Janvier|Février|Mars|Avril|Mai|Juin|juillet|Août|Septembre|Octobre|Novembre|Décembre) #REQUIRED>
    <!ATTLIST article annee NMTOKEN #REQUIRED>
    <!ATTLIST article numero NMTOKEN #REQUIRED>
    <!ATTLIST article langue (fr|en|nl) "fr">
    <!ATTLIST article keywords CDATA #IMPLIED>
     
    <!ELEMENT article_mois (titre,chapo?,tetiere?,corps,auteur+)>
    <!ELEMENT article_hebdo (titre,chapo?,tetiere?,corps,auteur+)>
     
    <!ATTLIST article_mois categorie (echo-article|echo-nominations|articlefar|agenda|mensuelactutechno|dossier) #REQUIRED
     
    <!ATTLIST article_hebdo categorie (offreemplois|actualites|cestarrive|entreprises|marchesecurite|livres|droitreglementation|veilleregle|jurisprudence|questions|textesparus|analyses) #REQUIRED>
     
     
     
    <!ELEMENT titre (#PCDATA)>
    <!ELEMENT chapo (#PCDATA)>
    <!ELEMENT tetiere (#PCDATA)>
    <!ELEMENT corps(paragraphe+)
    <!ELEMENT paragraphe (texte|titrepara|photo|exergue+|schema+)+>
    <!ELEMENT texte (#PCDATA)>
    <!ELEMENT titrepara (#PCDATA)>
    <!ELEMENT exergue (#PCDATA)>
    <!ELEMENT auteur (nom,fonction*)>
    <!ELEMENT nom (#PCDATA)>
    <!ELEMENT fonction (#PCDATA)>
     
    <!ELEMENT photo EMPTY>
    <!ELEMENT schema (texteschema+|titreschema|photoschema)+>
    <!ELEMENT texteschema (#PCDATA)>
    <!ELEMENT titreschema (#PCDATA)>
    <!ELEMENT photoschema EMPTY>
     
    <!ATTLIST photo src CDATA #REQUIRED>
    <!ATTLIST photo titrephoto CDATA #REQUIRED>
    <!ATTLIST photo copyright  CDATA #IMPLIED>
    <!ATTLIST photo legende  CDATA #IMPLIED>
     
    <!ATTLIST photoschema src CDATA #REQUIRED>
    <!ATTLIST photoschema titresphotoschema CDATA #REQUIRED>
    <!ATTLIST photoschema copyrightschema  CDATA #IMPLIED>
    <!ATTLIST photoschema legendeschema  CDATA #IMPLIED>
     
     
    <!ENTITY COPYRIGHT "Copyright 2009">
    ]>

  10. #10
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Effectivement, cette déclaration est valide. Tu peux cependant la simplifier un peu :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <!ELEMENT paragraphe (texte|titrepara|photo|exergue|schema)+>
    Par contre, ce n'est plus tout à fait la même structure : tu ne pourras pas avoir des noeuds texte qui se baladent directement dans paragraphe, il faudra obligatoirement les placer dans un des éléments enfants déclarés dans la DTD (l'élément texte, je suppose).
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [DOM] Erreur pour valider une DTD
    Par lenghh dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 19/05/2004, 18h15
  2. XML conforme à une DTD
    Par ange bleu dans le forum Valider
    Réponses: 4
    Dernier message: 20/04/2004, 09h37
  3. [SAX] ]Validation d'un Document avec une DTD
    Par laguiff dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 18/02/2004, 09h11
  4. [XML][DTD] Creer un parser à partir d'une DTD
    Par schnekre dans le forum Valider
    Réponses: 4
    Dernier message: 15/12/2003, 12h59
  5. Faire respecter une DTD !!!
    Par haypo dans le forum Valider
    Réponses: 3
    Dernier message: 12/07/2003, 19h20

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