XML est un (méta-)langage hiérarchique, mais il ne possède pas la notion d'héritage. De même, dans la DTD, ce concept n'est pas présent. Aussi, pour gérer cette notion, nous allons utiliser l'entité paramètre [1]. Sorte de "constante" dans le cadre de la DTD, elle va permettre de simuler l'héritage.
Un première solution peut être celle présentée ci-dessous. Dans ce cas, nous avons comme hypothèse que "Ref" n'est pas une entité réelle/concrète, il ne sera jamais utilisé directement. Dans notre pseudo-langage de description, le symbole "%" désigne une entité paramètre XML.
D'autres solutions sont aussi possibles. Par exemple, il est aussi possible de créer des éléments pour chaque entité. Dans l'exemple précédent, les éléments "Ref", "A" et "C" sont définis (avec leurs identifiants propres) et "Ref" contient "(A|C)?, Ref-S2+", "A" contient "A-S1*" et "C" est vide. "Ref" peut aussi être "(A|C), ..." s'il est abstrait. Tout va dépendre des contraintes appliquées à l'héritage (exclusion, totalité…).
Une autre idée est de créer les éléments "Ref", "RefA" et "RefC" (où seulement les deux derniers si "Ref" est abstrait).
Notes
1. Attention aux deux sens de "entité" dans ce cours. En effet, "entité" est utilisé dans les MCD pour représenter les concepts manipulés dans le cade du système d'informations. Mais c'est aussi un terme utilisé en XML pour représenter la notion de constante dans un document XML ("entité générale") ou dans une DTD ("entité paramètre").