108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| up:: [[DTD]]
 | |
| #s/informatique 
 | |
| 
 | |
| # Déclaration des éléments
 | |
| 
 | |
| ```dtd
 | |
| <!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
 | |
| 
 | |
| ```dtd
 | |
| <!ELEMENT cours (intervenant, plan?, commentaire*)>
 | |
| <!ELEMENT interveneant (#PCDATA)>
 | |
| <!ELEMENT plan (#PCDATA)>
 | |
| <!ELEMENT commentaire (#PCDATA)>
 | |
| ```
 | |
| 
 | |
| 
 | |
| ```dtd
 | |
| <!ELEMENT personne ((nom, prenom) | nomComplet)>
 | |
| <!ELEMENT nom (#PCDATA)>
 | |
| <!ELEMENT prenom (#PCDATA)>
 | |
| <!ELEMENT nomComplet (nom, prenom)>
 | |
| ```
 | |
| 
 | |
| # Déclaration de liste d'attributs
 | |
| 
 | |
| ```dtd
 | |
| <!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
 | |
| 
 | |
| ```dtd
 | |
| <!ELEMENT cours (intervenant, plan, commentaire*)>
 | |
| <!ELEMENT cours
 | |
|     titre CDATA #REQUIRED
 | |
|     plan CDATA #IMPLIED
 | |
| ```
 | |
| 
 | |
| exemple valide :
 | |
| ```xml
 | |
| <cours titre="données semi-structurées">
 | |
|     <intervenant>
 | |
|         Mme. Markov
 | |
|     </intervenant>
 | |
|     <plan>
 | |
|         Introduction
 | |
|         Présentation générale de XML
 | |
|     </plan>
 | |
| ```
 | |
| 
 | |
| 
 | |
| ### Exemple 2
 | |
| ```dtd
 | |
| <!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.
 | |
| 
 | |
| ```dtd
 | |
| <!ENTITY nomEntite "remplacement">
 | |
| ```
 | |
| - on utilise ensuite `&nomEntite;` qui sera remplacé par `remplacement`
 | |
| 
 | |
| ## Exemple
 | |
| 
 | |
| ```dtd
 | |
| <!ENTITY chap1 "chap1.xml">
 | |
| <!ENTITY chap2 "chap2.xml">
 | |
| <!ENTITY chap3 "chap3.xml">
 | |
| ```
 | |
| 
 | |
| ```xml
 | |
| <livre> &chap1; &chap2; &chap3; </livre>
 | |
| ```
 |