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

XML/XSL et SOAP Discussion :

[Parser de DTD] AttDef ::= S Name S AttType S DefaultDecl


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [Parser de DTD] AttDef ::= S Name S AttType S DefaultDecl
    Bonjour,

    je développe un parser de DTD. Je veux parser quelque chose du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <!ELEMENT Point EMPTY>
    <!ATTLIST Point x CDATA #REQUIRED
    	               y CDATA #REQUIRED>
    mais pour typage plus fort, voilà ce que je cherche à parser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!ENTITY % xcoord "CDATA">
    <!ENTITY % ycoord "CDATA">
    <!ELEMENT Point EMPTY>
    <!ATTLIST Point x %xcoord; #REQUIRED
    	               y %ycoord; #REQUIRED>
    Le soucis arrive au moment de parser la dernière ligne. D'après la norme,
    XML1.1, rien n'est prévu pour faire une référence à une entité (PEReference) dans la liste des attributs AttDef.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [52] AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
    [53] AttDef ::= S Name S AttType S DefaultDecl
    [54] AttType ::= StringType | TokenizedType | EnumeratedType
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [69] PEReference ::= '%' Name ';'
    Ma déclaration des attributs pour un Point ne serait-elle pas standard ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Nan mais en fait, c'est assez compliqué les Parameter Entities.

    Ton exemple est :
    - correct si la DTD est externe. Il suffit de tester dans un validateur.
    - incorrect (not well-formed) si c'est la DTD interne du document.

    Dans la DTD interne, les PEReference ne peuvent pas apparaître à l'intérieur d'une déclaration de balise, mais uniquement à la place d'une déclaration de balise.
    Cela est indiqué par les productions [28b] et [28a], et confirmé par la contrainte Well-formedness constraint: PEs in Internal Subset.

    Toutefois, la contrainte ainsi décrite ne porte que sur la DTD interne.
    En effet, juste après la production [29], il est indiqué

    Citation Envoyé par XML 1.1 spec
    The markup declarations may be made up in whole or in part of the replacement text of parameter entities. The productions later in this specification for individual nonterminals (elementdecl, AttlistDecl, and so on) describe the declarations after all the parameter entities have been included.
    Autrement dit, d'abord on remplace les PERef par leur contenu, et ensuite seulement on vérifie que les productions sont respectées.

    C'est aussi confirmé par la même contrainte Well-formedness constraint: PEs in Internal Subset :

    Citation Envoyé par XML 1.1 spec
    In the internal DTD subset, parameter-entity references MUST NOT occur within markup declarations; they may occur where markup declarations can occur. (This does not apply to references that occur in external parameter entities or to the external subset.)
    Et encore répété après la production [31] :

    Citation Envoyé par XML 1.1 spec
    The external subset and external parameter entities also differ from the internal subset in that in them, parameter-entity references are permitted within markup declarations, not only between markup declarations.
    Donc dans les DTDs externes on peut faire ton exemple, et dans les internes, non.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Merci beaucoup !!
    En effet j'utilise des DTD externes !

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

Discussions similaires

  1. [JAXB] Parser sans dtd
    Par kij dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 17/11/2008, 13h55
  2. [DTD] Comment parser une DTD avec JDOM ?
    Par choko83 dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 01/06/2007, 11h38
  3. [XML] Parser une DTD?
    Par La Truffe dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 03/04/2007, 12h28
  4. [DTD][Outil] Parser une DTD ?
    Par choko83 dans le forum Valider
    Réponses: 2
    Dernier message: 08/02/2007, 10h57
  5. [DTD] Cherche une API JAVA pour parser une DTD
    Par nice dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 15/06/2006, 17h00

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