Copyright © 2007-2023 Yves MARCOUX; dernière modification de cette page: 2023-02-20.

INU3011 Documents structurés

Attributs et modélisation en XML - Exemples

Yves MARCOUXEBSIUniversité de Montréal


Description des exemples

Ces exemples sont en lien avec le texte Attributs et modélisation en XML.

memo.1.dtd / memo.1.xml

Illustrent une structure simple de mémo.

memo.2.dtd / memo.2.xml / memo.2.bis.xml

Supposons qu’on désire ajouter au modèle précédent (memo.1.dtd) la possibilité d’indiquer pour chaque paragraphe si l’information a été vérifiée ou non. On veut donc que chaque paragraphe puisse être marqué d’une façon quelconque comme vérif ou nonVérif.

En première hypothèse, essayons d’ajouter cette information sous la forme d’un sous-élément de par. On peut par exemple définir deux éléments vides (EMPTY), appelés vérif et nonVérif, et en placer un des deux au tout début du contenu de chaque élément par pour en indiquer le statut de vérification. L’exemple memo.2.xml illustre ce que cela donne dans un document.

Du côté de la DTD (memo.2.dtd), cependant, cette approche n’est pas optimale. En effet, comme le modèle de contenu originel de par est un modèle de contenu mixte, on ne peut ajouter un sous-élément qu’en l’ajoutant à ce modèle de contenu mixte. Cet ajout résulte alors en un modèle trop permissif, puisqu’il permet de mettre plusieurs éléments vérif et nonVérif dans le même paragraphe. Un document, même valide, peut donc renfermer de l’information incohérente, par exemple un paragraphe portant à la fois les mentions vérif et nonVérif. L’exemple memo.2.bis.xml illustre cette possibilité d’incohérence.

memo.3.dtd / memo.3.xml

Illustrent qu’on peut faire mieux que memo.2.dtd, en utilisant un attribut. Au lieu d’ajouter des sous-éléments dans par, on définit un attribut (niveauVérif) sur cet élément. La valeur de cet attribut est de type énuméré (vérif | nonVérif) et indique si le paragraphe est vérifié ou non. Comme un attribut ne peut pas être spécifié plus d’une fois dans une même balise, un document valide ne peut plus indiquer qu’un paragraphe est à la fois vérifié et non vérifié !

memo.4.dtd / memo.4.xml

Montrent une variante de la solution memo.3.dtd qui utilise un nom et des valeurs d’attributs différents (vérif="oui" ou vérif="non"). Notez que cette solution est tout à fait équivalente à memo.3.dtd du point de vue de l’information véhiculée par les documents.