Vous êtes sur la page 1sur 34

Office de la formation Professionnelle et de la promotion du travail

DR SM/ISTA TIZNIT

2021/2022
Module M203 : Développement Web coté client
Filière : Techniques de Développement Informatique

XML/DTD/XSD/XPATH/XSLT

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 1 sur 34


Table des matières
XML ...................................................................................................................................................................................... 4
IDE .................................................................................................................................................................................... 4
Définition de XML ............................................................................................................................................................ 4
Qu’est-ce qu’un élément XML ?....................................................................................................................................... 5
Élément vide : .................................................................................................................................................................. 5
Comment écrire un élément : .......................................................................................................................................... 5
Attributs en XML .............................................................................................................................................................. 5
Syntaxe XML ..................................................................................................................................................................... 6
Racine (root) .................................................................................................................................................................... 6
Prolog ............................................................................................................................................................................... 6
Règles: .......................................................................................................................................................................... 6
Attributs .......................................................................................................................................................................... 6
Règles : ......................................................................................................................................................................... 6
Références d’entités ......................................................................................................................................................... 7
L’espace blanc est conservé dans XML ....................................................................................................................... 7
DTD....................................................................................................................................................................................... 9
Elément en DTD ............................................................................................................................................................. 11
Syntaxe ....................................................................................................................................................................... 11
Exemple d'élément mixte ........................................................................................................................................... 11
Attribut en DTD .............................................................................................................................................................. 11
Syntaxe ....................................................................................................................................................................... 11
Exemple de choix au niveau des attributs : ................................................................................................................ 12
Entité en DTD ................................................................................................................................................................. 12
Les entités générales .................................................................................................................................................. 12
Les entités paramètres ............................................................................................................................................... 12
Schéma W3C ...................................................................................................................................................................... 15
Un schéma XML est plus performant qu’un DTD ......................................................................................................... 15
Exemple : Le document XML ci-dessous contient une référence à un schéma XML : ................................................... 15
Exemple : Le document XML ci-dessous est un exemple de schéma XML : .................................................................. 16
Déclarations d'éléments simples ................................................................................................................................... 17
Syntaxe: ...................................................................................................................................................................... 17
Les types pour les chaînes de caractères ....................................................................................................................... 17
Les types pour les dates et heures ................................................................................................................................. 18

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 2 sur 34


Les types pour les dates et heures ................................................................................................................................. 18
Autres types ................................................................................................................................................................... 19
Les types complexes ...................................................................................................................................................... 19
Les contenus des types complexes ................................................................................................................................ 19
Les contenus simples ..................................................................................................................................................... 19
Les contenus standards.................................................................................................................................................. 20
Balise contenant un ou plusieurs attributs ................................................................................................................ 20
Balise contenant d'autres éléments ........................................................................................................................... 21
Les contenus mixtes ....................................................................................................................................................... 22
Le nombre d'occurrences............................................................................................................................................... 22
XSLT transformation: ......................................................................................................................................................... 23
XSLT utilise XPath ........................................................................................................................................................... 23
comment ça fonctionne ? .............................................................................................................................................. 24
C’est quoi XPath? ........................................................................................................................................................... 24
Sélection d’éléments et attributs :................................................................................................................................. 26
Filtrage : ......................................................................................................................................................................... 27
Prédicats composés ....................................................................................................................................................... 28
Selection Noeuds ........................................................................................................................................................... 29
Prédicats......................................................................................................................................................................... 31
Séléction les noeuds anonymes ................................................................................................................................... 32
Sélection de plusieurs chemins ...................................................................................................................................... 33

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 3 sur 34


XML
IDE
Pour l’éditeur on peut utiliser VisualStudioCode et ajouter cette extension

Définition de XML
✓XML signifie eXtensible markup langage.
✓XML a été conçu pour stocker et transporter des données.
✓XML a été conçu pour être à la fois lisible par l’homme et la machine.
Exemple :

<?xml version="1.0" encoding="utf-8" ?>


