Xml Dtd Entités XPath Xsl

Syntaxe d'une DTD

  DOCTYPE   ELEMENT   ATTLIST   ENTITY   NOTATION   INCLUDE/IGNORE   Exemple   Liens

Balise Syntaxe
DOCTYPE
Définition externe :
<!DOCTYPE nom_de_la_balise_définie SYSTEM "url du fichier DTD">
Définition interne :
<!DOCTYPE nom_de_la_balise_définie [ ... contenu de la dtd ... ]>
Déclare la DTD d'un document XML. Le nom de la balise figurant après DOCTYPE doit correspondre à l'élément unique de premier niveau du fichier XML.

Lorsque la DTD est située dans un fichier externe, celui commence par une déclaration XML :
<?xml version="1.0" encoding="utf-8"?>
ELEMENT <!ELEMENT nom (contenu)>
Déclare une balise. Le contenu décrit soit le type de données, soit les balises imbriquées :
EMPTY
La balise ne pourra pas avoir de contenu (ce qui n'empêche pas les attributs). Exemple : <personne nom="Paul" />
ANY
Tout contenu (texte et/ou autres balises) sera accepté
Mixed
Un type d'élément a un contenu mixte quand des éléments de ce type peuvent contenir des données textuelles, parsemées, le cas échéant, de sous-éléments. Dans ce cas, les types des sous-éléments peuvent être contraints mais pas leur ordre ni leur nombre. Le mot-clef #PCDATA doit apparaître en premier.
Exemple : <!ELEMENT nom (#PCDATA | BALISE1 | BALISE2)*> (* obligatoire)
Sous-éléments
Un type d'élément a un contenu élémentaire pur quand des éléments de ce type ne peuvent contenir que des sous-éléments, (pas de données textuelles). L'ordre indiqué doit être strictement respecté.
Exemple : <!ELEMENT nom (BALISE1+, BALISE2*, BALISE3?)>
Spécification d'exigence : caractère présent à droite de son objet :
pas d'indication
1 et un seul (élément requis)
+
1 ou plus
*
0 ou n
?
0 ou 1 (élément facultatif)
|
L'un ou l'autre des contenus présents de chaque coté
,
L'un et l'autre des contenus présents de chaque coté (dans cet ordre)
()
Possibilité d'imbriquer des parenthèses; Le caractère présent à droite de la parenthèse fermante s'applique à tout le contenu.
Note : un nom d'élément ne peut être déclaré qu'une seule fois.
ATTLIST
Un par un
<!ATTLIST element attribut type défaut>
Multiple
<!ATTLIST element
          attribut type defaut
          attribut type defaut
          (...)
>
Déclare un attribut pour l'élément spécifié. La valeur par défaut permet également de spécifier une exigence de réquisition.

Types de données :
CDATA
Chaîne de caractères.
ID
Clef de l'élément. Dans un document, une valeur d'ID ne peut figurer qu'une seule fois, même dans plusieurs éléments.
IDREF
Référence sur un ID. Il doit y avoir dans le document un élément unique possédant un attribut de type ID dont la valeur est celle spécifiée.
IDREFS
Plusieurs références sur ID séparées par des blancs.
ENTITY
Nom d'une entité générale non analysable (déclarée dans la DTD).
ENTITIES
Plusieurs noms d'entités générales non analysables séparés par des blancs.
NMTOKEN
Valeur ne contenant que des lettres, des chiffres ou des caractères . (point), _ (underscore), - (tiret) ou : (deux-points).
NMTOKENS
Liste de NMTOKEN séparés par des blancs.
Enumération
Liste de valeurs (de type NMTOKEN) énumérées entre parenthèses, séparées par le signe | (ou).
NOTATION
Liste de noms de notations (précédée du mot "NOTATION") définies dans la DTD par la balise NOTATION.
Réquisition et Valeur par défaut :
"Valeur"
L'attribut n'est pas obligatoire et la valeur spécifiée est la valeur par défaut.
#IMPLIED
L'attribut n'est pas obligatoire et aucune valeur par défaut n'est fixée.
#REQUIRED
L'attribut est obligatoire et la valeur par défaut n'est pas fixée.
#FIXED "Valeur"
Valeur fixée non modifiable. La balise peut omettre l'attribut. L'indication d'une autre valeur provoque une erreur.
ENTITY
Entités Générales
Utilisables dans le document XML et dans la DTD
Interne
<!ENTITY nom "valeur">
Externe
<!ENTITY nom SYSTEM "URL ressource">
Non Analysable
<!ENTITY nom SYSTEM "URL ressource" NDATA type>
Entités Paramètres
Utilisables exclusivement dans la DTD
Interne
<!ENTITY % nom "valeur">
Externe
<!ENTITY % nom SYSTEM "URL ressource">
Déclare le nom d'une variable qui sera remplacée par son contenu sur utilisation de la syntaxe :
  • &nom; (entités générales)
  • %nom; (entités paramètres)
Document spécifiquement consacré aux entités
NOTATION <!NOTATION gif PUBLIC "nom" "ressource">
<!NOTATION gif SYSTEM "ressource">
Identification des formats de données non XML désignées par des entités.

Notation dans Entity.html
INCLUDE
IGNORE
<![INCLUDE[texte à inclure]]>
<![IGNORE[texte à ne pas considérer]]>
Les clauses IGNORE et INCLUDE permettent de conditionner l'insertion de définitions à un paramètre, généralement une entité.

Exemple d'utilisation :
Définition des entités paramètres :
<!ENTITY % français "INCLUDE">
<!ENTITY % anglais "IGNORE">
Définition des déclarations concernées
<![%français;[<!ELEMENT MARCHE ANY>]]>
<![%anglais;[<!ELEMENT WALK ANY>]]>
L'inversion des entités paramètres permet de modifier le fonctionnement de la DTD.
Le codage %français; est remplacé par le contenu de l'entité (INCLUDE). L'inclusion se fait ou non en fonction de l'entité.
EXEMPLE DTD
<!NOTATION gif PUBLIC "image gif" "gif viewer">
<!NOTATION jpg SYSTEM "jpg image">
<!ELEMENT balise ANY>
<!ATTLIST balise cdata CDATA #REQUIRED>
<!ATTLIST balise fixed CDATA #FIXED "fixe">
<!ATTLIST balise id ID #REQUIRED>
<!ATTLIST balise idref IDREF "A">
<!ATTLIST balise idrefs IDREFS #REQUIRED>
<!ATTLIST balise entity ENTITY #IMPLIED>
<!ATTLIST balise entities ENTITIES #REQUIRED>
<!ATTLIST balise nmtoken NMTOKEN #REQUIRED>
<!ATTLIST balise nmtokens NMTOKENS #REQUIRED>
<!ATTLIST balise enum (abc | def | ghi) "def">
<!ATTLIST balise notation NOTATION (gif | jpg) #REQUIRED>
XML
<balise
cdata="du texte"
fixed="fixe"
id="JEAN"
idref="JEAN"
idrefs="JEAN JACQUES PAUL"
entity="photo"
entities="photo image logo"
nmtoken="fr"
nmtokens="fr-FR fr-CA de en it"
enum="abc"
notation="gif">

Liens internes
Liens externes