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 ?