Vous êtes sur la page 1sur 18

Defaut DTD

les DTD ne sont pas au format XML. Nous avons dû apprendre un nouveau langage avec sa propre syntaxe et ses
propres règles.

Le second défaut que l'on retiendra dans ce cours est que les DTD ne permettent pas de typer des données. Comme vous avez
pu le voir, on se contente d'indiquer qu'une balise contient des données, mais impossible de préciser si l'on souhaite que ça
soit
un nombre entier, un nombre décimal, une date, une chaîne de caractères, etc

C'est pour pallier les défauts des DTD que les Schémas XML ont été créés

le fichier n'a pas cette extension. Un fichier dans


lequel est écrit un Schéma XML porte l'extension ".xsd".

le corps d'un Schéma XML

l'élément racine est <xsd:schema />

Le référencement d'un schéma XML se fait au niveau de l'élément racine du fichier XML grâce à l'utilisation de 2 attributs.
Default value

Constant
Au cours des chapitres précédents, nous avons vu ensemble ce qu'est un élément simple, à savoir un élément qui ne contient
qu'une valeur dont le type est dit simple. Un élément simple ne contient pas d'autres éléments ni aucun attribut.

Un élément complexe est un élément qui contient d'autres éléments ou des attributs.
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.
Le choix

Cet extrait signifie donc que la balise <personne /> contient soit la balise <nom />, soit <prenom />
XPath est une technologie qui permet d'extraire des informations (éléments, attributs, commentaires, etc...) d'un document
XML
via l'écriture d'expressions dont la syntaxe rappelle les expressions rationnelles utilisées dans d'autres langages.

Si XPath n'est pas un langage de programmation en soit, cette technologie fournit tout un vocabulaire pour écrire des
expressions permettant d'accéder directement auxinformations souhaitées sans avoir à parcourir tout l'arbre XML.
Si je veuxrécupérer par exemple le numéro de fixe voici le chemin à parcourir :
Etape 1 : nœud "repertoire".
Etape 2 : descendre au nœud enfant "personne".
Etape 3 : descendre au nœud enfant "telephones".
Etape 4 : descendre au nœud enfant "telephone" dont l'attribut est "fixe".

Sans rentrer dans les détails, l'expression XPath correspondante ressemblera à quelque chose comme ça :

/étape1/étape2/étape3/étape4

Les chemins absolus


Le chemin absolu est le type de chemin que nous avons utilisé dans notre exemple. Le nœud de départ est toujours la racine
de l'arbre XML.

/étape1/étape2/étape3
Les chemins relatifs
Si un chemin absolu est un chemin dont le nœud de départ est toujours la racine de l'arbre XML, un chemin relatif accepte
quant à lui n'importe quel nœud de l'arbre XML comme point de départ.

Une expression XPath utilisant un chemin relatif est facilement identifiable car elle ne commence pas par le caractère "/"

étape1/étape2/étape3

la syntaxe nous permettant de les ordonner et ainsi de pouvoir écrire une étape compatible avec XPath :

axe::nœud[predicat][predicat]...[predicat]

L'axe
L'axe va nous permettre de définir le sens de la recherche. Par exemple, si l'on souhaite se diriger vers un nœud enfant ou au
contraire remonter vers un nœud parent voir un ancêtre
<repertoire>
<!-- John DOE -->
<personne sexe="masculin">
<nom>DOE</nom>
<prenom>John</prenom>
<adresse>
<numero>7</numero>
<voie type="impasse">impasse du chemin</voie>
<codePostal>75015</codePostal>
<ville>PARIS</ville>
<pays>FRANCE</pays>
</adresse>
<telephones>
<telephone type="fixe">01 02 03 04 05</telephone>
<telephone type="portable">06 07 08 09 10</telephone>
</telephones>

récupérer le nœud contenant le numéro de téléphone fixe de John DOE

/repertoire/personne/telephones/telephone[@type="fixe"]

type!="fixe"
Voici donc la liste des expressions XPath à écrire :
-Sélectionner tous les nœuds descendants du deuxième nœud "personne".
-Sélectionner le nœud "personne" correspondant au individu ayant au moins 2 numéros de téléphone.
-Sélectionner tous les nœuds "personne".
-Sélectionner le deuxième nœud "personne" dont le pays de domiciliation est la France .
-Sélectionner tous les nœuds "personne" de sexe masculin le pays de domiciliation est les Etats-Unis

/repertoire/personne[position()=2]/descendant::*
/repertoire/personne[count(telephones/telephone) > 1]
/repertoire/personne[adresse/pays="FRANCE"][position()=2]

/repertoire/personne[@sexe="masculin"][adresse/pays="USA"]

Partie 4 : Transformez vos documents XML

XSLT ou eXtensible Stylesheet Language Transformations est une technologie qui permet de transformer les
informations
d'un document XML vers un autre type de document comme un autre document XML ou encore une page web.

Comment ça marche ?
Le principe de fonctionnement est assez simple : un document XSLT est associé à un document XML afin de créer un
nouveau
document d'une nature différente ou identique
la première ligne d'un document XSLT est :
<?xml version="1.0" encoding="UTF-8" ?>

l'élément racine est donc <xsl:stylesheet />.

Le référencement d'un document XSLT se fait au niveau du document XML dont les informations seront utilisées au cours
de la
transformation.

<?xml-stylesheet type="text/xsl" href= "mon_document.xsl" ?>


Les templates

Le corps d'un document XSLT est composé d'un ensemble de templates.

Un template est défini par la balise <xsl:template /> à laquelle plusieurs attributs peuvent être associés.

L'attribut match permet de renseigner une expression XPath. Cette expression XPath permet alors de sélectionner les
informations du documents XML auxquelles le template s'applique.

L'attribut name est le nom donné au template, permettant de l'identifier de manière unique. Cet attribut est important
puisque nous verrons par la suite qu'il n'ai pas rare qu'un template en appelle un autre.

Lorsque nous écrirons nos templates, il est important de renseigner l'un ou l'autre des 2 attributs match et name, jamais
les deux en même temps

Vous aimerez peut-être aussi