cours/syntaxe d'une DTD.md
Oscar Plaisant 602a41e7f8 update
2024-12-25 22:30:24 +01:00

2.3 KiB

up:: DTD #s/informatique

Déclaration des éléments

<!ELEMENT unNom DEF-CONTENU>

DEF-CONTENU peut être :

  • EMPTY : contenu vide
  • ANY : peut contenir n'importe quel élément de la DTD
  • (#PCDATA) : contient du texte
  • une expression régulière sur les nom d'éléments

Exemples

<!ELEMENT cours (intervenant, plan?, commentaire*)>
<!ELEMENT interveneant (#PCDATA)>
<!ELEMENT plan (#PCDATA)>
<!ELEMENT commentaire (#PCDATA)>
<!ELEMENT personne ((nom, prenom) | nomComplet)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT nomComplet (nom, prenom)>

Déclaration de liste d'attributs

<!ATTLIST unNomElement unNomAttribut TYPE OBLIGATION VALEUR-PAR-DEFAUT>
  • TYPE peut être :
    • CDATA : du texte
    • ID : un identifiant unique dans tout le document
    • IDREF : une référence vers un ID
    • IDREFS : une liste de références vers des ID
    • NMTOKEN : un mot
    • NMTOKENs : une liste de mots
    • une énumération de valeurs séparées par des |
  • L'OBLIGATION ne concerne pas les énumérations suivies d'une valeur par défaut. Dans les autres cas, cela peut être :
    • #REQUIRED : obligatoire
    • #IMPLIED : optionnel
    • #FIXED : attribut toujours présent avec une valeur (sert pour imposer la déclaration d'un espace de noms)
  • La VALEUR-PAR-DEFAUT permet de donner la valeur si aucune valeur n'est précisée

Exemples

Exemple 1

<!ELEMENT cours (intervenant, plan, commentaire*)>
<!ELEMENT cours
    titre CDATA #REQUIRED
    plan CDATA #IMPLIED

exemple valide :

<cours titre="données semi-structurées">
    <intervenant>
        Mme. Markov
    </intervenant>
    <plan>
        Introduction
        Présentation générale de XML
    </plan>

Exemple 2

<!ELEMENT crayon EMPTY>
<!ELEMENT crayon
    couleur (rouge|bleu) "bleu"
    epaisseur CDATA #IMPLIED "8">

Déclaration d'entités

Les entités permettent de définir des remplacements de préprocesseur.

<!ENTITY nomEntite "remplacement">
  • on utilise ensuite &nomEntite; qui sera remplacé par remplacement

Exemple

<!ENTITY chap1 "chap1.xml">
<!ENTITY chap2 "chap2.xml">
<!ENTITY chap3 "chap3.xml">
<livre> &chap1; &chap2; &chap3; </livre>