Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/03/2013, à 00: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 &lt; et &gt; ou créer des entités paramètres genre

<!ENTITY % lt4 "&lt;4">

et patati et patata.... Rien ne fonctionne... Mon XML est toujours invalide sad

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, à 16:56)

Hors ligne

#2 Le 20/03/2013, à 17: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 ≥ ?

Hors ligne

#3 Le 20/03/2013, à 20:11

miniSeb

Re : XML: utiliser < et > dans une énumération dans les paramètres

Pas bête smile

Merci !

Hors ligne

#4 Le 22/03/2013, à 16: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

Error a écrit :

NmToken expected in ATTLIST enumeration

Et je ne comprends pas ce message d'erreur...

Dernière modification par miniSeb (Le 22/03/2013, à 16:58)

Hors ligne

#5 Le 23/03/2013, à 16: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 ?

Hors ligne

#6 Le 24/03/2013, à 12: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 "&le; 4">  <!-- objectif étant "≤ 4" -->
<!ENTITY % p11; "&ge; 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 wink

Dernière modification par miniSeb (Le 24/03/2013, à 12:43)

Hors ligne

#7 Le 24/03/2013, à 16:34

Elzen

Re : XML: utiliser < et > dans une énumération dans les paramètres

Seules les entités &lt;, &gt;, &quot; et &amp; 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 (&#8804; et &#8805;), 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.

Hors ligne

#8 Le 25/03/2013, à 11: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       "&#8804;"> <!-- less-than or equal to -->
<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to -->

Par contre, quand j'essaie

<!ENTITY % le "&le;">
<!ENTITY % ge "&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 wink

Hors ligne