<etudiants>
<etudiant code="12" dateN="12/03/2000" >
<nom>Rami</nom>
<prenom>Ahmed<</prenom>
<diplomes>
<diplome codeD="123" nomD="licence"/>
<diplome codeD="143" nomD="Technicien"/>
<diplome codeD="324" nomD="bac"/>
</diplomes>
</etudiant>

<etudiant code="13">
<nom>Alami</nom>
<prenom>Ali</prenom>
<diplomes>
<diplome codeD="143" nomD="Technicien"/>
<diplome codeD="324" nomD="bac"/>
</diplomes>
</etudiant>
</etudiants>

Différence entre XML et HTML

XML et HTML ont été conçus avec des objectifs différents :

➢ XML a été conçu pour transporter des données - en se concentre sur les données.
➢ HTML a été conçu pour afficher des données présentation en se concentrer sur l’apparence des
données.
➢ Les balises XML ne sont pas prédéfinies comme les balises HTML.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 4 sur 34


Un fichier XML est constitué d’éléments

Qu’est-ce qu’un élément XML ?


Un élément XML est constitué d’une balise ouvrante et balise fermante.

<nom>Rami</nom> nom est un élément


Un élément peut contenir :
Du texte <nom>Rami</nom>

<diplomes>
<diplome codeD="143" nomD="Technicien"/>
Un autre(s) élément(s) <diplome codeD="324" nomD="bac"/>
</diplomes>

Texte et élément <p>code:<span>121</span></p>


<diplome codeD="143" nomD="Technicien"/>
Attribut(s)

Élément vide :
Un élément vide est un élément qui ne contient rien
<diplome codeD="143" nomD="Technicien"> </diplome >

Peut être écrit autrement


<diplome codeD="143" nomD="Technicien"/>

Comment écrire un élément :

Il n’y a pas de styles de nommage définis pour les éléments XML. Mais voici quelques noms couramment
utilisés :
Style Example Description
Lower case <firstname> Toutes les lettres sont en minuscule
Upper case <FIRSTNAME> Toutes les lettres sont en majunuscule
Underscore <first_name> Underscore separates words
Pascal case <FirstName > Uppercase first letter in each word
Camel case <firstName> Uppercase first letter in each word except the first

Camel case est la règle de nommage en JavaScripts.


Les éléments XML peuvent avoir des attributs, tout comme html.
Attributs en XML

Les attributs sont conçus pour contenir des données liées à un élément spécifique.
Les valeurs d’attribut doivent toujours entre Des guillemets simples ou doubles peuvent être utilisés.
<diplome codeD="143" nomD="Technicien"/>

<diplome codeD=’143’ nomD=’Technicien’/>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 5 sur 34


Syntaxe XML
Racine (root)
XML doit contenir un root (racine) élément qui est parent de tous les éléments:

<root>
<child>
<subchild>.....</subchild>
</child>
</root>

Dans l’exemple précèdent etudiants est un élément racine (root)

Prolog
Cette ligne s’appelle XML prolog:
<?xml version="1.0" encoding="UTF-8"?>

Les documents XML peuvent contenir des caractères internationaux, comme øæå norvégien ou Français êèé.
Pour éviter les erreurs, vous devez spécifier l’encodage utilisé, ou enregistrer vos fichiers XML sous le nom
d’UTF-8.
UTF-8 est le codage par défaut des caractères pour les documents XML.
Règles:
✓ Tous les éléments XML doivent avoir la balise ouvrante et fermante

<nom>Rami</nom>
<diplome codeD="143" nomD="Technicien"/>
<diplome codeD="143" nomD="Technicien"></diplome >

✓ Les éléments sont sensibles à la casse (majuscule/minuscule)


<nom>Rami</Nom> faux

✓ les éléments doivent être correctement imbriqués


En HTML, vous pouvez voir des éléments incorrectement imbriqués :

<b><i>This text is bold and italic</b></i> faux

<b><i>Thi text is bold and italic</i> </b> vrai

Attributs
Les éléments peuvent contenir des attributs :

Règles :
Les valeurs des attributs doivent être entre guillemet

L’ordre des attributs dans un élément n’est pas important (Le codeD et nomD se sont des attributs)
<diplome codeD="123" nomD="licence"/>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 6 sur 34


Une information peut être stocké comme #PCDATA dans un élément

