Retrouvez les publications relatives à ces discussions dans
nos rubriques MATHML, WML, XML, XSL.
liste des forums
liste des discussions
Participer à la discussion
-
Message publié le jeudi 04 octobre 2007 à 17 h 00 par nonopai.
-
Bonjour,
J'ai déjà travaillé avec des flux XML, mais par contre, c'est la première fois que je m'intéresse à la création d'une DTD. J'ai besoin d'imposé à mon document XML une certaine rigueur.
J'ai lu pas mal de documents sur le net, mais je pense que consulter la communauté restera le moyen qui me permettra d'être sur de mon coup ;)
Donc, est-ce qu'il serait possible que quelqu'un me dise si la syntaxe de ma DTD copiée-collée ci après est correcte ?
<! ELEMENT filtre (regle+)>
<! ELEMENT regle (nom,condition+)>
<! ELEMENT nom (#PCDATA)>
<! ELEMENT condition (masque,valeur)>
<! ELEMENT masque EMPTY>
<! ATTLIST masque text1 CDATA #REQUIRED
num2 CDATA #REQUIRED
num3 CDATA #FIXED"0">
num4 CDATA #FIXED"0">
num5 CDATA #FIXED"0">
num6 CDATA #FIXED"0">
<! ELEMENT valeur (#PCDATA)>
<! ATTLIST valeur operateur (=|!=|<|>|<=|>=|eq|ne|lt|gt|le|ge|=~) #REQUIRED>
J'ai également une 2nd question:
J'aimerais bien imposé à mes attributs num2 -> num6 qu'ils soient des numéraux et non pas des chaînes de caractères sans contraintes (définies par CDATA). Est-ce qu'il y a un autre mot clé, ou un moyen détourné ?
Merci par avance pour votre aide :)
-
Message publié le lundi 08 octobre 2007 à 14 h 29 par nonopai.
-
Alors, je m'auto-réponds, puisque j'ai trouvé quelques éléments qui pourraient servir à d'autres.
Voici la DTD corrigée (enfin presque:p):
<!DOCTYPE filtre [
<!ELEMENT filtre (regle+)>
<!ELEMENT regle(nom,condition+)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT condition (mask,value)>
<!ELEMENT masque EMPTY>
<!ATTLIST masque text1 CDATA #REQUIRED
num2 CDATA #REQUIRED
num3 CDATA "0"
num4 CDATA "0"
num5 CDATA "0"
num6 CDATA "0">
<!ELEMENT valueur (#PCDATA)>
<!ATTLIST valeur operateur CDATA #REQUIRED>
<!--<!ATTLIST value operateur (=|!=|<|>|<=|>=|eq|ne|lt|gt|le|ge|=~) #REQUIRED>-->
]>
A priori, il fallait un espace derrière le mot clé FIXED, et en faite, je me suis aperçu qu'il n'était même pas obligatoire pour rendre l'attribut optionel tout en précisant une valeur par défaut si celui-ci était absent.
J'avais aussi laisser trainer quelques '>'.
Par contre, je n'ai pas trouvé de solution pour mettre comme valeur possible pour l'attribut 'operateur' le caractère égal '=' ou '<' ou '>'. Si quelqu'un a une solution, je suis preneur.
Je n'ai pas non plus trouvé de solution pour imposer des chiffres comme valeur des attributs num2->num6.
Merci
liste des forums
liste des discussions
Participer à la discussion
Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.