116
Introduction au Introduction au XML XML Choopan Rattanapoka Choopan Rattanapoka ( ( [email protected] [email protected] ) ) Université Louis-Pasteur, Université Louis-Pasteur, Starsbourg Starsbourg

Introduction au XML

Embed Size (px)

DESCRIPTION

Introduction au XML. Choopan Rattanapoka ( [email protected] ) Université Louis-Pasteur, Starsbourg. Qu’est-ce c’est XML. XML « e X tended M arkup L anguage » XML est une spécification proposée par le W3C en 1998 XML est un langage de balises comme HTML - PowerPoint PPT Presentation

Citation preview

Page 1: Introduction au XML

Introduction au Introduction au XMLXML

Choopan RattanapokaChoopan Rattanapoka(([email protected]@icps.u-strasbg.fr))

Université Louis-Pasteur, Université Louis-Pasteur, StarsbourgStarsbourg

Page 2: Introduction au XML

Qu’est-ce c’est XMLQu’est-ce c’est XML

XML « eXML « eXXtended tended MMarkup arkup LLanguage »anguage » XML est une spécification proposée par le XML est une spécification proposée par le

W3C en 1998W3C en 1998 XML est XML est un langage de balisesun langage de balises comme comme

HTMLHTML XML a été conçu pour XML a été conçu pour décrire des donnéesdécrire des données Des étiquettes de XML Des étiquettes de XML ne sont pas ne sont pas

prédéfiniesprédéfinies. Vous devez définir vos propres . Vous devez définir vos propres étiquettes étiquettes

Page 3: Introduction au XML

XML VS HTMLXML VS HTML

XML a été conçu pour porter des données.XML n’est pas un remplacement pour le HTML

XMLXML été conçu été conçu pour décrire des donnéespour décrire des données et pour et pour se concentrer surse concentrer sur ce que sont les données ce que sont les données..

HTMLHTML a été conçu a été conçu pour montrer des donnéespour montrer des données et et pour se concentrer surpour se concentrer sur à quoi les données à quoi les données ressemblentressemblent

HTMLHTML est au sujet de montrer l'information, alors est au sujet de montrer l'information, alors que que XMLXML est au sujet de décrire l'information est au sujet de décrire l'information

Page 4: Introduction au XML

XML ne fait rienXML ne fait rien

XML a été créé pour structurer, XML a été créé pour structurer, stocker et envoyer l'information stocker et envoyer l'information

XML a été conçu pour ne rien faire

<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>

Page 5: Introduction au XML

Pourquoi XML ?Pourquoi XML ?

XML peut séparer des données de HTMLXML peut séparer des données de HTML XML est utilisé pour échanger des donnéesXML est utilisé pour échanger des données XML peut être utilisé pour partager des XML peut être utilisé pour partager des

donnéesdonnées XML peut être utilisé pour stocker des XML peut être utilisé pour stocker des

donnéesdonnées XML peut être utilisé pour créer des XML peut être utilisé pour créer des

nouvel langagesnouvel langages WAP, WML sont créés en utilisant XMLWAP, WML sont créés en utilisant XML

Page 6: Introduction au XML

Document bien forméDocument bien formé Un document XML est dit "bien formé"

(well-formed) s'il est constitué d'un prologue et d'un élément racine (noeud racine).

Le prologue : Il s'agit de la ligne d'introduction d'un document XML. <?xml version="1.0" encoding="iso-8859-1“?>

L’élément racine :<?xml version="1.0" encoding="iso-8859-1“?><note>….</note>

S’il y a une balise ouvrant, il faut toujours avoir une balise fermant

Page 7: Introduction au XML

Exemple : XMLExemple : XML<?xml version="1.0" encoding="iso-8859-1"?><librairie>

<livre><titre>CSS 2</titre><auteur>Daniel

GLAZMAN</auteur><editeur>Eyrolles</editeur>

</livre><livre>

<titre>Formation à... XML</titre><auteur>Michael J.

YOUNG</auteur><editeur>Microsoft

Press</editeur></livre><livre>

<titre>ASP.Net – To the .Point</titre>

<auteur>Grégory RENARD</auteur>

<editeur>ASP-PHP.net</editeur></livre>

</librairie>

Page 8: Introduction au XML

Le Résutat du XML dans Le Résutat du XML dans FireFoxFireFox

Page 9: Introduction au XML

Jeu de caractèresJeu de caractères

Page 10: Introduction au XML

DTD : Document ValideDTD : Document Valide

Un document XML est dit Un document XML est dit validevalide s’il s’il est bien est bien forméformé et et il possède une DTDil possède une DTD (Document Type Definition)(Document Type Definition)

L’utilisation d’une L’utilisation d’une DTDDTD est est facultativefacultative mais nécessaire si l’on mais nécessaire si l’on souhaite valider un document XMLsouhaite valider un document XML

La DTD permet de définir un La DTD permet de définir un ensemble de règles pour la structure ensemble de règles pour la structure d’un document XML et la d’un document XML et la hiérarchisation des donnéeshiérarchisation des données

Page 11: Introduction au XML

Structure d’une DTDStructure d’une DTD

Il y a 2 types de DTDIl y a 2 types de DTD DTD externeDTD externe DTD interneDTD interne

DTD externeDTD externe Doit être enregistrée dans un fichier texte Doit être enregistrée dans un fichier texte

portant l’extension .dtdportant l’extension .dtd La déclaration de l’utilisation d’une DTD La déclaration de l’utilisation d’une DTD

externe doit se faire avant l’élément racine et externe doit se faire avant l’élément racine et après le prologueaprès le prologue

<!DOCTYPE noeudracine SYSTEM <!DOCTYPE noeudracine SYSTEM "URI DTD URI DTD externeexterne">>

Page 12: Introduction au XML

Structure d’une DTDStructure d’une DTD DTD interneDTD interne

Doit être déclarée avant l’élément racine et après Doit être déclarée avant l’élément racine et après le prologuele prologue

Elle est introduite par l’instruction DOCTYPE Elle est introduite par l’instruction DOCTYPE immédiatement suivie par le nom que porte immédiatement suivie par le nom que porte l’élément racinel’élément racine

ExempleExemple<?xml version=<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE <!DOCTYPE nœudracinenœudracine [ [

instructions de la DTDinstructions de la DTD]>]><nœudracine><nœudracine>……..</nœudracine></nœudracine> Chaque instruction de la DTD commence par Chaque instruction de la DTD commence par <!<!

Page 13: Introduction au XML

Déclarations utilisées dans Déclarations utilisées dans la syntaxe d’une DTDla syntaxe d’une DTD

!ATTLIST!ATTLIST : Définit les listes : Définit les listes d’attributsd’attributs

!ELEMENT!ELEMENT : Définit les listed : Définit les listed d’élémentsd’éléments

!ENTITY!ENTITY : Définit les entités : Définit les entités !DOCTYPE!DOCTYPE : Définit une DTD externe : Définit une DTD externe

ou interneou interne !NOTATION!NOTATION : Définit les entités non : Définit les entités non

XMLXML

Page 14: Introduction au XML

La spécification de contenu La spécification de contenu d’éléments d’une DTDd’éléments d’une DTD