Exemple :
<nom>Rami</nom>

Ou bien dans un attribut par exemple <etudiant code="12" dateN="12/03/2000" > Les données
d’un attribut sont toujours entre double quottes.

Références d’entités
Certains caractères ont une signification particulière dans XML. Si vous placez un caractère comme « < » à

l’intérieur d’un élément XML, il générera une erreur parce que le parseur l’interprète comme le début d’un nouvel

élément.

Cela générera une erreur XML : <message>salary < 1000</message>

Pour remédier à ce problème il faut remplacer le caractère « <« par son entité référence

<message>salary &lt; 1000</message>


Voici la liste des entités prédéfinies :
&lt; < less than
&gt; > greater than
&amp; & ampersand
&apos; ' apostrophe
&quot; " quotation mark

Commentaire en xml :

<!--c’est un commentaire -->

L’espace blanc est conservé dans XML


XML ne tronque pas plusieurs espaces blancs (HTML tronque plusieurs espaces blancs en un seul
espace blanc) :
XML Hello world
HTML Hello world

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 7 sur 34


Exercice 1

Création d’un livre en XML


On souhaite écrire un livre en utilisant le formalisme XML. Le livre est structuré en sections (au
moins 2), en chapitres (au moins 2) et en paragraphes (au moins 2).
Le livre doit contenir la liste des auteurs (avec nom et prénom). Tous les éléments doivent
posséder un titre, sauf le paragraphe qui contient du texte.
Proposez une structuration XML de ce document (avec 2 auteurs, 2 sections, 2 chapitres par
section et 2 paragraphes par chapitre). Vérifiez, à l’aide de l’éditeur, que votre document est bien
formé.
Attention : ne pas utiliser d’attributs ; l’encodage utilisé est ISO-8859-1
Votre document sera nommé livre1.xml.

Exercice 2

Utilisation des attributs


Conception de livre2.xml à partir de livre1.xml
On souhaite compléter la structure du document XML de l’exercice précédent par les attributs
nom et prenom pour les auteurs et titre pour le livre, les sections et les chapitres.
Analysez la structure du nouveau document. Y a-t-il des simplifications possibles ?
Vérifiez, à l’aide de l’éditeur, que votre document est bien formé.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 8 sur 34


DTD

DTD (Document Type Definition ) signifie Définition de type document.

