Sie sind auf Seite 1von 61

MIF13

Programmation Web
TECHNOLOGIES
CT CLIENT
( 1 RE P A R T I E : L A N G A G E S D E
STRUCTURATION
DOCUMENTAIRE)
LIONEL MDINI
SEPTEMBRE-DCEMBRE 2013

Plan du cours
Partie 1 : langages de structuration documentaire

Localisation et identification de ressources

URL, URN et URI

Introduction aux langages balises et aux langages ddis au Web


XML
Syntaxe et applications
Notion despaces de noms

Validation de documents
DTD
Comparaison DTD / Schmas XML

XSL : transformation darbres

MIF 18

Schmas XML
Xpath

Partie 2 : langages de description de pages Web

URI, URL et URN


URI : Uniform Resource Identifier
But : identifier de faon unique une ressource sur le web

En disant o elle se trouve

Donner son URL (Uniform Resource Locator)


Format : protocole ":" chemin "/" nom de fichier "/" requte
http://www.w3.org/2001/XMLSchema
Permet daccder rellement la ressource (tant quelle existe)
Enregistrement des DNS auprs de lentit concerne

URI, URL et URN


URI : Uniform Resource Identifier
But : identifier de faon unique une ressource sur le web

En disant comment elle sappelle

Donner son URN (Uniform Resource Name)


Format : "URN:" NID (namespace identifier) ":" NSS (namespace
specific string)
URN:ISBN:0-395-36341-1
Choix plus libre , et correspondant mieux la dfinition dun espace
de noms
Enregistrement des NID lIANA (Internet Assigned Numbers
Authority)

URI, URL et URN


URI : Uniform Resource Identifier
But : identifier de faon unique une ressource sur le web
Syntaxe gnrique

scheme ":" autorit ":" chemin ":" requte ":" fragment


Avec le temps, on sest mis penser que urn peut aussi tre un URI
scheme

On nutilise plus que la notion dURI pour dsigner les

ressources
Un URI ne signifie rien pour un processeur XML, qui le
transmet tel quel lapplication

URI, URL et URN


On parle maintenant aussi dIRI

Internationalized Resource Identifier


Une IRI est une URI acceptant des caractres Unicode
Exemple :

Remarque : ncessite un protocole similaire DNS, mais grant les noms


de domaine Unicode : Internationalized Domain Name (IDN)
Rfrence : http://www.w3.org/International/articles/idn-and-iri/

Introduction aux langages balises


Dfinitions
Donne : valeur associe un type de donnes
Dcrite par des caractristiques de forme
Indpendante de son interprtation : donne brute

lment dinformation : ensemble de donnes faisant sens

On parle aussi de grains dinformation

Document : regroupement cohrent dlments dinformation


Autour dune thmatique commune
Selon une structure donne

Introduction aux langages balises


Dfinitions
Information structure : bases de donnes
lments dinformation stocks sparment
Accs par requtes
Traitements facilits

Information non structure : corpus documentaires


lments dinformation stocks sous forme de textes
Accs par recherche dinformation
Traitements complexes

Information semi-structure : langages balises


lments dinformation stocks dans des documents
Permet les deux types daccs et de traitements

Introduction aux langages balises


Dfinitions
Balise : signe marquant une position particulire
Signe = lment dinformation
Marquer = permettre la distinction

Position = par rapport lespace considr

Ex : espace 3D (avion), 2D (bateau), 1D (document)

Particulire = en gnral, la position dun lment de lespace quon


cherche reprer

Ex : fuse de dtresse, signal radio, tag HTML

Ex : aroport, bateau, lment dinformation

Type dinformation facilement reprable permettant didentifier


dautres lments informationnels (i.e. mta-information )

Introduction aux langages balises


Dfinitions
Balisage documentaire : utilisation de balises
Pour marquer des points prcis dun document
Pour marquer des zones (segments) de document

Balisage de dbut et de fin de zone

Pour structurer le document

Utilisation de plusieurs types de balises


En

fonction du type dlment marquer


En fonction du type de marquage (point, dbut, fin)

Langage balises : langage de description de documents


utilisant ces techniques de balisage
lment : une balise et son contenu

Introduction aux langages balises


Quelques langages balises
Langages de balisage procdural : permettent de dcrire la
mise en forme (formatage) dun document

