Archive for the ‘XML’ Category

DTD et XML hiérachisation

Lundi, décembre 15th, 2008

Lorsque qu’on construit une DTD à partir de fichiers XML existant, on se rend compte que la hiérarchisation des parents/enfants est essentielle. Je parle à travers les structures de déclaration pour permettre une meilleure lisibilité du code.

Plus que les commentaires, cet aspect est primordiale pour une relecture par un tiers.

Si on se réfère a de nombreuses documentations on se rendra compte que le code est souvent entassé en 2 parties, on déclare tous les éléments puis les attributs le sont dans une seconde partie.

Le problème est que si cette méthode est claire avec 2 éléments d’une DTD, il suffit d’avoir un fichier XML complexe avec de nombreux enfants pour être perdus.

J’ai été confronté a dresser une liste de DTD récemment a partir de fichier XML de plusieurs 10 dizaines de lignes, voire centaines.

La première chose est de dresser de décrire l’arbre DOM avec le parents et enfants et les attributs
Pour la lisibilité autant colorier l’ensemble. Dresser l’arbre DOM c’est un peu faire du mind-mapping

En regroupant les parents et les enfants avec attributs ATTLIST  en dessous, il est plus facile de lire le code que de faire une description des éléments puis les attributs dans un autre bloc sous-jacent

<!ELEMENT type (#PCDATA)>
<!ELEMENT statuses ((cycle+))>
<!ELEMENT states ((state+))>
<!ELEMENT state ((lockable, nextStates)?)>

<!ATTLIST cycle
collection CDATA #REQUIRED
description CDATA #REQUIRED
initial (true | false) #IMPLIED
lastworkcycle CDATA #FIXED “false”
level CDATA #FIXED “0″
name CDATA #REQUIRED
type (formatted | deleted | catchall) #REQUIRED>

Ensuite on pourra parser l’ensemble dans 2 validateurs XML Oxygen ou Stylus par exemple.