Un DTD définit la structure et les éléments et attributs légaux d’un document XML.
Plan d’un fichier XML. Permet de valider un fichier XML

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE etudiants [
<!ELEMENT etudiants (etudiant+)>
<!ELEMENT etudiant (nom,prenom,diplome*)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>

<!ELEMENT diplome EMPTY>


<!ATTLIST etudiant code CDATA #REQUIRED>
<!ATTLIST diplome codeD CDATA #REQUIRED nomD CDATA #REQUIRED> ]>
<etudiants>
<etudiant code="10">
<nom>Ali</nom>
<prenom>Salem</prenom>
<diplome codeD="9" nomD="bac"/>
<diplome codeD="10" nomD="Technicien"/>
</etudiant>
<etudiant code="11">
<nom>Rami</nom>
<prenom>Ahmed</prenom>
<diplome codeD="120" nomD="Master" />
</etudiant>
</etudiants>

Une DTD peut être interne ( [ … ] ) ou externe (SYSTEM ou PUBLIC) au document XML.

Un DTD peut être à l’extérieur du fichier XML :

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE etudiants SYSTEM "dtdEtudiant.dtd">

<etudiants>
<etudiant code="10">
<nom>Ali</nom>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 9 sur 34


<prenom>Salem</prenom>
<diplome codeD="9" nomD="bac"/>
<diplome codeD="10" nomD="Technicien"/>
</etudiant>
<etudiant code="11">
<nom>Rami</nom>
<prenom>Ahmed</prenom>
<diplome codeD="120" nomD="Master" />
</etudiant>
</etudiants>

Le fichier dtdEtudiant.dtd
<!ELEMENT etudiants (etudiant+)>

<!ELEMENT etudiant (nom,prenom,diplome*)>

<!ELEMENT nom (#PCDATA)>

<!ELEMENT prenom (#PCDATA)>

<!ELEMENT diplome EMPTY>

<!ATTLIST etudiant code CDATA #REQUIRED>

<!ATTLIST diplome codeD CDATA #REQUIRED nomD CDATA #REQUIRED>

Explications :
<!ELEMENT etudiants (etudiant+)>

signifie que l’élément racine etudiants contient un ou plusieurs etudiant


Voici le détail de ces opérateurs :
+ Un ou plusieurs
* Zero ou plusieurs
? Zéro ou un

<!ELEMENT etudiant (nom,prenom,diplome*)>

Signifie que etudiant contient un élément nom,un élément prenom,zéro ou plusieurs élément diplôme

<!ELEMENT nom (#PCDATA)>

Signifie que l’élément nom contient du text

<!ELEMENT diplome EMPTY> ne contient ni text ni autre élément

<!ATTLIST etudiant code CDATA #REQUIRED>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 10 sur 34


Signifie que l’élément etudiant contient l’attribut code qui est obligatoire car #REQUIRED est ajouté
Pour rendre un attribut non obligatoire on ajoute #IMPLIED
<!ATTLIST diplome codeD CDATA #REQUIRED nomD CDATA #REQUIRED>

L’élément diplome contient les attributs codeD et nomD qui sont obligatoires.
Elément en DTD
L’élément (ou balise) est exprimé par l’instruction ELEMENT.

Syntaxe
<!ELEMENT unNom DEF_CONTENU>

DEF_CONTENU peut contenir :


❖ EMPTY (Il peut cependant avoir des attributs.)
❖ ANY : l’élément peut contenir n’importe quel élément présent dans la DTD.
❖ (#PCDATA)
❖ Un élément placé entre parenthèses
❖ Un ensemble d’éléments séparés par des opérateurs, le tout placé entre parenthèses.

L’opérateur de choix, représenté par le caractère |, indique que l’un ou l’autre de deux éléments (ou deux
ensembles d’éléments) doit être présent. L’opérateur de suite (ou séquence), représenté par le caractère ,, indique
que les deux éléments (ou les deux ensembles d’éléments) doivent être présents. Des parenthèses supplémentaires
peuvent être utilisées pour lever les ambiguïtés.

Exemple d'élément mixte


<!ELEMENT adresse (#PCDATA | codeVille)*>

<adresse>
hay essalam
city arraha
<codeVille>124</codeVille>
Ville Tiznit
</adresse>
Attribut en DTD
Les attributs sont précisés dans l’instruction ATTLIST.
Syntaxe
<!ATTLIST nom TYPE OBLIGATION VALEUR_PAR_DEFAUT >

o Le TYPE peut être principalement


o CDATA : du texte (Character Data) ;
o ID : un identifiant unique (combinaison de chiffres et de lettres) ;
o IDREF : une référence vers un ID ;
o IDREFS : une liste de références vers des ID (séparation par un blanc) ;
o NMTOKEN : un mot (donc pas de blanc) ;
o NMTOKENS : une liste de mots (séparation par un blanc) ;
o Une énumération de valeurs : chaque valeur est séparée par le caractère |.
L’OBLIGATION ne concerne pas les énumérations qui sont suivies d’une valeur par défaut.
Dans les autres cas, on l’exprime ainsi :

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 11 sur 34


▪ #REQUIRED : attribut obligatoire.
▪ #IMPLIED : attribut optionnel.
▪ #FIXED : attribut toujours présent avec une valeur.

Exemple de choix au niveau des attributs :


<!ATTLIST section langue (fr|en) "fr" >

L’attribut langue peut prendre seulement les valeurs "fr" ou "en" la valeur par default est "fr"

Entité en DTD
Les entités sont déclarées par l’instruction ENTITY. L’entité associe un nom à une valeur

Les trois types d'entités qui existent : les entités générales, les entités paramètres et les entités externes (non abordé dans ce
cours).

Les entités générales


Elles permettent d'associer un alias à une information afin de l'utiliser dans le document XML.
<!ENTITY nom "valeur">

Pour utiliser une entité générale dans notre document XML, il suffit d'utiliser la syntaxe suivante : &nom;

Exemple

Les entités paramètres


les entités paramètres n'apparaissent que dans les définitions DTD.
Syntaxe <!ENTITY % nom "valeur">

Pour utiliser une entité paramètre dans notre DTD, il suffit d'utiliser la syntaxe suivante : %nom;

Exemple:

<!ATTLIST telephone marque (Samsung|Apple) #REQUIRED>

À l'aide d'une entité paramètre, cette même règle s'écrit de la façon suivante :

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 12 sur 34


<!ENTITY % listeMarques "marque (Samsung|Apple) #REQUIRED">
<!ATTLIST telephone %listeMarques; >

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 13 sur 34


Exercice 3
Utilisation d’une DTD

Créez la DTD carnet.dtd suivante :

Travail à faire : Créez un document XML qui soit valide par rapport à cette DTD.

Exercice 4
Création d’une DTD
Créez une DTD livre.dtd à partir du document livre2.xml créé dans le chapitre précédent.

Exercice 5

Utilisation des entités paramétriques


Modifiez la DTD créée dans l’exercice 2 pour faire en sorte que la définition de l’attribut titre soit
unique à l’aide d’une entité paramétrique.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 14 sur 34


Schéma W3C
Un schéma XML décrit la structure d’un document XML, tout comme un DTD. On peut considérer les schémas
comme remplaçant les DTD.

Un schéma XML est plus performant qu’un DTD

✓ XML Schémas sont écrits en XML.


✓ Les schémas XML sont extensibles aux ajouts.
✓ XML Schémas supporte les types de données.
✓ XML Schémas supporte les espaces de nom.
✓ Davantage de souplesse dans les cardinalités.Dans les schémas, on distingue les éléments en 2
types :
• simple : du texte (pour attribut ou élément) ;
• complexe : avec au moins un attribut ou un élément fils.
Dans le fichier XML, pour faire référence à un fichier schéma, il existe deux formes de liens :
1- Le cas ignorant les espaces de noms du document. Dans ce cas, il faut utiliser l’attribut
noNamespaceSchemaLocation pour désigner la localisation du schéma à employer.
2- Le cas prenant en compte les espaces de noms du document. Dans ce cas, on utilise l’attribut
schemaLocation, qui a pour valeur une liste de couples (espace de noms et localisation d’un schéma).

Exemple : Le document XML ci-dessous contient une référence à un schéma XML :

Explication :
xmlns=https://www.w3schools.com

spécifie la déclaration d'espace de noms par défaut. Cette déclaration indique au validateur de schéma que
tous les éléments utilisés dans ce document XML sont déclarés dans l'espace de noms
"https://www.w3schools.com".

Une fois que vous disposez de l'espace de noms XML Schema Instance :
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 15 sur 34


vous pouvez utiliser l'attribut schemaLocation. Cet attribut a deux valeurs, séparées par un espace. La
première valeur est l'espace de noms à utiliser. La deuxième valeur est l'emplacement du schéma XML à
utiliser pour cet espace de noms :

xsi:schemaLocation="https://www.w3schools.com note.xsd"

Exemple : Le document XML ci-dessous est un exemple de schéma XML :

Explication :
L'élément <schema> est l'élément racine de chaque schéma XML :

Le fragment suivant :
xmlns:xs=http://www.w3.org/2001/XMLSchema

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 16 sur 34


indique que les éléments et les types de données utilisés dans le schéma proviennent de l'espace de noms
"http://www.w3.org/2001/XMLSchema". Il précise également que les éléments et les types de données
provenant de l'espace de noms "http://www.w3.org/2001/XMLSchema" doivent être préfixés par xs :

Ce fragment :
targetNamespace=https://www.w3schools.com

indique que les éléments définis par ce schéma (note, to, from, header, body.) proviennent de l'espace de
noms "https://www.w3schools.com".
Ce fragment :
xmlns=https://www.w3schools.com

indique que l'espace de noms par défaut est "https://www.w3schools.com".


Ce fragment :
elementFormDefault="qualified"

indique que tous les éléments utilisés par le document d'instance XML qui ont été déclarés dans ce
schéma doivent être qualifiés d'espace de noms.

Déclarations d'éléments simples


Syntaxe:
<xsd:element name="elementName" type="xsd:elementType>

Exemple:

<xs:element name="age" type="xs:int"/>

Les types pour les chaînes de caractères


Les types disponibles pour les chaînes de caractères sont les suivants :
❖ xs:string : le plus simple sans normalisation ni compactage ;
❖ xs:normalizedString : la forme normalisée et non compactée ;
❖ xs:token : la forme normalisée et compactée ;
❖ xs:language : les codes de langue (RFC 1766) ;
❖ xs:NMTOKEN : pas de blanc (comme 1999-10-10, 1234534 ou employe1023) ;
❖ xs:Name : forme de NMToken commençant par une lettre ;
❖ xs:ID : chaîne unique dans le document
❖ xs:IDREF : chaîne ayant pour valeur un ID (d’où le mot REF pour référence) ;
❖ xs:anyURI : la valeur de l’URI utilisera des caractères ASCII, conversion automatique.
Par exemple, http://www.site.com/mon Rep devient http://www.site.com/mon%20Rep.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 17 sur 34


Les types pour les dates et heures

Duration : au format PnYnMnDTnHnMnS.


Exemple : P2Y => 2 ans; P3DT5H => 3 jours et 5 heures.

Date : au format YYYY-MM-DD.

Time : au format hh:mm:ss.

DateTime: au format YYYY-MM-DDThh:mm:ss.

gYear: au format YYYY.

gYearMonth: au format YYYY-MM.

Les types pour les dates et heures

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 18 sur 34


Autres types

Exemples :

<xs:attribute name="animal" type="xs:boolean" />


Et dans le xml
<personne animal="false">Victor Hugo</personne>

Les types complexes


Pour déclarer une base de type complexe, c'est le mot clef complexType qu'il faut utiliser associé à celui
de element traité dans la partie précédente.
Exemple :

Les contenus des types complexes


Concernant les types complexes, il est important de noter qu'il existe 3 types de contenus possibles :
▪ Les contenus simples.
▪ Les contenus "standards".
▪ Les contenus mixtes.
Les contenus simples
On appelle contenu simple, le contenu d'un élément complexe qui n'est composé que d'attributs et d'un
texte de type simple.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 19 sur 34


<!-- contient un attribut et du texte -->
<prix devise="euros">35</prix>
<!-- contient un attribut et du texte -->
<voiture marque="Renault">Clio</voiture>
Exemple : - Du coté Schéma
<xsd:element name="prix">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:positiveInteger">
<xsd:attribute name="devise" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
- Du coté XML:
<prix devise="euros">35</prix>
Exemple avec deux attributs :
<xsd:element name="voiture">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribut name="marque" type="xsd:string" />
<xsd:attribut name="type" type="xsd:string" />
</xsd:extension>
<xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Le XML :
<voiture marque="Renault" type="essence">Clio</voiture>

Les contenus standards


C'est le contenu d'un élément complexe qui n'est composé que d'autres éléments (simples ou complexes)
ou uniquement d'attributs.
Balise contenant un ou plusieurs attributs
Exemple :
<xsd:element name="voiture">
<xsd:complexType>
<xsd:attribut name="marque" type="xsd:string" />
<xsd:attribut name="modele" type="xsd:string" />
</xsd:complexType>
</xsd:element>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 20 sur 34


Balise contenant d'autres éléments
La séquence
Une séquence est utilisée lorsque l'on souhaite spécifier que les éléments contenus dans un type
complexe doivent apparaître dans un ordre précis.
Voici comment se déclare une séquence au niveau d'un Schéma XML :
<xsd:element name="mon_nom">
<xsd:complexType>
<xsd:sequence>
<!-- liste des éléments -->
</xsd:sequence>
<!-- listes des attributs -->
</xsd:complexType>
</xsd:element>
Exemple :
<xsd:element name="personne">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="sexe" type="xsd:string" />
</xsd:complexType>
</xsd:element>

all
Le type all (contrairement à sequence) est utilisé lorsque l'on veut spécifier que les éléments contenus
dans un type complexe peuvent apparaître dans n'importe quel ordre. Ils doivent cependant tous
apparaître une et une seule fois.

choice
Un choix (contrairement à all et sequence) est utilisé lorsque l'on veut spécifier qu'un élément contenu
dans un type complexe soit choisi dans une liste prédéfinie.
Exemple :
<personne sexe="masculin">
<nom>DUPONT</nom>
</personne> <!-- valide -->
<personne sexe="masculin">
<prenom>Robert</prenom>
</personne><!-- invalide => les 2 balises prenom et nom ne peuvent pas
apparaître en même temps -->
<personne sexe="masculin">
<prenom>Robert</prenom>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 21 sur 34


<nom>DUPONT</nom>
</personne>
Remarque : il est possible d'encapsuler un élément complexe dans un élément complexe.

Les contenus mixtes


Un contenu mixte est le contenu d'un élément complexe qui est composé d'attributs, d'éléments et de
texte.
Pour déclarer un élément complexe au contenu mixte, voici la syntaxe à utiliser :
<xsd:element name="mon_nom">
<xsd:complexType mixed="true">
<!-- liste des éléments -->
</xsd:complexType>
<!-- liste des attributs -->
</xsd:element>
Noté l'utilisation du mot clef mixed.
<facture>
<acheteur>Client 1</acheteur>
, doit payer
<somme>1000</somme>
€.
</facture>
Le nombre d'occurrences
La notion d'occurrence va nous permettre de préciser si les balises (par exemple: <nom /> et
<prenom/>), peuvent apparaître un nombre précis de fois, plusieurs fois, voire pas du tout.
minOccurs : Pour indiquer le nombre minimum d'occurrences d'un élément.

maxOccurs: Pour indiquer le nombre maximum d'occurrences d'un élément.


Exemple :
<xsd:complexType name="personne">
<xsd:sequence>
<xsd:element name="nom" type="xsd:string" />
<xsd:element name="prenom" type="xsd:string" minOccurs="2" maxOccurs="unbounded"
/>
</xsd:sequence>
</xsd:complexType>

Exercice 4
Réalisation d’un schéma
Soit un document XML contenant un nombre indéterminé d’éléments sous la forme :
<contact titre="..." techno="...">

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 22 sur 34


<nom>...</nom>
<prenom>...</prenom>
<telephone> ...</telephone>
<email>...</email>
<email>...</email>
...
</contact>

L’élément telephone et l’attribut techno sont optionnels. Les textes seront des chaînes simples xs:string.
Vous utiliserez les types complexes numerosType et contactType pour construire un schéma nommé
annuaire.xsd.

Exercice 5

Construction de types simples

Créez un schéma annuaire2.xsd à partir du schéma de l’exercice précédent.


Définissez et utilisez les types simples suivants :

o technoType : énumération dont les valeurs possibles sont XML, Java, Autre.
o telType : liste de 5 entiers (attention : créez d’abord un type pour la liste d’entiers).
o emailType : pattern [a-z]+@[a-z]+\.[a-z]{2,3}

Validez ce nouveau schéma sur un document de votre conception.

XSLT transformation:

XSL (eXtensible Stylesheet Language) est un langage de style pour XML.

XSLT signifie XSL Transformations.


Ce tutoriel vous apprendra à utiliser XSLT pour transformer les documents XML en d’autres formats
(comme la transformation de XML en HTML).

XSLT = XSL Transformations

XSLT utilise XPath


XSLT utilise XPath pour trouver des informations dans un document XML. XPath est utilisé pour
naviguer à travers les éléments et les attributs dans les documents XML.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 23 sur 34


comment ça fonctionne ?
Dans le processus de transformation, XSLT utilise XPath pour définir des parties du document source
qui devraient correspondre à un ou plusieurs modèles prédéfinis. Lorsqu’une correspondance est
trouvée, XSLT transforme la partie correspondante du document source en document de résultat.

C’est quoi XPath?


XPath est un élément majeur de la norme XSLT.

XPath peut être utilisé pour naviguer à travers des éléments et des attributs dans un document
XML.

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 24 sur 34


Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 25 sur 34
Sélection d’éléments et attributs :

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 26 sur 34


Filtrage :

Collections

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 27 sur 34


Prédicats composés

Exemple XPath

<?xml version="1.0" encoding="UTF-8"?>

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 28 sur 34


<bookstore>

<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>

<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>

</bookstore>

Selection Noeuds
XPath utilise des expressions de chemin pour sélectionner les nœuds dans un document XML. Le
nœud est sélectionné en suivant un chemin ou des étapes. Les expressions de chemin les plus
utiles sont énumérées ci-dessous :

Expression Description

nodename Selection tous les noeuds avec nom ‘’nodename’’

selection à partir du noeud racine

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 29 sur 34


//
Sélectionne les nœuds dans le document à partir du nœud actuel qui correspondent
à la sélection, peu importe où ils se trouvent

. Sélectionne le nœud courant

..

séléctionne le pere du noeud courant

@ Sélectionne les attributs

Path Expression Result

bookstore Séléctionne tous les noeuds avec nom bookstore

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 30 sur 34


/bookstore

Selection l’élement bookstore

Note: If the path starts with a slash ( / ) it always


represents an absolute path to an elem ent!
bookstore/book
Sélectionne tous éléments qui sont fils de
bookstore

//book
Sélectionne tous les éléments book , peu importe où ils
se trouve dans le document
bookstore//book Selects all book elements that are descendant of the
bookstore element, no matter where they are
under the bookstore element
Séléctionne tous éléments book qui sont
descendants de l’élément bookstore

//@lang Séléctionne tous les attributs nommé lang

Prédicats
Les prédicats sont utilisés
pour trouver un nœud contient
une valeur
spécifique ou un nœud qui le tableau prédicats et le cirésu
spécifique. Les prédicats sont ltat
toujours intégrés dans des
supports carrés. Dans
dessous, nous avons
énuméré quelques
expressions de chemin avec
des des expressions :

Path Expression Result

/bookstore/book[1]
Séléctionne le premier élément book qui est fils de l’élément
bookstore

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 31 sur 34


/bookstore/book[last(
Séléctionne le dernier élément book qui est fils de l’élément
)]
bookstore
/bookstore/book[last(Selects the last but one book element that is the child of the
)-1] bookstore element

/bookstore/book[posi
Séléctionne le premier,deuxiéme éléments book qui sont fils de
tion()<3]
l’élément bookstore
//title[@lang]
Sélectionne tous éléments book qui ont l’attibut lang

//title[@lang='en']
Sélectionne tous éléments book qui ont l’attibut lang égal à en

/bookstore/book[pric Sélectionne tous éléments book de l’élément bookstore avec prix


e>35.00] est supérieur à 35.00

/bookstore/book[pric
e>35.00]/t itle Sélectionne tous éléments title de l’élément book de l’élément
bookstore avec prix est supérieur à 35.00

Séléction les noeuds anonymes

Les wildcards XPath peuvent être utilisés pour sélectionner des nœuds XML inconnus.

Wildcard Description

* Matches any element node

@* Matches any attribute node

node() Matches any node of any kind

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 32 sur 34


Dans le tableau ci-dessous, nous avons énuméré quelques expressions de chemin et le résultat des
expressions:

Path Expression Result

/bookstore/*
Selects all the child element nodes of the
bookstore element.

//* Selects all elements in the document

//title[@*]
Selects all title elements which have at least one
attribute of any kind

Sélection de plusieurs chemins

En utilisant le | opérateur dans une expression XPath, vous pouvez sélectionner plusieurs chemins.

Dans le tableau ci-dessous, nous avons énuméré quelques expressions de chemin et le résultat des
expressions:

Path Expression Result

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 33 sur 34


//book/title | //book/price
Sélectionne tous les éléments de title et élément
price de tous les éléments du book

//title | //price

Sélectionne tous les éléments de title et de price


dans le document

/bookstore/book/title | //price
Sélectionne tous les éléments de title de l’élément
book de l’élément bookstore ET tous les éléments
de price dans le document

Cours XML/DTD/XSD/XPATH/XSLT Développement web coté client Page 34 sur 34

Vous aimerez peut-être aussi