Langages de balisage descriptif : se contentent de dcrire les


donnes, sans but de traitement

Ex : PS, RTF, TeX, HTML

Ex : RDF, OWL, MathML

Mta-langages de balisage : permettent de dfinir des


langages de balisage

Ex : SGML, XML

Introduction aux langages balises


Le langage Postscript
%!PS-Adobe-3.0
%%Title: Microsoft Word Document1
%%Creator: PSCRIPT.DRV
Version 4.0
%%CreationDate: 03/02/02
10:47:00

%%EndComments
%%BeginProlog
%%BeginProcSet:
Pscript_Res_Emul 1.0 0
/defineresource
where{pop}{userdict
begin/defineresource{userdict/
Resources 2

}ifelse}bind readonly def


end}ifelse
%%EndProcSet

%%BeginResource: file

%%EndResource

%%EndProlog
%%BeginSetup

%%BeginFeature: *PageSize
A4

%%EndFeature

%%EndSetup
%%Page: 1 1
%%BeginPageSetup

%%EndPageSetup

%%IncludeFont: Courier

(Courier) cvn /Type1

(Essai impression)S

(%%[ Page: 1 ]%%) =


%%PageTrailer
%%Trailer
%%DocumentNeededFonts:
%%DocumentSuppliedFonts:
/Pscript_Win_Driver /ProcSet
findresource dup /terminate get
exec
Pscript_Win_Compat dup
/terminate get exec
%%Pages: 1
(%%[ LastPage ]%%) =
%%EOF

Introduction aux langages balises


