Introduction aux bases du langage XSL et XML
XML
Les bases en pratique
Support de cours réalisé par Joêl FARVAULT (CNRS/DSI) et David ROUSSE (CNRS/DSI), relu par René PELFRESNE (CNRS/DSI)
Ce(tte) oeuvre est mise à disposition selon les termes de la Licence Creative Commons Paternité Pas d’Utilisation Commerciale - Pas de Modification 2.0 France.
Avril 2003 Direction des systèmes d'information
Sommaire
1. Historique
2. Structure et organisation du langage
3. DTD et schémas XML
4. Transformations de documents XML
5. Liaisons de documents en XML
6. Manipulations de documents XML
7. Références
Historique
¾ La croissance d’Internet ces dernières années est à associer à la naissance de standards tels que :
• HTML (HyperText Marking up Language)
• HTTP (HyperText Transfer Protocol)
¾ A l’origine, un document HTML était constitué à part égale entre les données et la présentation. Mais les évolutions successives de HTML ont laissé la présentation prendre plus en plus de place dans un document HTML
¾ Il était nécessaire de définir un langage centré sur la description des données
¾ Il est apparu aussi que l’échange d’information entre entreprises nécessite une définition et une description des données échangées
¾ Une première réponse à ces besoins a été l’élaboration de normes telles
EDIFACTsous l’égide de l’ONU et le SGML (Standardized Generalized Markup Language – norme ISO 8879)
? EDIFACT a été utilisé dans le domaine des Echange de Données Informatisées (EDI)
? SGML a été particulièrement utilisé dans la gestion documentaire
¾ Le point commun entre ces deux normes est leur complexité
¾ En 1996 le W3C (World Wide Web Consortium) ainsi que plusieurs industriels ont travaillé sur la simplification de la norme SGML
¾ On retrouve dans la forme simplifiée du SGML les principes fondamentaux de ce langage :
? Séparation de la présentation et des données
? Structuration des données manipulées
? Capacité de décrire les structures d’information à partir de schéma (DTD)
¾ Cette forme simplifiée du SGML a pris le nom de XML (eXtensible
Marking up Language) en 1998
¾ Le XML (eXtensible Marking up Language) est un langage à balise définissant un format universel de représentation des données. Un document XML contient à la fois les données et des indications sur la structure du document
12 rue Dupont
75013 Structure du document France
0142754077éléphone>
¾ XML est un format public, multi-plateforme, accessible à tous et supporté par des nombreux éditeurs de logiciels : IBM, Microsoft, Netscape, Oracle,
Sun Microsystems…
¾ XML n’est pas HTML… Pourquoi ?
¾ HTML présente plusieurs limitations :
? HTML est orienté présentation et ne décrit pas la structure logique du document
? Il est difficile d’associer des représentations physiques à un même document HTML (par exemple papier et écran)
? Il n’est pas possible avec HTML, d’échanger des documents ou des données entre applications
? Le langage HTML est construit sur des balises (mots placés entre ) prédéfinies dont très peu se rapportent à la structure du document
¾ En revanche XML…
? XML se présente sous forme d’arbre hiérarchique donc il décrit la structure logique du document
? XML n’utilise pas de balises prédéfinies, mais il propose des règles de construction. On peut inventer toutes les balises que l’on veut. C’est pour cette raison que le langage est dit extensible
? Pour être indépendant des évolutions technologiques, XML différencie : la structure, le contenu et la présentation
¾ XML promet de standardiser la manière dont l’information est :
? Échangée
? Adaptée
? Présentée
? Personnalisée
¾ C’est pourquoi les applications de XML se situent principalement sur :
? La présentation des données
? La portabilité des informations
¾ La présentation des données :
? XML permet de présenter les données en offrant une structuration adaptée à l’usage voulu. Dans le cas des sites Web, XML permet d’adapter les informations présentées à la personnalisation des interfaces des sites
? On peut saisir (ou mettre à jour) des informations à la manière dont on alimenterait une base de données, sans se soucier de la présentation ou même générer automatiquement la présentation
(tableau, texte suivi…) sur de multiples médias
¾ La portabilité des informations :
? XML favorise les échanges informatisés ainsi que l’interopérabilité des applications. La seule contrainte étant de définir un vocabulaire commun (cf. référentiel partagé) détaillé dans des schémas (DTD et XSD). Par exemple le secteur de la chimie a défini un vocabulaire spécifique (CML) pour décrire les données du secteur chimique
¾ Les technologies et les domaines d’application utilisant XML sont :
? Développement des systèmes d’information
? Administration et gestion de contenu
? Multimédia (MPEG 7 est basée sur XML)
? Gestion électronique de documents (GED) et portail d’informations d’entreprise
? Intégration d’applications d’entreprise (EAI) avec la transformation des données vers XML (adaptateurs XML)
? Commerce électronique et EDI
¾ Les raisons pour lesquelles XML est utilisé de manière croissante :
? Le XML remplace ASCII CSV pour l’échange de données
? XML est indépendant du système cible ou d’un éditeur
? XML devient le langage d’échange de données (utilisé par les EAI et les ERP)
? Grâce à ses mécanismes de validation (DTD ou XSD) le XML favorise les échanges inter-applicatifs
? XML supporte le dialogue client/serveur sur http et il devient le protocole unifié des architectures Web
? XML est supporté par les SGBD majeurs et il est utilisé par
Oracle pour décrire les méta-données
¾ Les outils liés à XML :
? Parseur XML (Apache Xerces, Microsoft MSXML)
? Processeur XSLT (Apache Xalan, Microsoft MSXML)
? Processeur XSL-FO (Apache FOP par exemple)
? Logiciel qui lit/écrit du XML (Microsoft Office 11, Open Office)
? Editeur XML (XML Spy, Cooktop ou XMLEdit)
Structure et organisation du langage
Structure et organisation du langage
¾ Tout document présente une structure logique. Prenons le cas d’une lettre :
En-tête
Monsieur Dupont
L’en-tête est
Compagnie des Bouts suivie de
à l’attention de M. DURAND
l’apostrophe
(Madame,
Apostrophe Monsieur,Monsieur..) puis
d’un corps et enfin une
Corpssignature. C’est
Suite à votre courrier du 30 Mars, nous accusons réception de votre courrier…la structure
Nous vous prions d’agréer, Monsieur, l’expression de nos salutations distinguéeslogique de la lettre
Signature Monsieur Dupont
Structure et organisation du langage
¾ En revanche la structure physique du document est relative à sa présentation sur un support :
? Pour une présentation sur papier : la structure physique de la lettre précédente décrit que l'en-tête est placé en haut à gauche, que l'apostrophe est placée à trois centimètres audessous de l'adresse, que la première ligne des paragraphes est décalée de 1 cm à gauche…
? Pour une présentation sur écran : la structure physique du document pourra décrire que l'en-tête est en rouge et que le nom du destinataire clignote
Structure et organisation du langage
¾ XML décrit la structure logique des informations, mais sous forme d’arbre. Pour une lettre, la structure logique décrite par XML sera :
Lettre
à l’attention de M.
Monsieur DUPONT
Compagnie des Bouts DURAND
¾ On note la présence d’un élément racine « Lettre » auquel sont rattachés : « Corps », « Signature »…
¾ Un document XML commence toujours par un élément « racine » ou élément document qui se compose d’un nombre quelconque de souséléments imbriqués. Il contient toutes les données du document XML
L’élément racine est
Dupont
134, rue Lambertin
Paris
75014
Structure et organisation du langage
¾ Le document XML se compose d’éléments ce sont des balises qui contiennent des données analysables. Les éléments doivent s’imbriquer les uns dans les autres, aucun chevauchement n’est autorisé. La donnée d’un élément ne peut contenir les caractères « & » ou « > »
134, rue Lambertin
134 éro>
Donnée de type rue Lambertin
L’élément « adresse » représenté caractère contenue par Paris
75014
par la balise l’élément « adresse »
Dupont L’élément « adresse » est composé
Exemple de chevauchement qui de plusieurs balises : numéro, rue, engendre une erreur de syntaxe ville et code postal
¾ Tout élément (y compris racine) d’un document XML est caractérisé par des balises d’ouverture et de fermeture
Dupont
134, rue Lambertin
Paris
75014
Balise d’ouverture Balise de fermeture
Il est à noter que XML est sensible à la casse, donc le nom de l’élément dans la balise ouvrante doit être écrit de la même façon dans la balise fermante
¾ Un élément vide combine en une seule écriture une balise d’ouverture et de fermeture, car il ne contient pas de donnée
Cet élément ne contient aucune donnée mais dans sa notation il combine et
¾ Un élément peut posséder un (ou des) attribut(s) qui est un couple nom-valeur inclus à l’intérieur de la balise et délimité par des doubles (ou simples) quottes. La donnée d’un attribut ne doit pas contenir les
caractères « ^ », « % » ou « & »
DUPONT
Jean
L’attribut INSEE est une caractéristique (numéro unique) de l’élément « Personne ». Un espace doit séparer le nom de l’élément et celui de l’attribut
¾ Il est important de veiller à la présence des doubles ou simples quottes
Cette notation est incorrecte
DUPONT
Jean
¾ Un élément peut posséder plusieurs attributs qui doivent être séparés par des espaces
DUPONT
Jean
¾ Ces deux notations sont identiques :
DUPONT = 172109254304523
Jean
| DUPONT Jean |
¾ Mais il est préférable de limiter les attributs dans un document XML car ils :
? Ne décrivent pas une structure donc ils réduisent la clarté et la lisibilité du document XML
? Sont plus difficilement manipulables avec XSL ou XSLT
? Doivent être utilisés en tant que paramètres pour des éléments
¾ Les données portées par les éléments ou les attributs ne doivent pas contenir les caractères « ^ », « % » , « & » ou « > »
¾ Le nom des éléments et des attributs doit aussi respecter des contraintes :
? Il doit commencer par une lettre ou les caractères « _ » ou « - »
? Il ne doit pas contenir d’« espace »
? Il ne doit pas commencer par le nom « xml »
Atelier
Création d’un document XML (1)
Structure et organisation du langage
¾ Le document XML peut contenir un prologue qui se compose de deux éléments :
? La déclaration XML
? La déclaration du type de document
¾ Le prologue ou l’en-tête du document XML n’est pas obligatoire, mais il contient des informations sur la version de XML, le jeu de caractère utilisé ainsi que les références du document
¾ La déclaration XML apparaît au début du document et précise les paramètres auxquels se conforment le document. On définit en premier la version de XML (par défaut « 1.0 »)
On note la présence de délimiteurs spécifiques Et ?> qui sont à différencier de ceux habituels
¾ Ensuite on précise l’encodage des caractères, c’est à dire la table de caractères utilisée par le document. « ISO-8859-1 » est couramment employée car les caractères accentués (« é » ou « è »…) seront acceptés dans le document XML
Utilisation de l’attribut encoding
dans le prologue
¾ La déclaration XML permet aussi de définir le document comme autonome c’est à dire qu’il est complet, aucun fichier externe (DTD) n’est référencé
Pour être autonome le paramètre
standalone doit avoir la valeur « yes »
¾ En revanche s’il n’est pas autonome, il fait référence à une DTD externe contenant les « règles de grammaire » et les déclarations des balises utilisées dans le document XML. La DTD est renseignée par la déclaration du type de document (balise DOCTYPE)
Le mot-clé SYSTEM est un pointeur qui définit l’emplacement de la DTD
¾ Un document XML contenant un prologue se présente selon cet exemple :
Structure et organisation du langage – CDATA
¾ Pour remplacer certains caractères interdits (« & », «
¾ Mais si l’on souhaite insérer des données contenant des caractères interdits et pour lesquels il n’y aura pas d’analyse syntaxique, il faut utiliser la balise CDATA (Characters DATA). Tout le contenu compris dans la section sera ignoré lors de l’analyse syntaxique du document XML
decl c;Le contenu de CDATA ne sera pas pris en c := a; compte lors de l’analyse syntaxique b := a; b := c; }
]]>
Structure et organisation du langage – Les commentaires
¾ On peut insérer des commentaires dans le document XML par les balises
¾ Il est à noter que :
? Un commentaire ne doit pas précéder le prologue
? Un commentaire ne peut être placé à l’intérieur d’une balise
? Il ne doit pas avoir de « -- » dans le texte du commentaire
? Un commentaire ne doit pas apparaître dans une balise CDATA
¾ Nous avons examiné ce qui constitue dans ses grandes lignes l’ensemble des règles de construction d’un document XML
¾ Le respect de ces règles de construction donnera lieu à un document XML bien formé qui ne peut être composé que de 6 types de balisages :
? Les balises (ouvrantes, fermantes ou balises d’éléments vides)
? Les références d’entités
? Les commentaires
? Les sections CDATA
? Le prologue et les déclarations de type de document
? Les instructions de traitement
¾ Un document bien formé doit aussi respecter ces critères de présentation :
? Un document XML ne peut être vide, il doit au moins contenir 1 élément
? Il doit posséder un seul point de départ d’analyse, c’est-à-dire 1 seul élément racine
? Il doit y avoir une imbrication correcte de ses éléments, c’est-àdire un élément ne peut être fermé si tous les sous éléments qui le composent ne sont pas eux-mêmes fermés
? Il doit contenir des références à des entités qui sont ellesmêmes bien formés
¾ Un document XML est créé à partir d’un éditeur XML qui peut être un simple éditeur de texte (Notepad ou vi) ou un éditeur spécifique (XML Spy,
XML Notepad..)
¾ La vérification des règles de construction et l’interprétation du document est effectuée par un analyseur XML (appelé aussi parser, parseur ou processeur XML). Il va lire le document, vérifier qu’il est bien formé et le convertir en une structure d’éléments arborescents. Lors de cette phase d’analyse les entités seront remplacées par leur contenu
Processeur XML Structure arborescente
¾ A la suite de ces tests de conformité, la structure arborescente ou certains nœuds (entités binaires) seront transmis à des applications cibles. Il peut s’agir d’un navigateur Web ou de tout autre programme capable de comprendre les données
Atelier
Création d’un document XML
(2)
Structure et organisation du langage Le document valide
¾ La notion de document bien formé est à distinguer de celle de document valide
¾ Un document est bien formé s’il est correct syntaxiquement et s’il répond aux exigences de construction d’un document XML
¾ Un document valide est un document bien formé dont les données et la structure sont conformes aux spécifications du document type (DTD)
¾ Qu’est-ce qu’une DTD ?
Les DTD et schémas XML
¾ Une DTD (Document Type Definition) est un modèle permettant de décrire la grammaire d’un document XML
¾ Une grammaire définie la syntaxe d’un langage, c’est-à-dire l’organisation de ces balises. Un document XML sera donc compréhensible si sa grammaire est définie
¾ La DTD définira aussi des contraintes portant sur la sémantique, la structure et les valeurs applicables pour un élément du document
¾ L’opération de vérification de conformité entre le document XML et la DTD est effectuée par le processeur (ou parseur) XML
¾ Pourquoi utiliser une DTD :
? C’est le moyen de déclarer de nouvelles balises et spécifier des contraintes sur ces balises
? C’est la possibilité pour une application de savoir quel document XML produire et quoi lire
? C’est la possibilité d’assurer l’interopérabilité entre applications en définissant des règles d’échanges communes
? C’est la possibilité de valider les flux XML entrants d’un programme
¾ Une DTD peut se présenter sous deux formes : interne ou externe
¾ DTD interne : la DTD est définie dans le document XML
¾ DTD externe : la DTD est référencée (Nom et URL) dans le prologue du document XML via la balise DOCTYPE
¾ Des références internes ou externes à des DTD peuvent figurer au sein d’un même document XML
¾ Les définitions des éléments et des attributs figurant dans les DTD internes et externes se complètent tant qu’il n’y a pas de doublons
¾ Toutefois, s’il y a des doublons dans plusieurs DTD, c’est la DTD interne qui sera traitée prioritairement
¾ La DTD contient la description des éléments et des attributs qui seront acceptés dans le document XML
¾ Une déclaration d’élément prend la forme :
[nom de l’élément] ([contenu de l’élément ou type])>
Exemple
…
…
Rappel : Le nom de l’élément ne doit pas contenir de caractère « espace », on peut utiliser les caractères « - » ou « _ »
¾ La déclaration de l’élément implique de définir le type de données qu’il contient, à choisir parmi 5 types :
? Liste de sous éléments appelée « modèle de contenu »
(cf exemple précédent)
? Type « EMPTY »
? Type « ANY »
? #PCDATA
? Contenu mixte
¾ Le type modèle de contenu indique les sous éléments composants l’élément déclaré
¾ Pour chacun de ces sous éléments, une déclaration d’élément distincte doit apparaître à la suite de la DTD
Élément racine composé de
DESTINATAIRE,
EXPEDITEUR, OBJET et
CORPS
…
Déclaration distincte de l’élément
¾ Des symboles permettent de spécifier des contraintes (ordre d’apparition, nombre d’occurrences…) sur les sous éléments :
Symbole | Utilisation | Exemple | Signification |
? | Indique qu’un élément peut apparaître 0 ou 1 fois |
(NOM, PRENOM, VILLE?)> Ou
(PRENOM, VILLE)?> | - L’élément Personne peut contenir VILLE et si c’est le cas VILLE ne peut qu’apparaître qu’une fois - Même signification pour PRENOM et VILLE |
* | Indique qu’un élément peut apparaître 0 ou plusieurs fois |
(NOM, PRENOM, VILLE*)> Ou
(PRENOM, VILLE)*> | - L’élément Personne peut contenir VILLE et si c’est la cas VILLE peut apparaître plusieurs fois - Même signification pour PRENOM et VILLE |
+ | Indique qu’un élément peut apparaître une ou plusieurs fois |
(NOM, PRENOM, VILLE+)> Ou
(PRENOM, VILLE)+> | - L’élément Personne doit contenir au moins 1 fois VILLE - Même signification pour PRENOM et VILLE |
Symbole | Utilisation | Exemple | Signification |
[Aucun symbole] | Indique qu’un élément doit apparaître une seule fois |
| - L’élément Personne doit contenir NOM, PRENOM et VILLE une seule fois |
¾ Dans la déclaration du modèle de contenu on peut utiliser plusieurs types de contraintes :
¾ Le type « EMPTY » permet de définir un élément vide (ne contenant pas de donnée mais il peut porter des attributs)
¾ Le type « ANY » indique que l’élément peut contenir n’importe quel contenu autorisé par la DTD et dans n’importe quel ordre
¾ Le type « #PCDATA » (Parsed Characters Data) indique que les caractères contenus dans l’élément seront analysés par le processeur XML. A différencier de #CDATA (Characters Data) qui permet d’ignorer le contenu de l’élément
…
Dupont Jean l’élément DESTINATAIRE sera
analysé par le processeur XML. Donc il ne peut contenir des caractères spéciaux tels que
« & » ou « > »
¾ Le type contenu mixte « | » permet de choisir un type de contenu parmi une
liste prédéfinie
dupont
Dupont
Il est à noter que dans un contenu mixte #PCDATA doit toujours être déclaré en premier
¾ Le document XML peut être composée d’entités qui correspondent à des « unités de stockage ». Chaque entité est identifiée par un nom et son contenu peut représenter un caractère aussi bien qu’un fichier externe
¾ La balise entité peut être utilisée pour des abréviations ou pour stocker des données autres que textuelles (images, vidéo…)
¾ L’utilisation de cette balise s’effectue en 2 étapes :
? Déclaration d’entités dans la DTD : indique avec quoi il faut remplir l’entité
? Référence d’entités dans le document XML : permet de retrouver le contenu de l’entité et l’utiliser à l’endroit souhaité
¾ Pour définir une abréviation par exemple « XML», on déclare une entité (balise ENTITY) dans la DTD nommée XML auquel on associe la chaîne de caractère « eXtensible Marking up Language »
L’entité se nomme XML et contient la chaîne « eXtentsible Marking up
Language »
Attention : ce délimiteur commence par
¾ Pour faire référence à l’entité XML dans le document XML, on utilise son nom précédé du symbole « & » et terminé par le point-virgule « ; »
¾ La référence à l’entité sera ensuite interprétée et remplacée par son contenu
¾ Il n’y a pas de limitation sur le nombre d’entités que l’on peut créer, toutefois il existe 5 entités prédéfinies :
Entités | Caractères remplacés |
|
|
> | > |
& | & |
' | ‘ |
" | « |
¾ On peut utiliser ces entités prédéfinies pour représenter des caractères interdits dans les données tels que « & », « > » ou «
if note
La notation est incorrecte car le caractère «
if note
En utilisant l’entité prédéfinie remplaçant le caractère «
¾ Les entités ne concernent pas seulement des abréviations mais aussi des déclarations de DTD. On parle d’entités paramètres ou d’entités DTD
¾ Les entités paramètres permettent de réutiliser des DTD existantes pour les enrichir ou ajouter de nouvelles spécifications
¾ Une entité paramètre se déclare dans la DTD :
Utilisation du caractère
« % » et non « & »
¾ La balise entité utilisée pour les abréviations ou les DTD est appelée entité analysée
¾ Mais il y a aussi l’entité non analysée souvent appelée entité binaire car elle contient des données binaires comme des images, des vidéos…
¾ Par exemple pour référencer un fichier image, on déclare une entité binaire à laquelle on associe l’emplacement du fichier et un format
Le mot-clé SYSTEM est un pointeur
Le mot-clé NDATA signale que les données externes ne sont pas des
qui définit l’emplacement du données XML. En l’occurrence dans l’exemple, les données sont du type GIF
contenu de l’entité
¾ Pour faire référence à l’entité binaire (exemple : monimage) il faut la déclarer en tant que valeur d’attribut au sein d’un élément. Il faut indiquer
le nom de l’entité (sans le « & » et « ; »)
Cette notation est incorrecte La valeur de l’attribut photo fait appel à l’entité binaire « monimage ». Noter que pour l’entité binaire, on utilise simplement le nom de l’entité et non la notation « &[nom entité];
Déclaration de l’entité binaire
« monimage » ainsi que du format GIF
¾ La référence à l’entité binaire sera ensuite remplacée par son contenu et traitée par la commande de la balise NOTATION
¾ L’entité binaire peut être applicable sur tout type de fichier y compris des animations flash ou des vidéos
L’entité binaire « animation » provoquera la lecture de l’animation flash « »
Il est à noter que le document XML ne doit contenir que l’appel ou le référencement de l’entité
¾ Une déclaration d’attributs prend la forme :
| Tout comme l’élément, le nom de l’attribut ne doit pas contenir de caractère « espace », on peut |
Exemple
utiliser les caractères « - » ou « _ »
¾ Le nom de l’élément est l’élément auquel s’applique la définition de l’attribut
¾ Les options permettent de définir si l’attribut est obligatoire ou explicite
¾ Défaut correspond à la valeur par défaut attribuée à l’attribut
¾ Le type permet de définir des critères sur la valeur de l’attribut ou le type de données requis (caractères ou autres). Le type de l’attribut est à choisir parmi une liste prédéfinie :
? CDATA
? ENTITY ou ENTITIES
? NMTOKEN ou NMTOKENS
? NOTATION
? Énumération
? ID, IDREF ou IDREFS
Type | Utilisation | Exemple (DTD) | Exemple (XML) |
NMTOKEN | La valeur de l'attribut est une combinaison quelconque de caractères qui peuvent être des lettres, des chiffres, des points, des barres obliques, des soulignés ou des deux-points. Il permet aussi d'affecter un nom symbolique à l'attribut tel qu'un format de date, un format de fichier ou encore une abréviation. |
NMTOKEN #REQUIRED> |
Ce fichier représente la page d'accueil de ce répertoire épertoire>
|
NMTOKENS | Identique à NMTOKEN mais autorise plusieurs valeurs séparées par des espaces |
NMTOKENS #REQUIRED> |
61" > Basse-Normandie égion>
|
¾ Un attribut de type ID permet d’attribuer un identifiant à un élément. Cet élément peut être ensuite référencé dans une autre partie du même document en utilisant un attribut de type IDREF. Les identifiants permettent de lier différentes parties d’un document XML et réduire la saisie de données dans un document
¾ L’exemple ci-dessous permet de définir des personnes et leur lien de parenté en utilisant les types ID et IDREF
¾ Le document XML respectant la DTD, contient la définition de deux personnes (Adam et Caïn) à qui on attribue un identifiant (respectivement « A » et « B »), puis on précise que A est parent de B
l’identifiant :
ID « A » => « Adam »
ID « B » => « Caïn »
¾ Il est à noter des contraintes sur l’utilisation des identifiants (ID et IDREF)
Contrainte | Exemple (DTD) | Exemple (XML) |
Les ID sont uniques pour l’ensemble du document XML |
#REQUIRED>
| Cette notation n’est pas valide :
Cette notation est valide :
|
La valeur de l’ID doit toujours commencer par une lettre |
| invalide est valide |
Contrainte | Exemple (DTD) | Exemple (XML) |
On ne peut utiliser l’option #FIXED avec un attribut ID |
#REQUIRED>
| invalide Cette notation est invalide :
On comprend par ces exemples qu’on ne peut utiliser l’option #FIXED avec un attribut ID |
Un élément ne peut avoir plus d’un ID |
| invalide est valide |
¾ A la déclaration de l’attribut on peut ajouter des « options » pour indiquer le caractère obligatoire ou optionnel de l’attribut. On peut choisir parmi une liste d’options :
? #REQUIRED
? #IMPLIED
? #FIXED valeur
Les DTD et schémas XML – Les DTD
Type | Utilisation | Exemple (DTD) | Exemple (XML) |
#REQUIRED | L'attribut doit obligatoirement avoir une valeur explicite |
| invalide est valide |
#IMPLIED | L'attribut est optionnel |
| est valide est valide |
#FIXED valeur | L'attribut doit avoir la valeur indiquée |
|
“MicroApp“/> invalide
“Eyrolles“/> est valide |
Les DTD et schémas XML – Les DTD
¾ Plusieurs attributs concernant un élément peuvent être déclarés au sein de la même balise ATTLIST :
[nom de l’élément] [nom de l’attribut1] [type] [options] [défaut] [nom de l’élément] [nom de l’attribut2] [type] [options] [défaut]
…> Le rappel du nom de l’élément n’est pas obligatoire
¾ Par exemple :
¾ Les « espaces de nommage » (ou namespaces) est une recommandation du
W3C dont l’objectif est :
? distinguer les éléments et les attributs provenant de différents vocabulaires (exemple jaguar : faune ou automobile) et lever les ambiguïtés éventuelles sur l’intitulé de la balise
? Regrouper les éléments et les attributs corrélés de manière à ce
que la réutilisation soit plus facile
¾ Un document contient les informations générales concernant l’entreprise (nom, adresse, raison sociale…) :
¾ A l’aide des espaces de nommage on va pouvoir différencier les balises en utilisant la notation et
¾ L’espace de nommage « personne » pourra être déclaré de la façon suivante :
L’URI de l’espace de nommage peut être fictive car elle n’est pas vérifiée, toutefois elle pointe généralement sur la grammaire de l’espace de nommage (DTD ou schéma XML)
¾ Ensuite on pourra préfixer l’élément « nom » soit par « personne » ou « entreprise », ce qui signifie la balise « nom » appartient à l’espace de nommage
¾ Les espaces de nommage peuvent être déclarés dans le document XML à l’aide de l’attribut xmlns
Universal Resource Identifier : correspond à l’emplacement de l’espace de noms, généralement un fichier DTD ou schéma XML. Toutefois, l’emplacement de l’espace de nom peut être fictif car il n’est pas vérifié
Cette notation dans la balise de déclaration est optionnelle, on aurait pu aussi indiquer :
¾ La déclaration de l’espace de nom peut figurer dans tout élément du document
XML, ou pour plus de clarté et de commodité dans l’élément racine
¾ Les éléments appartenant à un espace de nom se distinguent des autres éléments par l’ajout d’un préfixe symbolisant cette singularité. Les préfixes se placent au sein de la balise XML avant le nom de l’élément et séparés par un
« : »
[donnée] Élément>
¾ Le nom du préfixe peut être constitué de lettres, caractères accentués, tirets
(« _ ») ou de chiffres
¾ Un espace de nommage peut aussi figurer dans la DTD et en particulier dans la définition de l’attribut :
[nom de l’élément] ([contenu de l’élément ou type])>
[nom de l’élément] xmlns:Espace_de_nom CDATA [options] “[URI]“>
Emplacement de l’espace de
¾ Soit par exemple : nommage doit apparaître en valeur
par défaut
….
Dupont et Cie
Atelier Création d’une DTD
¾ Les DTD répondent en grande partie au besoin de définir des contraintes et des règles de validation sur les documents XML. Toutefois, ils présentent des limitations qui les rendent obsolètes quand il s’agit de détailler plus finement les règles de validation :
? La syntaxe des DTD n’est pas en XML : Le fait d’écrire un document XML en utilisant une syntaxe différente est quelque peu contradictoire
? Le typage de données pauvre : la DTD présente peu de possibilité de typer des données (CDATA, NMTOKEN et #PCDATA)
? La gestion des espaces de nom est limitée
? On ne peut définir précisément le nombre de sous éléments (0-5 ou 1-15)
¾ A partir de février 2000 le W3C a proposé une nouvelle norme, le schéma XML ou XSD (eXtensible Schema Definition) dont l’objectif est de remplacer à terme la DTD. Les points forts des schémas XML sont :
? Extensibles : on peut créer de nouveaux types de données ou enrichir les types existants
? Écrits en XML
? Capables de définir des éléments de même nom mais de contenu différent
? Plus riches : on peut détailler de manière précise le nombre d’occurrence de sous éléments (1-5 ou 0-21)
? Capables de gérer de nouvelles notions telles que l’héritage des éléments ou des attributs
¾ Prenons le document XML ci-dessous :
¾
précis
¾ Pour se référer à un schéma XML, il faut le préciser dans l’entête du document
dans le document
¾ : indique que le document est une instance d’un schéma XML (notation obligatoire)
¾ : indique le nom du schéma XML (.xsd) qui valide le document (schemaLocation contient la paire de valeurs : espace de noms et fichier de définitions du document)
¾ Pour déclarer un schéma XML on utilise l’élément associé à des paramètres :
¾ : les types utilisés pour construire le schéma XML viennent de cet espace de nom (notation obligatoire)
¾ : les éléments définis dans le schéma XML sont contenus dans cet espace de nom cible
¾ : correspond à l’espace de nom par défaut
¾ : tous les documents qui se réfèrent à ce schéma XML doivent répondre à l’espace de nom défini
¾ Pour définir un élément on utilise la balise :
xsd:element name= “[nom élément]“ type= “[xsd:type]“ minoccurs= “[0 à n]“ maxoccurs= “[0 à n]“>
…
xsd:element>
¾ Les attributs optionnels minoccurs et maxoccurs permettent de préciser le nombre d’occurrences min et max de sous éléments. Pour définir un nombre indéterminé d’occurrences il faut utiliser le mot clé « unbounded »
¾ On peut établir une correspondance entre les notations DTD et XSD :
Notation XSD | Notation DTD |
minoccurs ="0" maxoccurs ="unbounded" />
xsd:element> |
|
… minoccurs ="0" maxoccurs ="1" /> … |
|
¾ On peut établir une correspondance entre les notations DTD et XSD :
Notation XSD | Notation DTD |
…
… |
|
…
… |
|
¾ Pour définir un attribut on utilise la balise :
xsd:attribute name= “[nom attribut]“ type= “[xsd:type]“ use= “[options]“ value= “[valeur par défaut]“>
…
xsd:attribute>
¾ L’attribut use permet de définir des contraintes sur la valeur de l’attribut, identiques à la DTD soit : required (obligatoire), implied (optionnel) ou fixed (valeur fixe)
¾ Et tout comme la DTD il est possible d’indiquer une valeur par défaut (value)
¾ Ci-dessous un exemple de déclaration d’un attribut :
¾ La norme XSD définit près de 40 types de données : string, integer, decimal, float, date, year, boolean, CDATA…
¾ Toutefois, il est possible de créer un nouveau type de données en utilisant la balise . Il est à noter que la définition d’élément et de sous éléments implique la création d’un nouveau type de données
¾ Par exemple pour créer un type « typeEntrée » d’annuaire :
¾ Puis on associe le nouveau type de données à l’élément entrée d’annuaire
¾ On peut aussi étendre un type de donnée existant en ajoutant un élément, c’est un type dérivé. Par exemple, on va étendre le type « typeEntrée » et créer le nouveau type « entréeAvecadresse ». On utilise les balises et
¾ Le tableau ci-dessous présente l’ensemble des types de données définis par XSD :
Atelier
Transformation d’une DTD en schéma XML
Questions ?
3 | |
Introduction Avril 2003 Direction des systèmes d'information |
5 Introduction (2/2) | |
? Le document XML contient les données (notion de document bien formé) ? Les DTD ou les schémas XML permettent de décrire des contraintes sur ce que peut contenir un document XML (notion de document valide) ? Les langages de transformations ont pour objet de tr |