ANY ANY :: Indique que l’élément défini peut Indique que l’élément défini peut avoir tout type de contenu légalavoir tout type de contenu légal <!ELEMENT nom_element ANY><!ELEMENT nom_element ANY>

EMPTYEMPTY : Indique que l’élément défini ne : Indique que l’élément défini ne peut pas avoir de contenu peut pas avoir de contenu <!ELEMENT nom_element EMPTY><!ELEMENT nom_element EMPTY>

(#PCDATA)(#PCDATA) : Indique que l’élément : Indique que l’élément défini peut contenir une chaîne de défini peut contenir une chaîne de caractères. caractères. <!ELEMENT nom_element (#PCDATA)><!ELEMENT nom_element (#PCDATA)>

Page 15: Introduction au XML

La spécification de contenu La spécification de contenu d’éléments d’une DTDd’éléments d’une DTD

( …, … ) ( …, … ) :: Délimite une liste de contenu en Délimite une liste de contenu en précisant le nom et l’ordre des nœuds enfantsprécisant le nom et l’ordre des nœuds enfants <!ELEMENT nom_elmt_parent (noeud1, noeud2)><!ELEMENT nom_elmt_parent (noeud1, noeud2)>

,, : Opérateur de liaison ET. Indique que les : Opérateur de liaison ET. Indique que les nœuds enfants déclarés (dans une liste) sont nœuds enfants déclarés (dans une liste) sont tous obligatoires et dans l’ordre de leur tous obligatoires et dans l’ordre de leur déclarationdéclaration <!ELEMENT nom_elmt_parent (noeud1, noeud2)><!ELEMENT nom_elmt_parent (noeud1, noeud2)>

||: Opérateur de liaison OU. Indique qu’un seul : Opérateur de liaison OU. Indique qu’un seul des nœuds enfants déclarés peut être utilisé des nœuds enfants déclarés peut être utilisé <!ELEMENT nom_elmt_parent (noeud1 | noead2)><!ELEMENT nom_elmt_parent (noeud1 | noead2)>

Page 16: Introduction au XML

La spécification de contenu La spécification de contenu d’éléments d’une DTDd’éléments d’une DTD

? ? :: Indique que le nœud enfant est optionnel; Il Indique que le nœud enfant est optionnel; Il peut être utilisé 0 ou 1 fois. peut être utilisé 0 ou 1 fois. <!ELEMENT nom_elmt_parent (noeud1?, noeud2)><!ELEMENT nom_elmt_parent (noeud1?, noeud2)>

++ : Indique que le nœud enfant peut être utilisé : Indique que le nœud enfant peut être utilisé une ou plusieurs foisune ou plusieurs fois <!ELEMENT nom_elmt_parent (noeud1+, noeud2)><!ELEMENT nom_elmt_parent (noeud1+, noeud2)>

* * : Indique que le nœud enfant est optionnel. Il : Indique que le nœud enfant est optionnel. Il peut être utilisé 0, 1 ou plusieurs foispeut être utilisé 0, 1 ou plusieurs fois <!ELEMENT nom_elmt_parent (noeud1 | noead2*)><!ELEMENT nom_elmt_parent (noeud1 | noead2*)>

Page 17: Introduction au XML

La spécification de contenu La spécification de contenu d’éléments d’une DTDd’éléments d’une DTD

SiSi ?, +, * ?, +, * est placé après les est placé après les parenthèses d’une liste de contenu, il parenthèses d’une liste de contenu, il s’applique à tout le contenus’applique à tout le contenu <!ELEMENT nom_elmt_parent (#PCDATA <!ELEMENT nom_elmt_parent (#PCDATA

| noeud1 | noeud2)*>| noeud1 | noeud2)*> <!ELEMENT nom_elmt_parent (noeud1, <!ELEMENT nom_elmt_parent (noeud1,

noeud2, noeud3)+>noeud2, noeud3)+>

Page 18: Introduction au XML

Exemple : DTDExemple : DTD Supposons, La description des livres d’une Supposons, La description des livres d’une

librairie librairie Stocké des informations sur titre, auteur, éditeur, Stocké des informations sur titre, auteur, éditeur,

prixprix C’est possible d’avoir plusieurs auteur pour un C’est possible d’avoir plusieurs auteur pour un

livrelivre Le prix est optionnelLe prix est optionnel Le prix seront classés par catégorie Le prix seront classés par catégorie

cat1 pour les livres dont le prix est inférieur à 20€cat1 pour les livres dont le prix est inférieur à 20€ cat2 pour les livres dont le prix est entre 20€ et 40€cat2 pour les livres dont le prix est entre 20€ et 40€ cat3 pour les livres dont le prix est supérieur à 40€cat3 pour les livres dont le prix est supérieur à 40€

Définir en <cat1></cat1>, <cat2></cat2>, <cat3></cat3>Définir en <cat1></cat1>, <cat2></cat2>, <cat3></cat3>

Page 19: Introduction au XML

Exemple : DTDExemple : DTD

Nœud racine est Nœud racine est librairielibrairie

<!DOCTYPE <!DOCTYPE librairielibrairie [ [.. Instructions .... Instructions ..

]>]>

Page 20: Introduction au XML

Exemple : DTDExemple : DTD

Dans notre librairie peut avoir Dans notre librairie peut avoir 0 ou 0 ou plusieur livresplusieur livres

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>…..…..

]>]>

Page 21: Introduction au XML

Exemple : DTDExemple : DTD

L’information d’un livre « titre, auteur, L’information d’un livre « titre, auteur, éditeur, prix »éditeur, prix »

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur, <!ELEMENT livre (titre, auteur, éditeur, prix)>éditeur, prix)>

]>]>

Page 22: Introduction au XML

Exemple : DTDExemple : DTD

Un livre peut avoir Un livre peut avoir 1 ou plusieurs 1 ou plusieurs auteurauteur

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur<!ELEMENT livre (titre, auteur++, , éditeur, prix)>éditeur, prix)>

]>]>

Page 23: Introduction au XML

Exemple : DTDExemple : DTD

Le prix d’un livre est Le prix d’un livre est optionneloptionnel

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, <!ELEMENT livre (titre, auteur+, éditeur, prixéditeur, prix??)>)>

]>]>

Page 24: Introduction au XML

Exemple : DTDExemple : DTD

titre, auteur, éditeurtitre, auteur, éditeur sont stockés comme sont stockés comme chaîne de caractèreschaîne de caractères

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur, <!ELEMENT livre (titre, auteur+, éditeur, prix?)>prix?)>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

<!ELEMENT auteur (#PCDATA)><!ELEMENT auteur (#PCDATA)>

<!ELEMENT éditeur (#PCDATA)><!ELEMENT éditeur (#PCDATA)>

]>]>

Page 25: Introduction au XML

Exemple : DTDExemple : DTD

prixprix sont stockés soit cat1, cat2 ou cat3 sont stockés soit cat1, cat2 ou cat3<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur, <!ELEMENT livre (titre, auteur+, éditeur, prix?)>prix?)>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

