2011/4/21 Committo,Ergo:sum <esj@rezo.net>
2011/4/21 Committo,Ergo:sum <esj@rezo.net>
mais c’est un formalisme plus difficile à lire
???
C’est du XML, donc même formalisme que le doc qu’on essaie d’y décrire, c’est un sérieux avantage sur les DTD qui ont un autre formalisme à mon avis. L’avantage des DTD est plutôt dans leur antériorité, donc les connaissances déjà existantes.
Un document XML est difficile à lire quand l’auteur de sa DTD ou XMLSchema n’a pas veillé à contenir le piège de la verbosité inhérente au formalisme.
Certes.
C’est aussi pour cela que je crois indispensable d’utiliser systématiquement un attribut quand c’est possible, car c’est moins verbeux qu’un balisage.
Néanmoins, la verbosité n’est pas toujours un mal, si elle ajoute de la lisibilité.
Compare la lisibilité d’un plugin.xml et d’un paquet.xml
Où trouve-t-on des « paquet.xml » ?
A l’inverse, les XMLSchema sont excessivement verbeux, ce qui ravale l’argument que c’est du XML à une séduction théorique qui ne se vérifie pas en pratique. RelaxNG est plus crédible à mon avis.
Attention, on oublie trop ici à mon avis que des outils existent pour faire des XSD sans écrire soi-même toutes les balises. J’en ai fait pas mal, la plupart du temps avec un outil plus ou moins graphique.
Mais comme tu dis, les DTD sont connues de longue date et très intuitives, ça suffit bien.
Dans mon cas perso, ça ne s’applique pas, je n’ai jamais fait de SGML, donc j’ai directement commencé avec XML et XSD. Du coup je suis un peu paumé quand j’ouvre une DTD… 
Il y a des tartines sur les notions de ID, de IDREF et de IDREFS stipulant que tout attribut nommé ID doit avoir une valeur utilisée par aucun autre attribut ID dans le document, et si tu ne respectes pas ça, tous les validateurs jetteront ton document.
Je ne parlais pas de l’unicité, mais de sa valeur, désolé pour l’imprécision.
Meme pour la valeur c’est contraint.
http://www.w3.org/TR/REC-xml/#attdecls
dit:
Values of type ID must match the Name production. A name must not appear more than once in an XML document as a value of this type; i.e., ID values must uniquely identify the elements which bear them.
et le « Name Production » est défini ici:
http://www.w3.org/TR/REC-xml/#NT-Name
qui exige, en gros, une lettre initiale suivie de lettres, chiffres ou soulignés.
Ah bin oui, tiens, j’avais complètement oublié. Ce qui tombe bien, c’est que j’applique ça systématiquement.
-Nicolas