Professional Documents
Culture Documents
Par M.Youssfi
Origine du XML
L’origine du langage XML est SGML
La feuille XML représente les données du document sous forme d’un arbre
DTD ( Data Type Definition ) représente la déclaration des élément de la
feuille XML
La feuille de style définit la mise en forme des données de la feuille xml
Syntaxe d’un document
XML
Un document XML est composé de deux parties :
Le prologue, lui même composés de plusieurs parties
Une déclaration XML, qui permet de définir :
la version de XML utilisée,
le codage des caractères
Balise
C’est un mot clef choisi par le concepteur du document qui permet de
définir un élément.
Exemple : <formation>
Elément
C’est un objet XML défini entre une balise de début et une balise de fin.
La balise de fin porte le même nom que la balise de début, mais elle
est précédée d ’un "slash".
<formation>
Contenu de l ’élément
</formation>
Un élément peut contenir aussi d’autre éléments
Attribut
Une élément peut être qualifié par un ou plusieurs attributs. Ces
attributs ont la forme clef="valeur".
<formation code="T03" type="qualifiante" >
Document XML bien formé
Pour qu'un document soit bien formé, il doit obéir à
4 règles :
parfait exemple :
<!ELEMENT br EMPTY >
Une balise vide ne pourra en aucun cas contenir un élément fils.
Modèle différent.
Ce dernier modèle permet de créer des balises dont le contenu
est totalement libre.
Pour utiliser ce modèle, on utilise le mot ANY
<nom>na</no <nom>nb</no
m> m>
<prenom>pa</prenom <prenom>pb</preno
> m>
<tel <tel
type=‘portable’>0643423</tel> type=‘portable’>0613423</tel>
<tel <email>nb@hotmail.com</ema
type=‘domicile’>0223445</tel> il>
<email>na@yahoo.fr</emai <email>nb@yahoo.fr</emai
l> l>
<naissance <naissance
> >
<jour>22</jour <jour>12</jour
> >
<mois>12</mois <mois>11</mois
> >
<annee>1980</annee <annee>1984</annee
Exemple de DTD :
annuaire.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT annuaire (personne+) >
<!ELEMENT personne (nom,prenom,telephone+,email+,naissance) >
<!ELEMENT naissance (jour,mois,annee) >
<!ELEMENT nom (#PCDATA) >
<!ELEMENT prenom (#PCDATA) >
<!ELEMENT telephone (#PCDATA) >
<!ELEMENT email (#PCDATA) >
<!ELEMENT jour (#PCDATA) >
<!ELEMENT mois (#PCDATA) >
<!ELEMENT annee (#PCDATA) >
<!ATTLIST personne type (Etudiant|Prof|Personnel) 'Etudiant' >
<!ATTLIST personne code ID #REQUIRED >
<!ATTLIST telephone type (Portable|Bureau|Domicile) 'Portable' >
annuaire.xml
<?xml version="1.0" encoding="UTF-8"?> <personne code="b" type="Prof">
<!DOCTYPE annuaire SYSTEM "annuaire.dtd">
<nom>nb</nom>
<?xml-stylesheet href="annuaire.xsl" type="text/xsl"?>
<annuaire>
<prenom>pb</prenom>
<personne code="a" type="Etudiant"> <telephone
<nom>na</nom> type="Portable">061236578
<prenom>pa</prenom> </telephone>
<telephone type="Bureau">022443312</telephone> <email>nb@yahoo.com</email>
<telephone type="Domicile">022546789</telephone>
<naissance>
<telephone type="Portable">061235678</telephone>
<email>na@yahoo.fr</email> <jour>23</jour>
<email>na@hotmail.com</email> <mois>11</mois>
<naissance> <annee>1968</annee>
<jour>12</jour>
</naissance>
<mois>janvier</mois>
<annee>1980</annee>
</personne>
</naissance>
</personne> </annuaire>
Exemple d’affichage
souhaité
Feuille de style XSL : annauire.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<html>
<head>
<title>Annuaire</title>
</head>
<body>
<table border="1" width="80%">
<tr>
<td>Nom</td><td>Prénom</td><td>Type</td>
<td>Téléphone</td><td>Email</td><td>Naissance</td>
</tr>
<xsl:for-each select="annuaire/personne">
<tr>
<td><xsl:value-of select="nom"/></td>
<td><xsl:value-of select="prenom"/></td>
<td><xsl:value-of select="@type"/></td>
<td>
<ul>
<xsl:for-each select="telephone">
<li><xsl:value-of select="@type"/>:<xsl:value-of select="."/></li>
</xsl:for-each>
</ul>
Feuille de style XSL : annauire.xsl (suite)
<td>
<ol>
<xsl:for-each select="email">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ol>
</td>
<td>
<xsl:value-of select="naissance/jour"/>/
<xsl:value-of select="naissance/mois"/>/
<xsl:value-of select="naissance/annee"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>