<!ELEMENT auteur (#PCDATA)><!ELEMENT auteur (#PCDATA)>

<!ELEMENT éditeur (#PCDATA)><!ELEMENT éditeur (#PCDATA)>

<!ELEMENT prix (cat1 | cat2 | cat3)><!ELEMENT prix (cat1 | cat2 | cat3)>

]>]>

Page 26: Introduction au XML

Exemple : DTDExemple : DTD

cat1, cat2 et cat3cat1, cat2 et cat3 sont éléments qui ont sont éléments qui ont non non valeurvaleur

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur, prix?)><!ELEMENT livre (titre, auteur+, éditeur, prix?)>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

<!ELEMENT auteur (#PCDATA)><!ELEMENT auteur (#PCDATA)>

<!ELEMENT éditeur (#PCDATA)><!ELEMENT éditeur (#PCDATA)>

<!ELEMENT prix (cat1 | cat2 | cat3)><!ELEMENT prix (cat1 | cat2 | cat3)>

<!ELEMENT cat1 EMPTY><!ELEMENT cat1 EMPTY>

<!ELEMENT cat2 EMPTY><!ELEMENT cat2 EMPTY>

<!ELEMENT cat3 EMPTY><!ELEMENT cat3 EMPTY>

]>]>

Page 27: Introduction au XML

DTD : Définition DTD : Définition d’attributsd’attributs

Les attributs XML ont la même Les attributs XML ont la même fonction que les attributs HTMLfonction que les attributs HTML

On définit les attributs dans une On définit les attributs dans une DTD avec l’instruction DTD avec l’instruction <!ATTLIST<!ATTLIST

La syntaxe générale d’une La syntaxe générale d’une déclaration d’attribut est la déclaration d’attribut est la suivante :suivante : <!ATTLIST nom_element nom_attribut TypeAttribut <!ATTLIST nom_element nom_attribut TypeAttribut

#OptionAttribut>#OptionAttribut>

Page 28: Introduction au XML

Liste des valeurs par Liste des valeurs par typestypes (val1 | val2 | etc )(val1 | val2 | etc ) : Une suite de valeurs séparée par un trait : Une suite de valeurs séparée par un trait

vertical. L’attribut ne pourra prendre qu’une seule de ces valeurs.vertical. L’attribut ne pourra prendre qu’une seule de ces valeurs. <!ATTLIST nom_elmt nom_attrib (v1 | v2)><!ATTLIST nom_elmt nom_attrib (v1 | v2)>

NOTATION (val1 | val2 | etc)NOTATION (val1 | val2 | etc) : Une suite de noms de notation : Une suite de noms de notation séparé par un trait vertical. Chaque nom doit correspondre séparé par un trait vertical. Chaque nom doit correspondre exactement à un nom de notation déclaré dans la DTD.exactement à un nom de notation déclaré dans la DTD.

CDATACDATA : Accept n’importe quel chaîne de caractères : Accept n’importe quel chaîne de caractères <!ATTLIST nom_elmt nom_attrib CDATA><!ATTLIST nom_elmt nom_attrib CDATA>

ENTITYENTITY : Définit comme valeur d’attribut une entité non parsée : Définit comme valeur d’attribut une entité non parsée déclarée dans une DTD.déclarée dans une DTD. <!ATTLIST nom_elmt nom_attrib ENTITY #option><!ATTLIST nom_elmt nom_attrib ENTITY #option>

ENTITIESENTITIES : Définit comme valeur d’attribut plusieurs entités non : Définit comme valeur d’attribut plusieurs entités non parsées déclarées dans une DTDparsées déclarées dans une DTD <!ATTLIST nom_elmt nom_attrib ENTITIES #option><!ATTLIST nom_elmt nom_attrib ENTITIES #option>

Page 29: Introduction au XML

Liste des valeurs par Liste des valeurs par typestypes

IDID : Indique que l’attribut possède une valeur : Indique que l’attribut possède une valeur unique pour chaque élément. La valeur peut unique pour chaque élément. La valeur peut contenir une ou plusieurs lettres, des chiffres, des contenir une ou plusieurs lettres, des chiffres, des points, des tiret haut ou bas, et un double pointpoints, des tiret haut ou bas, et un double point <!ATTLIST nom_elmt nom_attrib ID #option><!ATTLIST nom_elmt nom_attrib ID #option>

IDREFIDREF : Indique que la valeur de l’attribut se : Indique que la valeur de l’attribut se réfère à un ID d’un autre attributréfère à un ID d’un autre attribut <!ATTLIST nom_elmt nom_attrib IDREF #option><!ATTLIST nom_elmt nom_attrib IDREF #option>

IDREFSIDREFS : Indique à IDREF excepté que la valeur : Indique à IDREF excepté que la valeur de l’attribut peut se référer à plusieurss IDde l’attribut peut se référer à plusieurss ID <!ATTLIST nom_elmt nom_attrib IDREFS #option><!ATTLIST nom_elmt nom_attrib IDREFS #option>

Page 30: Introduction au XML

Liste des valeurs par Liste des valeurs par typestypes

NMTOKENNMTOKEN : Indique que la valeur de l’attribut : Indique que la valeur de l’attribut est une chaîne de caractères pouvant contenir est une chaîne de caractères pouvant contenir une ou plusieurs lettre, des chiffres, des point, une ou plusieurs lettre, des chiffres, des point, des tirets hauts ou bas, et un double point.des tirets hauts ou bas, et un double point. <!ATTLIST nom_elmt nom_attrib NMTOKEN #option><!ATTLIST nom_elmt nom_attrib NMTOKEN #option>

NMTOKENSNMTOKENS : Identique à NMTOKEN excepté : Identique à NMTOKEN excepté que l’attribut peut avoir plusieurs valeurs que l’attribut peut avoir plusieurs valeurs séparées par des espacesséparées par des espaces <!ATTLIST nom_elmt nom_attrib NMTOKENS #option><!ATTLIST nom_elmt nom_attrib NMTOKENS #option>

Page 31: Introduction au XML

Liste des optionsListe des options

"valdefaultvaldefault"     : Définit, pour l’attribut, une valeur : Définit, pour l’attribut, une valeur par défaut. Si la valeur est omise, le parser utilisera par défaut. Si la valeur est omise, le parser utilisera la valeur par défaut indiquée. Mais il est possible la valeur par défaut indiquée. Mais il est possible d’affecter une autre valeur issue de la liste des d’affecter une autre valeur issue de la liste des valeurs déclaréesvaleurs déclarées <!ATTLIST nom_elmt nom_attrib (val1|val2) <!ATTLIST nom_elmt nom_attrib (val1|val2) "val_defautval_defaut">>

#FIXED #FIXED "valdefaut" : Définit, pour l’attribut, une valeur par défaut. Si la valeur est omise, le parser utilisera la valeur par défaut indiquée. Aucune autre valeur n’est admise. <!ATTLIST nom_elmt nom_attrib CDATA #FIXED <!ATTLIST nom_elmt nom_attrib CDATA #FIXED

"val_defautval_defaut">>

Page 32: Introduction au XML

Liste des optionsListe des options