Le langage RTF
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\
deflang1036\deflangfe1036{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose
02020603050405020304}Times New Roman;}{\f36\froman\fcharset238\fprq2 Times New Roman
CE;}{\f37\froman\fcharset204\fprq2 Times New Roman Cyr;}
{\f43\froman\fcharset186\fprq2 Times New Roman Baltic;}
{\f44\froman\fcharset163\fprq2 Times New Roman Vietnamese);}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue
0;\red255\green0\blue255; ;}
{\stylesheet{\qj \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 ;}
{\*\rsidtbl \rsid4480262\rsid8274010\rsid11750514\rsid15757863}
{\*\generator Microsoft Word 10.0.2627;}{\info{\title Bonjour}{\author Medini}
{\operator Medini}{\creatim\yr2004\mo2\dy25\min49}{\*\company UCBL}
\paperw11906\paperh16838\margl1417\margr1417\margt1417\margb1417\ltrsect
\deftab708\widowctrl

{\rtlch \af0 \ltrch \insrsid8274010 Bonjour}


{\rtlch \af0 \ltrch \insrsid15757863 \par }}

Introduction aux langages balises


Les langages ddis au Web
Historique 1/3
1960-1986 : SGML (norme ISO) et DTD
1989 : ODA (norme ISO, concurrent de SGML)
Fin des annes 80 : apparition/essor du web
1992-1997 : HTML (versions 1.0 -> 4.01)
Octobre 1994 : cration du World Wide Web Consortium (W3C) :
http://www.w3.org
Dcembre 1996 : CSS Level 1 (fonctionnalits de base, rv. 01/99)
Fvrier 1998 : XML version 1.0
Mai 1998 : CSS Level 2 (fonctionnalits supplmentaires, rv.
04/08)
Octobre 1998 DOM Level 1 (supporte XML et HTML)
Dcembre 1999 : XHTML 1.0

Introduction aux langages balises


Les langages ddis au Web
Historique 2/3
1999 : RDF et RDF-Schema 1.0 (rv. 2004)
Novembre 2000 : DOM Level 2 (support CSS & namespaces XML)
Mai 2001 : schmas XML 1.0
Mai 2001 : XHTML 1.1 (module-based)
Juillet 2001 : SVG 1.0
Novembre 2001 : XSL 1.0
Janvier 2003 : SVG 1.1
Fvrier 2004 : XML 1.1 (rv. aot 2006 )
Fvrier 2004 : OWL 1.0
Avril 2004 : DOM Level 3 Core
Octobre 2004 : XML Schema (2e edition)

Introduction aux langages balises


Les langages ddis au Web
Historique 3/3
Janvier 2007 : XQuery 1.0
Janvier 2007 : XPath 2.0
Janvier 2007 : XSLT 2.0
Avril 2007 : SOAP 1.2
Juin 2007 : WSDL 2.0
Juillet 2008 : XHTML 1.1 Basic
Octobre 2008 : XHTML Modularization 1.1
Septembre 2009 : CSS level 2.1 (normalisation de fonctionnalits
existantes)
Septembre 2009 : HTML 5 (editor draft)

Restent en dveloppement : CSS L3, DOM L3, HTML5

Introduction aux langages balises


Quelques langages ddis au Web

SOAP/RPC

MathML

SGML

SVG

XML

SMIL

P3P

PICS

RDF

HTML

Applications
(DTD) SGML

XSL

XHTML

Applications
XML

OWL

RDF-Schma

Surcouches
RDF

Introduction aux langages balises


Plus tout ce que vous ne trouverez pas sur le site du

W3C

Protocoles (IETF)
JavaScript (EcmaScript)
Unicode
JSON

XML : principes de base


DTD de SGML (beaucoup plus concis)
Restrictions de syntaxe et non de contenu
Au mme titre que SGML, cest un mta-langage de

description des donnes

a ne sert rien
a permet de dfinir des applications pour faire ce quon veut avec

Visualiser des pages web


Dcrire des images
changer des donnes quelconques

V 1.0 : fv. 1998 -> 26 nov. 2008 (5me dition)


V 1.1 : 04 fv. 2004 ; 16 aot 2006 (2me d.)
Diffrences 1.0 vs 1.1 : http://www.w3.org/TR/2006/REC-xml1120060816/#sec-xml11

XML : composants
XML (syntaxe) : documents bien forms
DTD/schmas XML : documents valides
Processeur (parser) XML : analyse et traitement
DOM : modle arborescent des donnes dun document

pour un langage de programmation


SAX : accs simple aux donnes (programmation
vnementielle)
Espaces de noms ( namespaces ) : interoprabilit des
applications
XBase, XPointer, XLink : mcanismes de liens
XSL : mcanismes de transformation

XML : syntaxe
Un document XML bien form est compos
Dun prologue, contenant :

ventuellement une dclaration XML

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


standalone="yes"?>

ventuellement une dclaration de type de document

<!DOCTYPE Nom_de_l_lment_racine Type_de_source


emplacement1 emplacement2 [sous-ensemble interne de
DTD]>
Dun lment racine , compos :
Soit dune balise ouvrante, ventuellement dun contenu et dune balise
fermante
<NomElement attribut1="valeur1" attribut2="valeur2"...>
contenu
</NomElement>

XML : syntaxe
Un document XML bien form est compos
Dun prologue, contenant :

ventuellement une dclaration XML

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


standalone="yes"?>

ventuellement une dclaration de type de document

<!DOCTYPE Nom_de_l_lment_racine Type_de_source


emplacement1 emplacement2 [sous-ensemble interne de
DTD]>
Dun lment racine , compos :
Soit dune balise dlment vide
<Nom_element_vide att1="val1" att2="val2"... />

XML : syntaxe
Remarques
Structure
Un contenu est compos de texte et / ou dautres lments appels
fils de llment courant
Le texte est appel donnes caractres analysables ou PCDATA
(pour Parsed Character DATA).
Le contenu autoris pour le PCDATA dpend du type dencodage
choisi
Le fait davoir un unique lment racine, des lments fils, euxmmes dcomposables, etc. dfinit une structure arborescente
Pas de chevauchement de balises entre un lment pre et un
lment fils

XML : syntaxe
Remarques
Caractres spciaux
Les caractres "<" (infrieur) et "&" (esperlute) sont interdits
dans les contenus. On aura recours aux entits "&lt;" et "&amp;".
Lusage de ">" (suprieur) ou des guillemets simples ou doubles
peut galement tre perturbant. Dans ce cas, on a recours
"&gt;", "&apos;" et "&quot;".
Si lon veut vraiment utiliser les caractres "<" ou "&", il est
possible de dfinir une balise sous forme de zone de caractres non
analyss (CDATA), sous la forme :

<![CDATA [ texte comprenant des caractres


interdits ]]>

Document XML valide : les DTD


Gnralits
Hrites de SGML
Syntaxe : grammaire EBNF
Partie intgrante de la recommandation XML
Reconnues par tous les parsers XML validants
Composants
Dclaration de type de document (dans le document XML)
Dfinition de type de document (interne ou externe)

Document XML valide : les DTD


Dclaration de type de document
Une et une seule par document XML
Place
Aprs la dclaration XML
Avant le dbut de llment racine du document

Syntaxe gnrique

<!DOCTYPE Nom_lment_racine Type_de_source


emplacement1 emplacement2 [sous-ensemble interne
de DTD]>

Document XML valide : les DTD


Dclaration de type de document
<!DOCTYPE Nom_lment_racine Type_de_source emplacement1
emplacement2 [sous-ensemble interne de DTD]>

Types de sources

Emplacements des fichiers DTD

Sources de type SYSTEM

DTD internes

<!DOCTYPE Nom_lment_racine SYSTEM [sous-ensemble interne]>

DTD externes
Un seul emplacement possible
Indiqu par une URL

<!DOCTYPE Nom_lment_racine SYSTEM "../DTD/nom_fichier.dtd">


<!DOCTYPE Nom_lment_racine SYSTEM
"http://www.une_url_quelconque.com.nom_fichier.dtd">

Document XML valide : les DTD


Dclaration de type de document
<!DOCTYPE Nom_lment_racine Type_de_source emplacement1
emplacement2 [sous-ensemble interne de DTD]>

Sources de type PUBLIC


Uniquement des DTD externes
Un ou deux emplacements possibles
Indiqus par

Un identificateur public (reconnu par lapplication)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
Un identificateur public + une URI
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ELEMENT : un lment XML et son contenu

Syntaxe : <!ELEMENT nom_elt (contenu)>

Types de contenu
Autres lment(s)
#PCDATA (pour Parsed Character DATA )
mixte (lment(s) + PCDATA)
#ANY (nimporte quel type de contenu XML bien form)
#EMPTY

Pour lments ou mixte : indiquer leur(s) nom(s) spars par des


virgules ( , : ET) ou des pipes ( | : OU)
Pour lments, PCDATA ou mixte : contenus entre parenthses

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ELEMENT : un lment XML et son contenu

Oprateurs de cardinalit
"" (rien) : une et une seule occurrence
"?" : zro ou une occurrence
"*" : zro, une ou plusieurs occurrences
"+" : une ou plusieurs occurrences

Remarque : les oprateurs de cardinalit sont postfixs

Exemple de dfinition dlment

Document XML valide : les DTD


<?xml version="1.0" standalone="no"?>
<!DOCTYPE Texte SYSTEM "Texte.dtd">
<Texte>
<Titre>
<Mot>XML</Mot>
</Titre>
<Phrase>
<Mot>XML</Mot>
<Mot>c</Mot>
<Ponctuation></Ponctuation>
<Mot>est</Mot>
<Mot>chouette</Mot>
<Ponctuation>.</Ponctuation>
</Phrase>
</Texte>
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT

Texte (Titre, Phrase+)>


Titre (Mot+,(Ponctuation, Mot+)*)>
Phrase (Ponctuation?, (Mot+, Ponctuation)+)>
Mot (#PCDATA)>
Ponctuation (#PCDATA)>

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ATTLIST : ensemble des attributs dun lment XML


Syntaxe
<!ATTLIST nom_element
nom_att type_att dclaration_valeur_implicite>
Types dattributs
CDATA : chane textuelle simple
Valeurs numres dans une liste entre parenthses et spars par des pipes.
ID : identifiant unique ; un seul attribut ID par lment
IDREF : rfrence un lment identifi par son attribut ID
IDREFS : liste de plusieurs IDREF spars par des espaces
NMTOKEN : jeton de nom qui permet de limiter le nombre de valeurs que peut
prendre lattribut
NMTOKENS : liste de jetons de noms spars par des espaces.
ENTITY : nom dune entit prdfinie
ENTITIES : liste de plusieurs entits spars par des espaces
NOTATION : type de notation dclar ailleurs dans la DTD

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ATTLIST : ensemble des attributs dun lment XML


Syntaxe
<!ATTLIST nom_element
nom_att type_att dclaration_valeur_implicite>

Dclaration de valeur implicite


#REQUIRED : obligatoire
#IMPLIED : facultatif sans valeur par dfaut
"valeur" : facultatif avec valeur par dfaut
#FIXED "valeur" : facultatif, mais sil est prsent, il doit
obligatoirement avoir la valeur indique

Document XML valide : les DTD


<Livre titre="Dvelopper en XML avec Java 2"
auteurs="C. Daconta, Al Saganich"
isbn="2-7440-1099-5"
editeur="CampusPress"
idlivre="L1">
<Table_des_matieres>
...
</Table_des_matieres>
<Resume>
...
</Resume>
<!ELEMENT Livre (Table_des_matieres, Resume)>
</Livre>
<!ATTLIST Livre
titre
CDATA
#REQUIRED
isbn
CDATA
#REQUIRED
auteurs
CDATA
#REQUIRED
editeur
CDATA
#IMPLIED
date_publi
CDATA
#IMPLIED
prix
CDATA
"0"
avis
(TB|B|P)
#IMPLIED
idlivre
ID
#REQUIRED>

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ENTITY : squence de caractres repre par un nom


Syntaxes
<!ENTITY
<!ENTITY
<!ENTITY
<!ENTITY

nom_entit "valeur">
% nom_entit "valeur">
nom_entit SYSTEM "URL">
nom_entit PUBLIC "URL1" "URL2">

Associent nom_entit soit la valeur entre guillemets, soit la valeur


dfinie dans la ressource pointe par les URL.
Les deux premiers exemples dfinissent des entits internes et les
deux derniers des entits externes

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

ENTITY : squence de caractres repre par un nom


Syntaxes
<!ENTITY
<!ENTITY
<!ENTITY
<!ENTITY

nom_entit "valeur">
% nom_entit "valeur">
nom_entit SYSTEM "URL">
nom_entit PUBLIC "URL1" "URL2">

Le deuxime exemple dfinit une entit paramtre , qui nest


utilisable que dans la DTD et rfrenable par %nom_entit;
les trois autres dfinissent des entits gnrales rfrenables par
&nom_entit; dans la DTD et dans le document XML

Document XML valide : les DTD


Dfinition de type de document
Quatre types de donnes

NOTATION : squence de caractres non XML destines tre


traites par une application particulire
Syntaxes
<!NOTATION nom_notation SYSTEM "URL">
<!NOTATION nom_notation PUBLIC "URL1" "URL2">
Les notations sont dclares comme des entits externes
Il est possible dutiliser les noms de notations comme types dattributs

Document XML valide : les schmas XML


Comparaison DTD/Schmas
Caractristique
Syntaxe
Outils
Supports DOM/SAX
Modles de contenu

Typage des donnes


Hritage
Extensibilit
Contraintes lgales

Nombre de vocabulaires
supports
Dynamicit

DTD
Schmas
Notation EBNF + pseudo-XML
XML 1.0
Outils SGML existants (chers et
Tous les outils XML existants et venir
complexes)
Non
Oui (comme pour les fichiers XML).
Listes : ordonnes ou de choix
Listes : ordonnes et de choix (dtails de
Cardinalit : 0, 1 ou plusieurs
contenus mixtes)
occurrences
cardinalit : spcification dun nombre
Pas dlments nomms ou de
exact doccurrences possible
groupes dattributs.
groupes de modles nomms
Faible (chanes, jetons nominaux, ID)
Fort (nombres, chanes, date/heure, boolen,
structures)
Non
Oui
Non (pas sans modification de la
Oui (puisque fonds sur lextensibilit de XML)
recommandation XML)
Compatibilit avec SGML
Aucune (simplement des emprunts aux
DTD, comme pour les types de donnes)
Une seule DTD par document
Autant que ncessaire (grce aux espaces de
noms)
Aucune : les DTD sont en lecture seule
Peuvent tre modifis dynamiquement

Espaces de noms XML


Espaces de noms XML
Position du problme
Libert de choix des noms des balises et des attributs pour chaque
application XML
Besoin dassocier plusieurs applications dans un mme document
Conflits et polysmie entre ces noms/attributs

Solution

Association des noms de balises et dattributs lURI de


lapplication concerne
Choix dune URI pour lapplication
Prfixage des noms locaux de balises et dattributs par une
chane de caractres reprsentant lURI

Espaces de noms XML


Espaces de noms XML
Syntaxe : PrefixeDEspaceDeNoms:NomLocal
Nom pleinement qualifi (qualified name ou QName)

Association dun prfixe un URI


Attribut xmlns
Exemple

<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">

<xhtml:div xhtml:class="monstyledediv">

</xhtml:html>

Espaces de noms XML


Espaces de noms XML
Remarques
Porte : llment porteur de lattribut xmlns
Bien entendu, un document XML peut contenir des lments se
rfrant plusieurs espaces de noms
Le prfixe en lui-mme na aucune signification
En interne, le parser passe lapplication des noms pleinement
qualifis , o le prfixe est remplac par la valeur de lURI

Espaces de noms XML


Espaces de noms XML

Espace de noms par dfaut

Annulation despaces de noms

Pas de prfixe despace de noms


Exemple : <html
xmlns="http://www.w3.org/1999/xhtml">
Par valeur de lattribut
xmlns vide : xmlns=""

Exemple de code

<?xml version="1.0"?>
<CV xmlns="http://www.univ-lyon1.fr/etds/CV/english"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<personne>
<civil_status>
<title>Mr.</title>
</civil-status>
...
</personne>
<xhtml:html>
<xhtml:head>
<xhtml:title>CV of a student</xhtml:title>
</xhtml:head>
<xhtml:body>
...
</xhtml:body>
</xhtml:html>
</CV>

Transformation darbres XML : XSL


Caractristiques de XSL
Officiellement : XML Stylesheet Language
En pratique, a ne sert rien dappliquer des lments de style
un document XML
Mais XSL fournit un mcanisme trs puissant pour
transformer un arbre XML
En un autre arbre XML (change de donnes)
En un arbre XHTML (visualisation des donnes XML)
En un texte simple (fichier non destin une application utilisant
un parser XML)
En un document papier formatt (XSL-FO)

Transformation darbres XML : XSL


Utilisation la plus courante de XSL
Niveau
structuration

Niveau
composition

Arbre XML source


(donnes)

Application : navigateur
Processeur XML

DTD ou schma XML


(structure)

XPath

Description de larbre rsultant


(modle de transformation XSL)

Processeur XSLT

Donnes et mtadonnes

Mise en forme
(feuilles de style CSS)
Niveau
visualisation

Document XHTML

Transformation darbres XML : XSL


Les deux composants de XSL
XPath

Permet de pointer vers les donnes de larbre XML

pour le parcours de documents XML


pour le test de valeurs associes aux contenus ou aux attributs
dlments

Ne respecte pas la syntaxe XML

pour ne pas perturber lanalyse des feuilles de style XSLT par le


parser XML

Transformation darbres XML : XSL


Les deux composants de XSL
XPath

Nud

Tout type de donnes (lment, attribut, PI)


Racine du document : '/
Les lments sont identifis par leurs noms
Les attributs sont identifis par '@' suivi du nom de lattribut

Chemin de localisation

Absolu : partir de la racine de larbre XPath


Relatif : partir du nud contextuel
Rcursif : partir du nud contextuel, mais seulement vers le bas

Transformation darbres XML : XSL


Les deux composants de XSL
XPath

Axes de navigation

Dplacements complexes dans larbre XPath


Syntaxe : Nom_D_Axe::Nom_De_Noeud
Recommandation : http://www.w3.org/TR/xpath20/#axes

Nom daxe
self

Description

Exemple dutilisation/
syntaxe abrge

Nud contextuel
self::node()
ou
Transformation
darbres XML
:
XSL
./node() ou .

child

Enfants du nud contextuel

child::Etat_civil ou
Etat_civil (dfaut)

descendant

Tout enfant, petit enfant etc. du nud contextuel

descendant::Etat_civil

descendant-or-self Comme descendant + le nud contextuel lui-mme

descendant-or-self::
Etat_civil ou .//Etat_civil

parent

Parent du nud contextuel

parent::Prenom ou
../Prenom

ancestor

Tout parent, grand parent etc. du nud contextuel

ancestor::Prenom

ancestor-or-self

Comme parent + le nud contextuel lui-mme

ancestor-or-self::Prenom

following-sibling

Tous les frres suivants du nud contextuel (vide si le nud following-sibling::Nom


est un attribut)

preceding-sibling

Tous les frres prcdents du nud contextuel (vide si le


nud est un attribut)

preceding-sibling::Prenom

following

followingsibling + descendants de tous les nuds frres


suivants

following::Nom

preceding

precedingsibling + descendants de tous les nuds frres


prcdents

preceding::Prenom

attribute

Attributs du nud contextuel

attribute::id ou./@id

namespace

Tous les nuds appartenant au mme espace de noms que


le nud indiqu

namespace::xhtml:div

Transformation darbres XML : XSL


Les deux composants de XSL
XPath

Oprateurs et fonctions
Expression de caractristiques de slection complexes
Communs avec XQuery
Recommandation part entire :
http://www.w3.org/TR/xquery-operators/

Transformation darbres XML : XSL


Les deux composants de XSL
XPath

Oprateurs et fonctions
Accesseurs
Pour rcuprer un lment dun nud
Exemples : node-name(), string(), base-uri()

Gnration derreurs
error()

Gnration de traces
trace()

Constructeurs
Pour les types de donnes XML spcifiques
Exemple : MonType()

Casting entre types de donnes

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : principes de base
Description de larbre rsultant (programmation dclarative)
Application XML dfinissant des lments de transformation

Rfrence un espace de noms spcifique xsl:

lments et attributs spcifiques interprts par un processeur


XSLT
Structuration par modles ( templates ) de contenus

Dfinissant le traitement appliquer un lment repr par une


expression XPath
Imbriqus grce des mcanismes dapplication de templates
parallle avec les fonctions en programmation dclarative

Transformation darbres XML : XSL


Principe gnral de la transformation darbres
Requte XPath

Donnes et mta-donnes

Lgende
lment
attribut
texte

<CV xmlns="">
<Etudiant>
<Nom>Toto</Nom>
<Rubrique>
<Item>
<Contenu>1</Contenu>
<Contenu>2</Contenu>
<Contenu>3</Contenu>
</Item>
</Rubrique>
</Etudiant>
</CV>

Processeur
XSLT

Arbre XML source


(donnes)

Description de larbre rsultant


(feuille de style XSLT)
Modles de contenus
Conditions remplir pour ces modles
Spcification des donnes rcuprer

Arbre rsultat
(aprs transformation)

<html xmlns="">
<head>
<title>Toto </title>
</head>
<body>
<ul>
<li> 1 </li>
<li> 2 </li>
<li> 3 </li>
</ul>
</body>
</html>

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : syntaxe

lment racine

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

lments de premier niveau (cardinalit=0 ou 1)

<xsl:output> : dfinit le type darbre de sortie


Attribut method : 3 valeurs possibles (text, html, xml)
Autres attributs : version, encoding, standalone, indent
<xsl:include> et <xsl:import> : permettent dinclure dautres
feuilles de style
Attribut href : URI de la ressource inclure

Diffrence entre les deux : rgles de priorits

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : syntaxe

lments de premier niveau (cardinalit=0 ou 1)

<xsl:strip-space> et <xsl:preserve-space> : gestion des


espaces dans larbre rsultant (resp. suppression et conservation)
Attribut elements : noms des lments concerns spars par des
espaces
<xsl:template> : modle racine de larbre de sortie
Attribut match : dsigne le nud XPath concern par le modle (au
premier niveau, toujours "/")
Contient la racine de la dclaration de larbre de sortie
Autres lments (key, variable, attribute-set, param) : voir la
recommandation

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : les templates

Dfinition

Modles simples : <xsl:template match="noeud_XPath">

Lexpression XPath qui dfinit le nud peut inclure un filtre


Ce nud devient le nud contextuel dans le template
Modles nomms : <xsl:template name="nom_tmplate">

Appel

Modles simples :
<xsl:apply-templates select="expr_XPath" />
Lexpression XPath est un chemin de localisation qui dsigne le nud
Modles nomms :
<xsl:call-template name="nom_template" />

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : les lments

Gnration de contenus XML

<xsl:element name="p" namespace="xhtml">Contenu de


llment (ici: un paragraphe XHTML)</xsl:element>
Remarque : <xsl:element> nest ncessaire que lorsque le nom de
llment gnrer doit tre calcul
<xsl:attribute name="href" namespace="xhtml">Contenu
de lattribut (ici : rfrence XHTML)</xsl:attribute>
Remarque : <xsl:attribute> se place dans llment auquel il se
rapporte
<xsl:text>Contenu textuel quelconque.</xsl:text>
Remarque : <xsl:text> ne sert quau formatage du texte (gestion des
espaces)
Tout autre lment XML bien form est accept

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : les lments

Traitement de contenus de larbre XML source

<xsl:value-of select="expr_XPath" />

Permet dobtenir la valeur dun nud (lment ou attribut)


Lexpression XPath est un chemin de localisation
Elle dsigne un nud partir du nud contextuel
<xsl:copy-of select="expr_XPath" />
Permet de recopier dans larbre destination toute une partie de larbre
source
Lexpression XPath fonctionne comme prcdemment
<xsl:copy />
Permet de copier uniquement un lment sans ses sous-lments

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : les lments

Structures de contrle

<xsl:if test="expr_XPath">Contenu
conditionnel</xsl:if>
Le contenu conditionnel peut tre compos dautres lments
(<xsl:value-of select="expr_XPath" />)
<xsl:for-each select="expr_XPath">Contenu
rpt</xsl:for-each>
Cet lment est redondant avec <xsl:apply-templates /> mais
rend la feuille de style moins lisible

Transformation darbres XML : XSL


Les deux composants de XSL
XSLT : les lments

Structures de contrle

<xsl:choose>
<xsl:when test="expr_XPath1">
Contenu conditionnel 1
</xsl:when>
<xsl:when test="expr_XPath2">
Contenu conditionnel 2
</xsl:when>
...
<xsl:otherwise>
Contenu conditionnel n
</xsl:otherwise>
</xsl:choose>

XSLT
Exemple

<!-- enseignement.xml -->


<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="enseignement.xsl"?>
<enseignement>
<auteur>Lionel Mdini</auteur>
<cours>
<titre>TI1 - systmes d'information distribus</titre>
<niveau>Master 2</niveau>
</cours>
<cours>
<titre>MIF13 - programmation Web</titre>
<niveau>Master 1</niveau>
</cours>
</enseignement>

Directive dapplication
de la feuille de style
au document XML

<!-- enseignement.xsl autre possibilit, avec templates imbriqus -->


<!-- enseignement.xsl
-->
<?xml
version="1.0" encoding="UTF-8"?>
<?xml
version="1.0"
encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:template
match="/">
<html>
<html>
<head><title>Liste des cours de <xsl:value-of select="/enseignement/auteur"/></title></head>
<head><title>Liste
des cours de <xsl:value-of select="/enseignement/auteur"/></title></head>
<body>
<body>
<ul>
<ul>
<xsl:apply-templates select="enseignement/cours">
<xsl:for-each select="enseignement/cours">
</ul>
<xsl:sort select="niveau"/>
</body>
<li>
</html>
<span style="font-style: italic;"><xsl:value-of select="titre"/></span>
</xsl:template>
<span style="font-weight:
bold;"> (cours de <xsl:value-of select="niveau"/>)</span>
<xsl:template
match="cours">
</li>select="niveau"/>
<xsl:sort
<li></xsl:for-each>
</ul>style="font-style: italic;"><xsl:value-of select="titre"/></span>
<span
</body>
<span
style="font-weight: bold;"> (cours de <xsl:value-of select="niveau"/>)</span>
</html>
</li>
</xsl:template>
60
</xsl:template>
MIF13 2008-2009
</xsl:stylesheet>
</xsl:stylesheet>

Transformation darbres XML : XSL


Autre exemple (date de 2002)
ouvrir uniquement avec IE ou une application ad hoc

http://liris.cnrs.fr/~lmedini/LIA/LSI/Exam/Septembre/

Quelques outils
Dans un navigateur
IE : processeur XSLT incorpor MSXML (contrle ActiveX)
Gecko, WebKit : objet window.XSLTProcessor

En JavaScript : Google AJAXSLT


Dans HTML-Kit (diteur HTML WYSIWYG) : plugin ErgXSLT
En Java, intgr JAXP 2 (J2EE puis JEE5) :
TrAX Transformation API for XML (javax.xml.transform, xsltc)
En C / en PHP : libxslt (PHP 5)

Das könnte Ihnen auch gefallen