#1 Le 19/03/2013, à 23:03
- miniSeb
XML: utiliser < et > dans une énumération dans les paramètres
Bonsoir !
J'ai beau me creuser la tête, chercher sur internet en anglais comme en français, je sèche !
Dans ma DTD, je cherche à définir un élément XML 'recette' contenant un attribut 'nombre_de_personnes'. Aucun souci jusque là, avec
<!ELEMENT recette (#PCDATA)>
<!ATTLIST recette
nombre_de_personnes ( 4_ou_moins | 5_à_7 | 8_et_plus) #REQUIRED>
Là où ça coince, c'est quand je veux remplacer '4_ou_moins' et '8_et_plus' par '<= 4' et '8 =>'...
J'ai beau jouer avec < et > ou créer des entités paramètres genre
<!ENTITY % lt4 "<4">
et patati et patata.... Rien ne fonctionne... Mon XML est toujours invalide
Quelqu'un aurait-il une idée ?
Merci d'avance !!!
==========================================================================
Edit :
Vu que j'ai trouvé la réponse, je vous la poste ; des fois que ça intéresse quelqu'un plus tard...
Bon ben, c'est une restriction inhérente et immuable de XML : pas de < dans les valeurs d'attributs. J'ai farfouillé un peu la norme, voir : http://www.w3.org/TR/REC-xml/#CleanAttrVals.
Et une fois le paragraphe dédié trouvé, j'ai trouvé une ancienne discussion sur le sujet des CDATA dans les ATTLIST : http://www.velocityreviews.com/forums/t … value.html
It's a restriction in XML that you cannot have the open-angle bracket
in an attribute value. Period. Not for any reason.
Dernière modification par miniSeb (Le 22/03/2013, à 15:56)
Hors ligne
#2 Le 20/03/2013, à 16:50
- Elzen
Re : XML: utiliser < et > dans une énumération dans les paramètres
À voir selon le contexte, mais tu peux peut-être éventuellement utiliser les caractères unicode ≤ et ≥ ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#3 Le 20/03/2013, à 19:11
- miniSeb
Re : XML: utiliser < et > dans une énumération dans les paramètres
Pas bête
Merci !
Hors ligne
#4 Le 22/03/2013, à 15:58
- miniSeb
Re : XML: utiliser < et > dans une énumération dans les paramètres
C'est une très bonne idée mais je n'y arrive pas :-/
J'obtiens à chaque fois
NmToken expected in ATTLIST enumeration
Et je ne comprends pas ce message d'erreur...
Dernière modification par miniSeb (Le 22/03/2013, à 15:58)
Hors ligne
#5 Le 23/03/2013, à 15:18
- Elzen
Re : XML: utiliser < et > dans une énumération dans les paramètres
Je n'ai pas fait de DTD depuis un bail, mais je dirais que ça coince dans la façon dont tu dis qu'il doit y avoir ça.
T'peux balancer la ligne telle que tu l'as écrite actuellement ?
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#6 Le 24/03/2013, à 11:40
- miniSeb
Re : XML: utiliser < et > dans une énumération dans les paramètres
Voici le code en l'état :
<!ELEMENT recette (blablabla)>
<!ENTITY % m4 "≤ 4"> <!-- objectif étant "≤ 4" -->
<!ENTITY % p11; "≥ 11"> <!-- objectif étant "≥ 11" -->
<!ATTLIST recette
id ID #REQUIRED
personnes ( %m4; | 5-7 | 8-10 | %p11; ) #REQUIRED>
Je précise que c'est la première fois que j'utilise les entités paramètres, donc ça doit sûrement venir d'une incompréhension de ma part
Dernière modification par miniSeb (Le 24/03/2013, à 11:43)
Hors ligne
#7 Le 24/03/2013, à 15:34
- Elzen
Re : XML: utiliser < et > dans une énumération dans les paramètres
Seules les entités <, >, " et & sont définies directement dans la syntaxe XML ; les autres sont justement définies par la DTD des différents langages.
Tu peux essayer avec les codes correspondants (≤ et ≥), mais vu le message d'erreur, je ne suis pas sûr que ça passe. Tiens-nous au courant, si ça ne va pas, j'essayerai de retrouver comment on fait quand j'aurai un peu de temps.
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#8 Le 25/03/2013, à 10:21
- miniSeb
Re : XML: utiliser < et > dans une énumération dans les paramètres
Alors... J'ai trifouillé un peu dans tous les sens donc je n'ai plus en tête tout ce que j'ai fait.
Par contre, je sais que cela fonctionne :
<!ENTITY le "≤"> <!-- less-than or equal to -->
<!ENTITY ge "≥"> <!-- greater-than or equal to -->
Par contre, quand j'essaie
<!ENTITY % le "≤">
<!ENTITY % ge "≥">
ça ne fonctionne pas...
Donc en gros je m'en sors avec les entités mais pas les entités paramètres. J'ai essayé avec NOTATION aussi mais ça coince pareil...
Je continue à chercher ; je fais signe si je trouve quelque chose
Hors ligne