#IMPIED     : Indique que la valeur : Indique que la valeur d’attribut est optionnelle et que le parser d’attribut est optionnelle et que le parser ne fera aucun remplacement si la valeur ne fera aucun remplacement si la valeur est omiseest omise <!ATTLIST nom_elmt nom_attrib (val1|val2) <!ATTLIST nom_elmt nom_attrib (val1|val2) #IMPIED>>

#REQUIRED#REQUIRED : Indique qu’une valeur d’attribut est obligatoire <!ATTLIST nom_elmt nom_attrib (val1|val2) <!ATTLIST nom_elmt nom_attrib (val1|val2)

#REQUIRED>>

Page 33: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Supposons, La description des livres d’une Supposons, La description des livres d’une librairie librairie Stocké des informations sur Stocké des informations sur titre, auteur, éditeur, titre, auteur, éditeur,

prixprix C’est possible C’est possible d’avoir plusieurs auteur pour un livred’avoir plusieurs auteur pour un livre Le prix est optionnel. Et Le prix est optionnel. Et c’est l’attribut de l’élément c’est l’attribut de l’élément

livre livre On ajoute un attribut On ajoute un attribut ISBNISBN, obligatoire de type , obligatoire de type

NMTOKEN,NMTOKEN, pour l’élément pour l’élément livrelivre On ajoute un attribut On ajoute un attribut stock stock pour pour l’élément titrel’élément titre

avec une valeur par défaut « avec une valeur par défaut « nonnon » »

Page 34: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Nœud racine est Nœud racine est librairielibrairie

<!DOCTYPE <!DOCTYPE librairielibrairie [ [.. Instructions .... Instructions ..

]>]>

Page 35: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Dans notre librairie peut avoir Dans notre librairie peut avoir 0 ou 0 ou plusieur livresplusieur livres

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>…..…..

]>]>

Page 36: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

L’information d’un livre « titre, auteur, L’information d’un livre « titre, auteur, éditeur »éditeur »

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur, <!ELEMENT livre (titre, auteur, éditeur)>éditeur)>

]>]>

Page 37: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Un livre peut avoir Un livre peut avoir 1 ou plusieurs 1 ou plusieurs auteurauteur

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur<!ELEMENT livre (titre, auteur++, , éditeur)>éditeur)>

]>]>

Page 38: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Le prix d’un livre est Le prix d’un livre est optionnel optionnel et c’est et c’est l’attribut de l’élément livre l’attribut de l’élément livre qui a des valeur qui a des valeur soit soit cat1cat1, , cat2cat2 ou ou cat3cat3..

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur)><!ELEMENT livre (titre, auteur+, éditeur)>

<!ATTLIST livre prix (cat1|cat2|cat3) <!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED>#IMPIED>

]>]>

Page 39: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

L’ISBN d’un livre est L’ISBN d’un livre est obligatoire obligatoire et c’estet c’est l’attribut de l’élément livrel’attribut de l’élément livre

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur)><!ELEMENT livre (titre, auteur+, éditeur)>

<!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED><!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED>

<!ATTLIST livre ISBN NMTOKEN <!ATTLIST livre ISBN NMTOKEN #REQUIRED>#REQUIRED>

]>]>

Page 40: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Le titre est stocké comme la Le titre est stocké comme la chaîne de caractèreschaîne de caractères

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur)><!ELEMENT livre (titre, auteur+, éditeur)>

<!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED><!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED>

<!ATTLIST livre ISBN NMTOKEN #REQUIRED><!ATTLIST livre ISBN NMTOKEN #REQUIRED>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

]>]>

Page 41: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

Le stock est Le stock est l’attribut de l’élément titre l’attribut de l’élément titre avec avec « non » comme la valeur par défaut« non » comme la valeur par défaut

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur)><!ELEMENT livre (titre, auteur+, éditeur)>

<!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED><!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED>

<!ATTLIST livre ISBN NMTOKEN #REQUIRED><!ATTLIST livre ISBN NMTOKEN #REQUIRED>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

<!ATTLIST titre stock (oui|non) <!ATTLIST titre stock (oui|non) "nonnon">>

]>]>

Page 42: Introduction au XML

Exemple : DTD avec Exemple : DTD avec l’attributl’attribut

auteur et éditeur sont stockés comme auteur et éditeur sont stockés comme la chaîne la chaîne de caractèresde caractères

