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>
 | 
						|
```
 |