<!DOCTYPE librairie [<!DOCTYPE librairie [

<!ELEMENT librairie (livre*)><!ELEMENT librairie (livre*)>

<!ELEMENT livre (titre, auteur+, éditeur)><!ELEMENT livre (titre, auteur+, éditeur)>

<!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED><!ATTLIST livre prix (cat1|cat2|cat3) #IMPIED>

<!ATTLIST livre ISBN NMTOKEN #REQUIRED><!ATTLIST livre ISBN NMTOKEN #REQUIRED>

<!ELEMENT titre (#PCDATA)><!ELEMENT titre (#PCDATA)>

<!ATTLIST titre stock (oui|non) <!ATTLIST titre stock (oui|non) "nonnon">>

<!ELEMENT auteur (#PCDATA)><!ELEMENT auteur (#PCDATA)>

<!ELEMENT éditeur (#PCDATA)><!ELEMENT éditeur (#PCDATA)>

]>]>

Page 43: Introduction au XML

Exemple1 : XML + DTDExemple1 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE exemple1 SYSTEM "exemple1.dtd"><exemple1><note><subjet>C'est bon</subjet><from>Moi</from><to>M.A<to>M.B<to>M.C</to><content>Est-ce que c'est bien formé</content></note></exemple1>

Est-ce que ce XML est bien formé ?

Page 44: Introduction au XML

Exemple1 : XML + DTDExemple1 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE exemple1 SYSTEM "exemple1.dtd"><exemple1><note><subjet>C'est bon</subjet><from>Moi</from><to>M.A<to>M.B<to>M.C</to><content>Est-ce que c'est bien formé</content></note></exemple1>

Est-ce que ce XML est bien formé ?

NON

Page 45: Introduction au XML

Exemple1 : XML + DTDExemple1 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE exemple1 SYSTEM "exemple1.dtd"><exemple1><note><subjet>C'est bon</subjet><from>Moi</from><to>M.A</to><to>M.B</to><to>M.C</to><content>Est-ce que c'est bien formé</content></note></exemple1>

Page 46: Introduction au XML

Exemple1 : XML + DTDExemple1 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE exemple1 SYSTEM "exemple1.dtd"><exemple1><note><subjet>C'est bon</subjet><from>Moi</from><to>M.A</to><to>M.B</to><to>M.C</to><content>Est-ce que c'est bien formé</content></note></exemple1>

exemple1.dtd<!ELEMENT exemple1 (note+)><!ELEMENT note (subjet, from, to, content)><!ELEMENT subjet (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT to (#PCDATA)><!ELEMENT content (#PCDATA)>

Est-ce que ce XML est valide ? NON

Page 47: Introduction au XML

Exemple2 : XML + DTDExemple2 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><employee uid="U001" poste="ingénieur"><nom>HYBRID</nom><prénom>Kintaro</prénom><age>25</age></employee><employee poste="rien"><nom>LEBOIS</nom><prénom>Robin</prénom></employee><employee uid="U002" poste="secrétaire"><nom>DE-FRANCE</nom><prénom>Muller</prénom><age>30</age></employee>

Est-ce que ce XML est bien formé ? NON

Page 48: Introduction au XML

Exemple2 : XML + DTDExemple2 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><listemployee><employee uid="U001" poste="ingénieur"><nom>HYBRID</nom><prénom>Kintaro</prénom><age>25</age></employee><employee poste="rien"><nom>LEBOIS</nom><prénom>Robin</prénom></employee><employee uid="U002" poste="secrétaire"><nom>DE-FRANCE</nom><prénom>Muller</prénom><age>30</age></employee></listemployee>

Page 49: Introduction au XML

Exemple2 : XML + DTDExemple2 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE listemployee SYSTEM "employee.dtd"><listemployee><employee uid="U001" poste="ingénieur"><nom>HYBRID</nom><prénom>Kintaro</prénom><age>25</age></employee><employee poste="rien"><nom>LEBOIS</nom><prénom>Robin</prénom></employee><employee uid="U002" poste="secrétaire"><nom>DE-FRANCE</nom><prénom>Muller</prénom><age>30</age></employee></listemployee>

employee.dtd<!ELEMENT listemployee (employee+)><!ELEMENT employee (nom, prénom, age?)><!ATTLIST employee uid ID #REQUIRED><!ATTLIST employee poste (ingénieur|rien) "rien"><!ELEMENT nom (#PCDATA)><!ELEMENT prénom (#PCDATA)><!ELEMENT age (#PCDATA)>

Est-ce que ce XML est valide ?

Page 50: Introduction au XML

Exemple2 : XML + DTDExemple2 : XML + DTD<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE listemployee SYSTEM "employee.dtd"><listemployee><employee uid="U001" poste="ingénieur"><nom>HYBRID</nom><prénom>Kintaro</prénom><age>25</age></employee><employee poste="rien"> manque uid<nom>LEBOIS</nom><prénom>Robin</prénom></employee><employee uid="U002" poste="secrétaire"><nom>DE-FRANCE</nom><prénom>Muller</prénom><age>30</age></employee></listemployee>

employee.dtd<!ELEMENT listemployee (employee+)><!ELEMENT employee (nom, prénom, age?)><!ATTLIST employee uid ID #REQUIRED><!ATTLIST employee poste (ingénieur|rien) "rien"><!ELEMENT nom (#PCDATA)><!ELEMENT prénom (#PCDATA)><!ELEMENT age (#PCDATA)>

Est-ce que ce XML est valide ?

NON

Page 51: Introduction au XML

XML SchemaXML Schema XML Schema lui-même est basé sur XMLXML Schema lui-même est basé sur XML Le but de XML schema est pour décrire la Le but de XML schema est pour décrire la

structure du document XML comme DTDstructure du document XML comme DTD Définit des élément qui peuvent apparaître dans Définit des élément qui peuvent apparaître dans

d’un documentd’un document Définit des attributs qui peuvent apparaître Définit des attributs qui peuvent apparaître

dans d’un documentdans d’un document Définit lequels éléments sont les éléments filsDéfinit lequels éléments sont les éléments fils Définit l’ordre des éléments filsDéfinit l’ordre des éléments fils Définit nombre d’éléments filsDéfinit nombre d’éléments fils Définit des types de données pour les éléments Définit des types de données pour les éléments

et attributset attributs

Page 52: Introduction au XML

XML Schema VS DTDXML Schema VS DTD

Les XML Schemas peuvent remplacer Les XML Schemas peuvent remplacer les DTDs dans le futur proche.les DTDs dans le futur proche.

XML Schemas sont extensibles pour XML Schemas sont extensibles pour le futur modificationle futur modification

XML Schemas sont plus riches que XML Schemas sont plus riches que DTDsDTDs

XML Schemas fournissent des types XML Schemas fournissent des types de donnéesde données

Page 53: Introduction au XML

XML, DTD, XML SchemaXML, DTD, XML Schema<?xml version="1.0"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Hello World</body> </note>

<!ELEMENT note (to, from, heading, body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>

<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace=“monns" xmlns= "monns" ><xs:element name="note"><xs:complexType> <xs:sequence><xs:element name="to" type="xs:string"/><xs:element name="from" type="xs:string"/><xs:element name="heading" type="xs:string"/><xs:element name="body" type="xs:string"/></xs:sequence></xs:complexType></xs:element> </xs:schema>

Page 54: Introduction au XML

XML, DTD, XML SchemaXML, DTD, XML Schema<?xml version="1.0"?><!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Hello World</body> </note>

<?xml version="1.0"?><note xmlns=“monns”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=“monns note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading><body>Don't forget me this weekend!</body> </note>

L’utilisation d’une DTD

L’utilisation d’un schéma XML

Page 55: Introduction au XML

XSD : XML Schema XSD : XML Schema DefinitionDefinition

L’élément <schema> est l’élément L’élément <schema> est l’élément racine pour tout les XML schemasracine pour tout les XML schemas

<?xml version="1.0"?><?xml version="1.0"?><xs:schema><xs:schema> ...... ... ... </xs:schema></xs:schema>

Page 56: Introduction au XML

XSD : XML Schema XSD : XML Schema DefinitionDefinition

L’élément <schema> peut contenir L’élément <schema> peut contenir quelque attributsquelque attributs

<?xml version="1.0"?><?xml version="1.0"?><xs:schema <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace=targetNamespace=““monnsmonns""

xmlns=xmlns=““monnsmonns""

......

... ... </xs:schema></xs:schema>

Page 57: Introduction au XML

XSD : Attributs de XSD : Attributs de l’élément schemal’élément schema

Indique que les éléments et les attributs utilisé dans le schéma (element, complexType, string ,…) viennent de l’espace du nom "http://www.w3.org/2001/XMLSchema"

Spécifique que les éléments et les attributs qui viennent de cet espace du nom doit avoir xs comme le préfixe

xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"

targetNamespace=“monns"targetNamespace=“monns"

Indique que les éléments définit par ce schéma (note, to, from, body, heading, body) viennent de l’espace du nom monns

Page 58: Introduction au XML

XSD : Attributs de XSD : Attributs de l’élément schemal’élément schema

Indique que l’espace du nom par défaut est

monns

xmlns= "monns"xmlns= "monns"

Page 59: Introduction au XML

Référence d’un schéma Référence d’un schéma dans XMLdans XML

<?xml version="1.0"?><note xmlns=“monns”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xsi:schemaLocation=“monns note.xsd"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading><body>Don't forget me this weekend!</body> </note>

Page 60: Introduction au XML

Référence d’un schéma Référence d’un schéma dans XMLdans XML

Spécifique la déclaration l’espace du nom par défaut. Tout les éléments dans ce XML ont déclaré dans l’espace du nom monnsmonns

xmlns=“monns”xmlns=“monns”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

Crée XML schema instance

xsi:schemaLocation=“monns note.xsd"xsi:schemaLocation=“monns note.xsd"

La première valeur de cet attribut est le nom de l’espace du nom utilisé La deuxième valeur de cet attribut est l’endroit où se trouve le schéma

Page 61: Introduction au XML

XSD : Elément SimpleXSD : Elément Simple

L’élément simple est un élément XML qui L’élément simple est un élément XML qui contient contient seulement des textesseulement des textes. Il ne peut . Il ne peut pas contenir les autres éléments ou pas contenir les autres éléments ou attributsattributs Text Text peut être les types de données peut être les types de données

boolean, string, date, ou dénifir vous-même boolean, string, date, ou dénifir vous-même

La syntaxe pour définir un élément La syntaxe pour définir un élément simple simple <xs:element name="xxx" type="yyy"/><xs:element name="xxx" type="yyy"/>

Page 62: Introduction au XML

Exemple : Elément Exemple : Elément SimpleSimple

<nom>Mario</nom><age>34</age><datenaissance>1968-03-27</datenaissance>

<xs:element name=“nom" type="xs:string"/><xs:element name=“age" type="xs:integer"/><xs:element name=“datenaissance" type="xs:date"/>

XMLXML

XML XML SchemaSchema

Page 63: Introduction au XML

Les types de donnée Les types de donnée communscommuns

XML schema a beaucoup de XML schema a beaucoup de types de donntypes de données. Voici la liste ées. Voici la liste des types le plus commundes types le plus commun xsxs:string:string xs:decimalxs:decimal xs:integerxs:integer xs:booleanxs:boolean xs:datexs:date xs:timexs:time

Page 64: Introduction au XML

Déclaration les valeur fixe Déclaration les valeur fixe ou par défaut pour les ou par défaut pour les

éléments simpleséléments simples Les éléments simples peuvent avoir une

valeur par défaut OU une valeur fixe Une valeur par défaut

<xs:element name="couleur" type="xs:string" default="rouge"/>

Une valeur fixeUne valeur fixe <xs:element name="color" <xs:element name="color"

type="xs:string" type="xs:string" fixed="red"fixed="red"/> />

Page 65: Introduction au XML

XSD attributsXSD attributs

Tout les attributs déclarent comme le type simple

Seulement les éléments complexes peuvent avoir les attributs

La syntaxe pour définir un attribut <xs:attribut name=“langue"

type="xs:string"/> Pour XML Pour XML

<lastname langue="EN">Smith</lastname> <lastname langue="EN">Smith</lastname>

Page 66: Introduction au XML

XSD attributsXSD attributs

Déclaration une valeur par défautDéclaration une valeur par défaut <xs:attribute name="lang" type="xs:string" <xs:attribute name="lang" type="xs:string"

default="EN"default="EN"/> /> Déclaration une valeur fixeDéclaration une valeur fixe

<xs:attribute name="lang" type="xs:string" <xs:attribute name="lang" type="xs:string" fixed="EN"fixed="EN"/> />

Déclaration un attribut optionnelDéclaration un attribut optionnel <xs:attribute name="lang" type="xs:string" <xs:attribute name="lang" type="xs:string"

use="optional"use="optional"/> /> Déclaration un attribut obligatoireDéclaration un attribut obligatoire

<xs:attribute name="lang" type="xs:string" <xs:attribute name="lang" type="xs:string" use="required"use="required"/> />

Page 67: Introduction au XML

Restriction dans XSDRestriction dans XSD

Restriction la valeur d’élément age entre 0 et 100Restriction la valeur d’élément age entre 0 et 100

<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>

Page 68: Introduction au XML

Restriction dans XSDRestriction dans XSD

Restriction sur l’ensemble des valeursRestriction sur l’ensemble des valeurs

<xs:element name="car"><xs:simpleType>

<xs:restriction base="xs:string"><xs:enumeration value="Audi"/><xs:enumeration value="Golf"/><xs:enumeration value="BMW"/></xs:restriction>

</xs:simpleType></xs:element>

Page 69: Introduction au XML

Restriction dans XSDRestriction dans XSD

Restriction sur l’ensemble des valeursRestriction sur l’ensemble des valeurs

<xs:element name="car" type="carType"/>

<xs:simpleType name="carType"><xs:restriction base="xs:string"><xs:enumeration value="Audi"/><xs:enumeration value="Golf"/><xs:enumeration value="BMW"/></xs:restriction>

</xs:simpleType>

Page 70: Introduction au XML

Restriction dans XSDRestriction dans XSD

Restriction sur la série des valeursRestriction sur la série des valeurs

<xs:element name="letter"><xs:simpleType>

<xs:restriction base="xs:string"><xs:pattern value="[a-z]"/></xs:restriction>

</xs:simpleType></xs:element>

Page 71: Introduction au XML

Restriction dans XSDRestriction dans XSD Restriction sur les caractères blancsRestriction sur les caractères blancs

Préservation des blancsPréservation des blancs

<xs:element name="address"><xs:simpleType>

<xs:restriction base="xs:string"> <xs:whiteSpace value="preserve"/> </xs:restriction>

</xs:simpleType> </xs:element>

Page 72: Introduction au XML

Restriction dans XSDRestriction dans XSD Restriction sur les caractères blancsRestriction sur les caractères blancs

Remplacement des blancsRemplacement des blancs ( Remplacé ( Remplacé tab, espaces, etc avec espace)tab, espaces, etc avec espace)

<xs:element name="address"><xs:simpleType>

<xs:restriction base="xs:string"> <xs:whiteSpace value="replace"/> </xs:restriction>

</xs:simpleType> </xs:element>

Page 73: Introduction au XML

Restriction dans XSDRestriction dans XSD Restriction sur les caractères blancsRestriction sur les caractères blancs

Enlever tous les caractères blancsEnlever tous les caractères blancs

<xs:element name="address"><xs:simpleType>

<xs:restriction base="xs:string"> <xs:whiteSpace value="collapse"/> </xs:restriction>

</xs:simpleType> </xs:element>

Page 74: Introduction au XML

Restriction dans XSDRestriction dans XSD Restriction sur la longueurRestriction sur la longueur

<xs:element name="password"><xs:simpleType>

<xs:restriction base="xs:string"><xs:length value="8"/></xs:restriction>

</xs:simpleType></xs:element>

Page 75: Introduction au XML

Restriction dans XSDRestriction dans XSD Restriction sur la longueurRestriction sur la longueur

<xs:element name="password"><xs:simpleType>

<xs:restriction base="xs:string"><xs:minLength value="5"/><xs:maxLength value="8"/></xs:restriction>

</xs:simpleType></xs:element>

Page 76: Introduction au XML

XSD : Élément ComplexeXSD : Élément Complexe

L’élément complexe est un élément XML L’élément complexe est un élément XML qui contient les autres éléments et/ou qui contient les autres éléments et/ou attributsattributs

Il y a 4 types des éléments complexesIl y a 4 types des éléments complexes Élément videÉlément vide Élément qui contient seulement des autres Élément qui contient seulement des autres

élémentséléments Élement qui contient que des textesÉlement qui contient que des textes Élément qui contient des autres éléments et Élément qui contient des autres éléments et

des textesdes textes

Page 77: Introduction au XML

Exemple : Élément Exemple : Élément Complexe dans XMLComplexe dans XML

L’élément complexe produit qui est videL’élément complexe produit qui est vide <produit pid="1345"/> <produit pid="1345"/>

L’élément complexe employee qui contient L’élément complexe employee qui contient seulement des autres élémentsseulement des autres éléments

<employee> <employee> <firstname>John</firstname> <firstname>John</firstname> <lastname>Smith</lastname> <lastname>Smith</lastname> </employee></employee>

L’élément complexe food qui contient que des textesL’élément complexe food qui contient que des textes <food type="dessert">Ice cream</food><food type="dessert">Ice cream</food>

L’élément complexe description qui contient des L’élément complexe description qui contient des autres éléments et des textesautres éléments et des textes

<description> <description> It happened on <date lang="norwegian">03.03.99</date> It happened on <date lang="norwegian">03.03.99</date> .... </description> .... </description>

Page 78: Introduction au XML

DDéfiniréfinir des types complexes des types complexes pour des éléments videspour des éléments vides

<xs:element name="product"><xs:complexType> <xs:attribute name="prodid" type="xs:positiveInteger"/> </xs:complexType> </xs:element>

<product prodid="1345" />

Page 79: Introduction au XML

Définir des types complexe Définir des types complexe pour un élémentpour un élément

<employee><firstname>John</firstname><lastname>Smith</lastname></employee>

<xs:element name="employee"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/></xs:sequence> </xs:complexType> </xs:element>

Page 80: Introduction au XML

<employee><firstname>John</firstname><lastname>Smith</lastname></employee>

<xs:element name="employee" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>

Définir des types complexe Définir des types complexe pour un élémentpour un élément

Page 81: Introduction au XML

<xs:element name="employee" type="personinfo"/> <xs:element name="student" type="personinfo"/> <xs:element name="member" type="personinfo"/>

<xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType>

Définir des types complexe Définir des types complexe pour un élémentpour un élément

Page 82: Introduction au XML

DDéfiniréfinir des types complexes des types complexes pour des éléments textespour des éléments textes

<xs:element name="shoesize"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:integer"> <xs:attribute name="country" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element>

<shoesize pays="france"/>35</shoesize>

Page 83: Introduction au XML

DDéfiniréfinir des types complexes pour des des types complexes pour des éléments mixeséléments mixes

<xs:element name="letter"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="orderid" type="xs:positiveInteger"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complexType> </xs:element>

<letter>Dear Mr.<name>John Smith</name>.Your order <orderid>1032</orderid>will be shipped on <shipdate>2001-07-13</shipdate>. </letter>

Page 84: Introduction au XML

<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo">

<xs:sequence> <xs:element name="firstname" type="xs:string"/>

<xs:element name="lastname" type="xs:string"/> </xs:sequence>

</xs:complexType>

<xs:complexType name="fullpersoninfo"> <xs:complexContent>

<xs:extension base="personinfo"> <xs:sequence>

<xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:extension>

</xs:complexContent> </xs:complexType>

Définir des types complexe pour un Définir des types complexe pour un élémentélément

Page 85: Introduction au XML

XSD : Indicateur de types XSD : Indicateur de types complexescomplexes

On a 7 types d’indicateurOn a 7 types d’indicateur Indicateurs de l’ordreIndicateurs de l’ordre

Tous (All)Tous (All) Choix (Choice)Choix (Choice) Séquence (Sequence)Séquence (Sequence)

Indicateurs d’occurrenceIndicateurs d’occurrence maxOccursmaxOccurs minOccursminOccurs

Indicateurs du groupeIndicateurs du groupe Nom de groupeNom de groupe Nom d’attribut du groupeNom d’attribut du groupe

Page 86: Introduction au XML

Indicateur AllIndicateur All

<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>

Spécifique que des éléments fils peuvent Spécifique que des éléments fils peuvent apparaître en apparaître en n’importe quel ordren’importe quel ordre et chaque et chaque élément fil doit élément fil doit produire seulement une seule foisproduire seulement une seule fois

Page 87: Introduction au XML

Indicateur ChoiceIndicateur Choice

<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>

Spécifique qu’un élément fils ou un des Spécifique qu’un élément fils ou un des autres éléments fils qui peut produireautres éléments fils qui peut produire

Page 88: Introduction au XML

Indicateur SequenceIndicateur Sequence

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>

Spécifique que des éléments fils Spécifique que des éléments fils doivent produire en ordredoivent produire en ordre

Page 89: Introduction au XML

Indicateur maxOccursIndicateur maxOccurs

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element>

Spécifique le nombre maximum de Spécifique le nombre maximum de fois qu’un élément peut produirefois qu’un élément peut produire

Page 90: Introduction au XML

Indicateur minOccursIndicateur minOccurs

<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>

Spécifique le nombre minimum de Spécifique le nombre minimum de fois qu’un élément peut produirefois qu’un élément peut produire

Page 91: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD<?xml version="1.0" encoding="ISO-8859-1"?>

<persons xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="family.xsd">

<person> <full_name>Hege Refsnes</full_name><child_name>Cecilie</child_name></person>

<person> <full_name>Tove Refsnes</full_name> <child_name>Hege</child_name> <child_name>Stale</child_name> <child_name>Jim</child_name> </person>

<person> <full_name>Stale Refsnes</full_name> </person> </persons>

Page 92: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD

<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string" minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

Page 93: Introduction au XML

Indicateur GroupIndicateur Group

<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>

<xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType>

Page 94: Introduction au XML

Indicateur Attribute GroupIndicateur Attribute Group

<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup>

<xs:element name="person"> <xs:complexType> <xs:attributeGroup ref="personattrgroup"/> </xs:complexType> </xs:element>

Page 95: Introduction au XML

XSD XSD : Substitution : Substitution d’d’élémentélément

<xs:element name="name" type="xs:string"/> <xs:element name="nom" substitutionGroup="name"/>

<xs:complexType name="custinfo"> <xs:sequence> <xs:element ref="name"/> </xs:sequence> </xs:complexType>

<xs:element name="customer" type="custinfo"/> <xs:element name=“client" substitutionGroup="customer"/>

<customer> <name>John Smith</name> </customer>

<client> <nom>John Smith</nom> </client>

Page 96: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD<?xml version="1.0" encoding="ISO-8859-1"?> <shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="shiporder.xsd"> <orderperson>John Smith</orderperson> <shipto>

<name>Ola Nordmann</name> <address>Langgt 23</address> <city>4000 Stavanger</city> <country>Norway</country>

</shipto> <item>

<title>Empire Burlesque</title> <note>Special Edition</note> <quantity>1</quantity> <price>10.90</price>

</item> <item>

<title>Hide your heart</title> <quantity>1</quantity> <price>9.90</price>

</item> </shiporder>

Page 97: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD Élément racine Élément racine « shiporder »« shiporder » orderperson, shipto, itemorderperson, shipto, item sont les éléments sont les éléments

fils du élément fils du élément shipordershiporder Élément Élément itemitem peut être produire plusieurs peut être produire plusieurs

foisfois name, address, city, countryname, address, city, country sont les sont les

éléments fils du éléments fils du shiptoshipto title, note, quantity, price title, note, quantity, price sont les éléments sont les éléments

fils du fils du itemitem L’élémentL’élément note est optionel note est optionel orderid orderid est attribut du élémentest attribut du élément shiporder shiporder

Page 98: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD

Crée un XML schemaCrée un XML schema

<?xml version="1.0" encoding="ISO-8859-1" ?>

<xs:schemaxmlns:xs="http://www.w3.org/2001/

XMLSchema"> ... ... </xs:schema>

Page 99: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD Élément racine Élément racine « shiporder »« shiporder »

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> ... ... </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 100: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD orderperson orderperson est un éléments fils du élément est un éléments fils du élément

shipordershiporder

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/> ... </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 101: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD shipto shipto est un éléments fils du élément est un éléments fils du élément shipordershiporder

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> … </xs:sequence> </xs:complexType> </xs:element> ... </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 102: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD name, address, city, countryname, address, city, country sont les éléments sont les éléments

fils du fils du shiptoshipto

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element> ... </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 103: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD item item est un éléments fils du élément est un éléments fils du élément shipordershiporder

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

<xs:element name="item"> <xs:complexType>

<xs:sequence> … </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 104: Introduction au XML

Exemple Exemple : XML + XSD: XML + XSD item item peut être produire plusieurs foispeut être produire plusieurs fois

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

<xs:element name="item“ maxOccurs="unbounded“> <xs:complexType>

<xs:sequence> … </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 105: Introduction au XML

title, note, quantity, price title, note, quantity, price sont les éléments fils sont les éléments fils du du itemitem

<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

<xs:element name="item“ maxOccurs="unbounded“> <xs:complexType>

<xs:sequence> <xs:element name="title" type="xs:string"/>

<xs:element name="note" type="xs:string"/><xs:element name="quantity" type="xs:positiveInteger"/><xs:element name="price" type="xs:decimal"/>

</xs:sequence> </xs:complexType> </xs:element> </xs:sequence> …</xs:complexType> </xs:element> </xs:schema>

Page 106: Introduction au XML

orderid orderid est attribut du élémentest attribut du élément shiporder shiporder<?xml version="1.0" encoding="ISO-8859-1" ?><xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="shiporder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson" type="xs:string"/>

<xs:element name="shipto"> <xs:complexType>

<xs:sequence> <xs:element name="name" type="xs:string"/>

<xs:element name="address" type="xs:string"/><xs:element name="city" type="xs:string"/><xs:element name="country" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

<xs:element name="item“ maxOccurs="unbounded“> <xs:complexType>

<xs:sequence> <xs:element name="title" type="xs:string"/>

<xs:element name="note" type="xs:string"/><xs:element name="quantity" type="xs:positiveInteger"

minOccurs="0"/><xs:element name="price" type="xs:decimal"/>

</xs:sequence> </xs:complexType> </xs:element> </xs:sequence> <xs:element name="orderid" type="xs:string" use= "required" /></xs:complexType> </xs:element> </xs:schema>

Page 107: Introduction au XML

XSLTXSLT

XLS « eXtensible Stylesheet XLS « eXtensible Stylesheet Language »Language »

XLST « XLS Transformations »XLST « XLS Transformations » Le but est pour transformer d’un Le but est pour transformer d’un

document XML à un autre document document XML à un autre document XML ou à un autre type du XML ou à un autre type du document document (Ex : HTML)(Ex : HTML)

Page 108: Introduction au XML

L’utilisation du XSLTL’utilisation du XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>

Document XSLT

L’appel XSL à partie du document XML

Page 109: Introduction au XML

L’élément L’élément <xsl:template><xsl:template>

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/">

<html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32">

<th>Title</th> <th>Artist</th>

</tr> <tr>

<td>.</td> <td>.</td>

</tr> </table> </body> </html>

</xsl:template> </xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="test.xsl"?> <catalog> <cd> <title>Empire</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</compnay> <price>9.90</price> <year>1988</year> </cd></catalog>

Page 110: Introduction au XML

L’élément <xsl:value-of>L’élément <xsl:value-of><?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <tr> <td><xsl:value-of select="catalog/cd/title"/></td> <td><xsl:value-of select="catalog/cd/artist"/></td> </tr> </table> </body> </html> </xsl:template> </xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="test.xsl"?> <catalog> <cd> <title>Empire</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</compnay> <price>9.90</price> <year>1988</year> </cd></catalog>

Page 111: Introduction au XML

L’élément <xsl:for-each>L’élément <xsl:for-each><?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="test.xsl"?> <catalog> <cd> <title>Empire</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</compnay> <price>9.90</price> <year>1988</year> </cd></catalog>

Page 112: Introduction au XML

Filtrage la sortieFiltrage la sortie

On peut filtrer la sorties du XML en On peut filtrer la sorties du XML en ajoutant une critère à l’attribut ajoutant une critère à l’attribut select select dans l’élémentdans l’élément <xsl:for-each> <xsl:for-each> <xsl:for-each

select="catalog/cd[artist='Bonnie Tyler']"> Opérateur pour filtrageOpérateur pour filtrage

= (égale)= (égale) != (non-égale)!= (non-égale) &lt; (inférieur)&lt; (inférieur) &gt; (superieur)&gt; (superieur)

Page 113: Introduction au XML

L’élément <xsl:for-each> avec L’élément <xsl:for-each> avec une filtreune filtre

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd[artist='Bonnie Tyler']"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="test.xsl"?> <catalog> <cd> <title>Empire</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</compnay> <price>9.90</price> <year>1988</year> </cd></catalog>

Page 114: Introduction au XML

L’élément <xsl:sort> L’élément <xsl:sort> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th> </tr> <xsl:for-each select="catalog/cd"> <xsl:sort select="artist"/> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>

<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/xsl" href="test.xsl"?> <catalog> <cd> <title>Empire</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> <cd> <title>Hide your heart</title> <artist>Bonnie Tyler</artist> <country>UK</country> <company>CBS Records</compnay> <price>9.90</price> <year>1988</year> </cd></catalog>

Page 115: Introduction au XML

L’élément <xsl:choose> L’élément <xsl:choose> <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1">

<tr bgcolor="#9acd32"> <th>Title</th> <th>Artist</th>

</tr> <xsl:for-each select="catalog/cd"> <tr>

<td><xsl:value-of select="title"/></td> <xsl:choose> <xsl:when test="price &gt; 10">

<td bgcolor="#ff00ff"><xsl:value-of select="artist"/></td> </xsl:when> <xsl:otherwise>

<td><xsl:value-of select="artist"/></td> </xsl:otherwise> </xsl:choose>

</tr> </xsl:for-each>

</table> </body> </html> </xsl:template>

</xsl:stylesheet>

Page 116: Introduction au XML

L’élément <xsl:apply-L’élément <xsl:apply-template> template>

<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <xsl:apply-templates/> </body> </html> </xsl:template>

<xsl:template match="cd"> <p> <xsl:apply-templates select="title"/> <xsl:apply-templates select="artist"/> </p> </xsl:template>

<xsl:template match="title"> Title: <span style="color:#ff0000"><xsl:value-of select="."/></span> <br /> </xsl:template>

<xsl:template match="artist"> Artist: <span style="color:#00ff00"> <xsl:value-of select="."/></span> <br /> </xsl:template> </xsl:stylesheet>