Vous êtes sur la page 1sur 127

Le WEB

Gérard Florin

Laboratoire Cedric
Conservatoire National
des Arts et Métiers

1
Introduction

- Le 'World Wide Web' l’environnement


client serveur majeur des années 1990.

- Un foisonnement de propositions, de
standards, d’outils … en évolution au
jour le jour.

- Des secteurs multiples impliqués donc


des points de vue assez divers selon les
approches des différents métiers.
Réseaux et client serveur.
Gestion électronique de documents.
Interfaces homme machine.
Informatique de gestion.

Le mode client serveur incontournable


des années 1990 et suivantes.
(‘Killing application')

2
Le World Wide WEB: des avantages
majeurs

- Des logiciels très très largement .

- Assez interopérables entre les différents


fournisseurs dans les mécanismes de base
(difficultés entre fournisseurs de
navigateurs pour les fonctions avancées).

- Un format de présentation des données


(HTML+MIME) comprenant une IHM
conviviale d’affichage des ressources.

- Protocole HTTP très simple d’utilisation


et très répandu candidat au support
universel des échanges.

- Les messages HTTP sont toujours


reconnus et transmis (murs anti feu, …).

- Des outils très nombreux et plutôt bon


marché.

3
Web de base: un environnement client
serveur pour l'accès aux documents

Objectif initial de collecte d'informations


sous la forme de documents hypertextes.
Caractéristiques d’un modèle client serveur.

Désignation et liaison

ð Désignation et liaison de ressources :


URL ‘Uniform Resources Locator’

Représentation des données

ð Format de présentation des données


MIME 'Multipurpose Internet Mail
Extensions'
HTML ‘HyperText Markup Language’

Interaction de communication

ð Protocole de communication (accès aux


documents sous forme de méthodes) :
HTTP ‘HyperText Transfer Protocol’

4
Le World Wide WEB
et les objets répartis

Pour: le WEB présenterait les principaux


caractères d’une approche objets répartis.

- Mécanisme de désignation universel


d'objets (les URL's).

- Existence d'une représentation et d'un


typage standard des données (MIME).

- Un protocole d’invocation distante de


extensible (HTTP).

- L’implantation des opérations via tout


type de langage avec coté serveur les
extensions CGI, servlet, et coté client les
scripts, applets, plugs ins.

- Des objets accessibles en permanence


via les démons HTTP.

- Des objets persistants via les systèmes de


fichiers.
5
Le World Wide WEB: des limitations

Contre: le WEB n’offre pas une approche


objets répartis intégrée de haut niveau.

- Dans le web il faut actuellement plusieurs


outils hétérogènes avec divers formats de
données et divers protocoles (BD SQL
odbc/jdbc, annuaires/sécurité DNS/LDAP,
affichage HTML/MIME, protocoles HTTP
mode message socket).

- Les ressources non standards WEB sont


accessibles uniquement via des programmes
ou des codes mobiles spécifiques (cgi,
applets, servlets scripts).
=> En fait une construction par étapes,
verrues plus ou moins bricolées.

- La représentation des données est


orientée documents à afficher et n'offre pas
un cadre de typage cohérent et complet.

- La désignation URL est point à point,


sans annuaires et plutôt ‘physique’.

6
Questions posées

a) Comment le WEB s'est-il adapté dans


un passé récent pour résoudre les
problèmes précédents?

b) Comment le WEB peut-il évoluer pour


intégrer les progrès de l’informatique et
continuer de supporter un large éventail

CORBA, DCOM, RMI).

- Evolution du WEB à partir de ses outils


actuels pour améliorer ses possibilités de
support des objets répartis.

7
Premier chapitre

Désignation
et liaison dans le WEB

I Les localisateurs
URL 'Uniform Resource Locators'
II Les noms
URN 'Uniform Resource Names'
III Les informations de niveau méta
URC 'Uniform Resource
Characteristics'
IV Les identificateurs
URI 'Uniform Resource Identifiers'

8
I Désignation de base dans le WEB:
les localisateurs

URL ‘Uniform Resource Locators’


RFC 1738 Décembre 1994

- La désignation avec les URL est placée


dans le cadre d'un ensemble de schémas
associés à des applications Internet:

ftp File Transfer protocol


http Hypertext Transfer Protocol
gopher Gopher protocol
mailto Adresse de courrier électronique
news USENET news
nntp USENET news avec NNTP
telnet Référence session interactive
wais Wide Area Information Servers
file Noms de fichiers spécifiques
…. D’autres schéma sont proposés.

- Un schéma définit une construction et une


interprétation des noms ou adresses.

9
Syntaxe commune aux schémas

Forme générale des URLs

<nom_schema>:
<partie-spécifique-schéma>

Forme générale des URL Internet

- Pour Internet la partie spécifique du


schéma commence par // (en fait pas
d'autre architecture de réseau utilisée)

- En Internet on définit un accès à distance


en TCP/IP en tant qu'usager d'un OS.

//<user>:<password>@<host>:<port>/
<url-path>

10
Signification des champs d’une URL
Internet

User : Un nom d'usager optionnel.

Password : Un mot de passe optionnel.

Host : Le nom DNS d'un hôte (FQDN fully


qualified domain name) ou une adresse IP

Port : Un numéro de port TCP (optionnel


les protocoles ont un port par défaut).

url-path: Le reste du nom est spécifique du


schéma de désignation. Il s’agit d’un
chemin d’accès à la ressource.

Remarque
Le "/" entre host (ou port) et url-path ne fait
pas partie de l'url-path.

11
Le schéma d'adressage HTTP

Schéma très tourné vers la localisation


Protocole Numéro de port
Internet
http : // www.cnam.fr : 8080 / cours.htm
Délimiteurs
Adresse hôte Chemin d’accès
DNS ou IP à une ressource

Aspects spécifiques HTTP de la partie


définition du chemin d'accès

url-path = <path>?<search-part>

<path> : un chemin d'accès absolu à la


ressource demandée sur le site serveur.

<search-part> : une chaîne de caractère


qui complète le nom par des paramètres
complémentaires définissant une question.

12
Complément :
Accès interne aux documents

- Complément d'adressage à l’intérieur

- Non défini dans la RFC 1738 URL mais


dans le cadre des URI.

url-path = <path>#<fragment>
?<search-part>

<fragment> : le nom d'une ancre locale


d'un document permettant un accès interne.

- Balise A présente dans le document


HTML pour définir une ancre locale :
<A NAME="etiquette_fragment"></A>

- Localisateur du fragment
http://<host>/<path>#etiquette_fragment

13
Exemples d’URL

- Une URL pour une question posée à un


moteur de recherche (partie question de la
forme symbole=valeur).

http://www.google.com/search
?q=URL+syntax

- Une URL avec question et accès interne


dans un document.
http://home.netscape.com/assist/
extensions.html#topic1?x=7&y=2

Remarques complémentaires

- La chaîne question contient des couples


(nom de variable, valeur) séparés par des
'esperluettes' (ampersand &).
- Si des caractères réservés dans la création des
URL (";""/""?"":""@""&""=""+""$"
",")doivent figurer dans les données une
procédure d'échappement est définie:
escape = "%" HEX HEX

14
Réalisation de la liaison avec les URLs
Mise en œuvre dans le protocole HTTP

- L'analyse syntaxique de l'URL permet de


délimiter les éléments de la référence.
- La liaison est très facile car les éléments
sont presque tous des adresses
=>directement utilisables pour la liaison.

Détermination de l'adresse IP du serveur


- Soit elle est en clair.
- Soit la partie nom de domaine DNS est
soumise au serveur d'annuaire DNS qui
retourne l'adresse IP de l'hôte distant

Ouverture de connexion TCP sur le


serveur
- Au moyen de l'adresse IP et du numéro
de port (ou du port par défaut 80).

Utilisation par le serveur de la partie


chemin d'accès de l'URL
- Chemin d'accès absolu dans le système
de fichier du site distant.

15
Conclusion: Avantages Inconvénients du
schéma d'adressage de base URL HTTP

- Les URL HTTP définissent un adressage


absolu pratique pour la localisation des
ressources mais uniquement pour cela.

Limitations

- Manque d'outils d'adressage relatif


(pour définir une ressource relativement à
une autre et éviter des problèmes de
relocation des liens lors du déplacement
d'une page HTML).

- Les URL comportent essentiellement des


informations d’adresses (‘codées en dur’).
Protocole, Adresse DNS, No Port
Accès en échec (destruction/migration de
ressource). Seul mécanisme possible de
migration: les liens de poursuite.

- Les URL n'offrent pas de description du


contenu (informations méta).

16
II Désignation WEB :
Les noms symboliques

URN ‘Uniform Resource Names’

- Les URN ont été définis au départ pour


résoudre le problème de persistance des
noms que ne possèdent pas les URLs.
- Les noms choisis doivent donc être
indépendants de la localisation des
ressources: les URN sont en fait les noms
symboliques du WEB.

- La résolution doit faire appel à des services


d'annuaires qui font correspondre noms
symboliques et adresses.

- Si on ajoute aux noms symboliques des


meta-informations (des attributs comme
"titre'', "auteur'' or "sujet'') on relie le
problème des URN à celui de la recherche
documentaire (voir URC).

- Plusieurs structurations ont été proposées.

17
II.1 URN selon la RFC 2141 Mai 1997

- Définition d'un ensemble de noms


symboliques, uniques, persistants.

- Forme générale retenue similaire aux URL:


Schéma_d'adressage: Chaîne opaque

- Un nouveau schéma d'adressage est introduit


pour les noms symboliques.
- Il est baptisé 'urn' (insensible à la casse).

- La structure générale d'un urn est


<URN> ::= "urn:" <NID> ":" <NSS>

<NID> 'Namespace IDentifier' ou autorité.


Le NID détermine la structure syntaxique de la
partie NSS 'Namespace Specific String'.
Partie autorité responsable de la sructuration
d'un espace de noms.

<NSS> 'Namespace Specific String'.


La partie NSS définit un objet proprement dit.

18
Identification de l'autorité de nommage
NID 'Namespace Identifier'

- Symboles de 32 caractères au plus


(alphanumériques avec _).
Exemple: urn:cnam_fr
- La possibilité d'utiliser . + semble en débat.
Exemple: urn:cnam.fr:CoursInfos

- L'unicité des noms repose principalement sur


une autorité de contrôle des NID. Ici on trouve
un nom de domaine DNS.

Identification locale de l'objet


NSS 'Namespace Specific String'

- Symboles alphanumériques avec les


caractères spéciaux "(" | ")" | "+" | "," | "-" | "."
|":" | "=" | "@" | ";" | "$" |"_" | "!" | "*" | "'"
- Une procédure de transparence est définie au
moyen du caractère %.

Les URN RFC 2141 sont pour l'instant


encore peu utilisés. Ils devraient prendre de
l'extension avec les services d'annuaires.
19
2 Les URN selon l'approche des PURL:
URL persistantes

- Une PURL a la forme d'une URL mais son


interprétation sémantique est différente.

- Elle comporte trois parties:

(1) Une définition de protocole (de schéma


d'adressage)
Exemple: http

(2) une adresse de serveur d'annuaire,


Exemple: //purlserv.cnam.fr

(3) un nom symbolique que le résolveur


transforme en une URL effective par
consultation d'annuaire.
Exemple: /chemin/symbole

http://purlserv.cnam.fr/chemin/
symbole

20
Bibliographie sur les URN

RFC 2141, May 1997 - URN Syntax

RFC 2288 February 1998 - R.Moats 'Using


Existing Bibliographic Identifiers as Uniform
Resource Names'
RFC 1737, December 1994 - K. Sollins, L.
Masinter - C. Lynch, R. Daniel 'Functional
Requirements for Uniform Resource Names'
RFC2611, June 1999 - L.Daigle, D.van Gulik,
R. Iannella, P. Falstrom 'A URN Namespace
for IETF Documents'
RFC 2483, January 1999 - M. Mealling URI
'Resolution Services Necessary for URN
Resolution'
RFC2168 June 1997 - 'R. Daniel, M. Mealling
Resolution of Uniform Resource Identifiers
using the Domain Name System'
RFC 2276, January 1998 - K.Sollins
'Architectural Principles of Uniform Resource
Name Resolution'

21
III Désignation dans le WEB: les
informations de niveau méta

URC ‘Uniform Resource Characteristics’

Objectif: Rajouter aux ressources WEB des


descriptions de caractéristiques (contenu,
date, auteur, ….).

- Les URC codent les informations de


niveau meta concernant les ressources.
- Actuellement le plus souvent sous la forme
d'attributs (nom, valeur).

- Différentes expériences ont fonctionné sur


l'Internet . IAFA ‘Internet Anonymous
FTP Archives’ formats,
. WHOIS++ templates,
. SOIF 'Summary Object
Interchange Format' HARVEST

- Le groupe de travail W3C sur le thème: RDF


'Resource Description Framework' a produit
un modèle et une syntaxe de description XML.

22
IV Désignation WEB: Les identificateurs
URI ‘Uniform Resource Identifier’
RFC 2396 Août 1998

Une formulation de la désignation WEB


destinée à définir dans le même cadre toutes
les améliorations des mécanismes
d'adressage proposés dans des RFCs.

URL

URN

URI

- URI: la norme actuellement en vigueur


dans le WEB de nommage et d’adressage
au moyen de chaînes ASCII.

23
Les trois aspects de l'adressage WEB

URL ‘Uniform Resource Locators’.

L’ensemble des schémas de désignation


comportant un moyen explicite d’accès à
une ressource pour un protocole donné.

URN ‘Uniform Resource Names’.

1. Un URI tel que la ressource est garantie


disponible, persistante (un URN peut
prendre la forme d’un URL ex les PURL).
2. Un schéma particulier de désignation
spécifié par la RFC2141 pour des noms
symboliques (identificateurs de ressources
persistants, indépendants de la localisation).

URI ‘Uniform Resource Identifiers’.

nommage précédents et d'un nommage


des ressources relatif.

24
Syntaxe des URI

- Les URIs HTTP peuvent être définis selon


deux approches: absolue ou relative.
URI = ( absoluteURI | relativeURI )
[ "#" fragment ]

- Les URI absolus sont indépendants du


contexte dans lequel ils sont utilisés.
- Ils commencent toujours comme les
URLS par un nom de schéma d'adressage.
absoluteURI = scheme ":"
*( uchar | reserved )

- Les URI relatives commencent par la


partie chemin d'accès réseau ou par un
chemin d'accès fichier absolu ou relatif.
relativeURI= net_path|abs_path|rel_path

net_path = "//" net_loc [ abs_path ]


abs_path = "/" rel_path
rel_path = [ path ] [ ";" params ]
[ "?" query ]
Remarque: Adresse absolue/relative au
niveau des fichiers.
25
URI d'adressage relatif

- La notion d'URI d'adressage "relatif"


implique qu'il existe une base de départ
pour déterminer un URI absolu de base.

- Quatre propositions pour définir la base:

.----------------------------------------------------------.
| .----------------------------------------------------. |
| | .----------------------------------------------. | |
| | | .----------------------------------------. | | |
| | | | .----------------------------------. | | | |
| | | | | <relative_reference> | | | | |
| | | | `----------------------------------' | | | |
| | | | (1) Base URI embedded in the | | | |
| | | | document's content | | | |
| | | `----------------------------------------' | | |
| | | (2) Base URI of the encapsulating entity | | |
| | | (message, document, or none). | | |
| | `----------------------------------------------' | |
| | (3) URI used to retrieve the entity | |
| `----------------------------------------------------' |
| (4) Default Base URI is application-dependent |
`----------------------------------------------------------'

- Des mécanismes d'adressage relatif


doivent être définis: ils sont très similaires
aux mécanismes de désignation des
systèmes de fichier UNIX
. le répertoire courant, .. le père etc

26
Exemples d'URI relatives

- Pour l'URI absolue de base http://a/b/c/d;p?q


les URIs relatives = donnent le résultat:
g:h = g:h
g = http://a/b/c/g
./g = http://a/b/c/g
g/ = http://a/b/c/g/
/g = http://a/g
//g = http://g
?y = http://a/b/c/?y
g?y = http://a/b/c/g?y
#s = (current document)#s
g#s = http://a/b/c/g#s
g?y#s = http://a/b/c/g?y#s
;x = http://a/b/c/;x
g;x = http://a/b/c/g;x
g;x?y#s = http://a/b/c/g;x?y#s
. = http://a/b/c/
./ = http://a/b/c/
.. = http://a/b/
../ = http://a/b/
../g = http://a/b/g
../.. = http://a/

27
Conclusion adressage WEB

- De très loin le système d'adressage en


univers réparti le plus utilisé.

- Reste marqué par les motivations d'origine


de désignation de documents. Mais des
évolutions successives lui ont apporté des
caractéristiques plus générales d'un
système de désignation.

Les limitations

- Certaines caractéristiques récemment


introduites demandent à être réellement
implantées et utilisées (noms symboliques,
informations méta, …)

- Le système de désignation WEB est corienté


: pas de notions de relation 1
vers N (groupes). => Avec XML: Xlink

- Tous les éléments d'un document ne sont pas


adressables => Avec XML: Xpath

28
Bibliographie: Désignation WEB

RFC 1630 Universal Resource Identifiers in


WWW
RFC 1736 Functional Recommendations for
Internet Resource Locators
RFC 1737 Functional Requirements for URNs.
RFC 1738 Uniform Resource Locators (URL)
RFC 1808 Relative URLs
RFC 1959 An LDAP URL Format
RFC 2016 Uniform Resource Agents (URAs)
RFC 2056 URL for Z39.50
RFC 2111 Content-ID and Message-ID URL
RFC 2122 VEMMI URL Specification
RFC 2141 URN Syntax
RFC 2168 Resolution of Uniform Resource
Identifiers using the Domain Name System
RFC 2276 Architectural Principles of Uniform
Resource Name Resolution

29
Second chapitre

La représentation
des données

I Introduction aux formats de documents

II XML

III Espaces de noms XML

IV Transformations de documents XML

30
I Introduction aux formats de
documents: un bref historique

SGML (‘Standard Generalized Markup


Language’) ISO 8879 (année 1986)

- Un langage de balisage très général.

- Pour définir des documents électroniques,


indépendants de la forme visualisée.
. Définir le contenu d'un document
(rapport technique, livre, courrier, …).

- Un contenu est transformé en autant de


formats imprimés que nécessaire.
. Définir par ailleurs la forme imprimée.

- Le but principal reste de transmettre,


stocker des documents à imprimer avec
économies de volume et souplesse de
formatage.

SGML est complexe.


Son usage est restreint à des spécialistes
de la gestion documentaire.
31
accessible en ligne.
=> Possibilité de liens hypertextuels.

- Première études sur le langage de balises


hypertextes HTML 1989 conçu à partir de
SGML comme une version très simplifiée.

- Disponibilité et première normalisation


en 1992

- Démonstration de la très grande


capacité d'accès à l'information rendue
possible par le WEB (HTML + HTTP +
URL).

32
Le format de présentation: HTML

- Exemple d’une bibliographie en HTML:

- Une structuration de document complètement


orientée vers la présentation graphique.

33
Quelques caractéristiques de HTML

- HTML est un langage de balises comme


SGML :
Exemple <H2>

- Normalisation d’un ensemble figé de


symboles encadrés par "<" et ">".

- Les balises HTML définissent des directives


de mise en page du texte encadré par un
couple balise ouvrante, balise fermante:
<H2> xxxx </H2> un titre de niveau 2,
<UL> yyyy </UL> une liste sans numéros,
<LI> zzzzzz </LI> un item de la liste,
<I> tttttttttt </I> un texte en italique.

- Pas de type de document (pas de


structuration) prédéfinie permettant de se
mettre d'accord sur la structure d'un document.

34
Discussion des choix de HTML (1)
HTML: un langage trop graphique

- A l'origine HTML définissait des balises


indépendantes de la représentation
graphique des informations (Ex: H2 définit
une tête de chapitre, UL définit une liste.

Logiquement, la présentation graphique


(listes, têtes de chapitres, …)
adaptation du navigateur à un contexte.
Ex: présenter des informations en Braille
pour des non voyants.

- Au fil du temps les fabricants ont


introduits pour leurs besoins des éléments
graphiques. (Ex: I pour italique, (FONT,
CENTER, BGCOLOR). De même UL a le
sens d'une indentation, pas d'une liste).

Le balisage HTML est devenu assez


spécifique des différents navigateurs, de
la résolution d'un afficheur (HTML est
en fait un langage graphique pour
Netscape et Explorer).
35
Discussion des choix de HTML (2)
HTML: un langage non extensible

- Le langage HTML a été conçu pour être


assez simple de sorte que le nombre et la
signification des balises est limité.
Ex: Il n'existe pas de balisage pour la
représentation des données en chimie
(molécules, formules, valeurs numériques)

- Le langage HTML est figé. Toutes les balises


utilisables sont définies au départ ce qui est
intenable si l'on voulait prendre globalement
en compte les besoins d'un grand nombre de
métiers.

HTML est figé et assez simple : pas de


possibilité d'introduire de nouvelles balises.

36
Discussion des choix de HTML (3)
HTML: un langage de description de
documents non structurés

- HTML permet de définir de façon


beaucoup trop limitée la structure d'un
document.

- Il n'y a en fait pas de vérification d’une


structure pour le document que l'on peut
définir.
Ex: on peut créer un document commençant
par une tête de chapitre H2 et poursuivant
par une tête de chapitre H1.

HTML définit en fait un univers de


documents plats.

Une recherche doit considérer un document


HTML comme une chaîne de caractères.

Pas de moyen de partager une structure de


document préétablie entre communicants.

HTML ne type pas les documents.


37
Conclusion : avenir de HTML

comme langage graphique assez simple


pour les navigateurs WEB.

HTML présente des limitations trop


importantes au plan du typage pour
rester à terme le support de la
représentation des données échangées
sur le WEB.

- Non séparation du document et de sa


présentation graphique.

- Non extensibilité.

- Non structuration, typage.

38
Représentation des données
Chapitre II

XML (‘eXtended Markup Language’)


Recommandation W3C février 1998

Introduction

Spécification détaillée du langage

39
Introduction XML

Convergence SGML HTML

- SGML riche, lourd, mal adapté au Web.


HTML adapté à la navigation, mais limité
par un ensemble de balises figé et réduit.

- Groupe de travail XML à partir de août


1996 qui est composé essentiellement de
membres du groupe de travail SGML.

- Recherche d’un langage assez facile à la


HTML avec une richesse proche de SGML.

- XML : un sous-ensemble de SGML, qui


élimine des points trop ciblés sur certains
besoins.

- Un document XML est conforme SGML.

40
Les principes directeurs du groupe de
travail XML (1)

1. XML doit être un langage de présentation


de l’information utilisable dans Internet.

2. XML doit supporter la variété la plus


large possible d'applications.

3. XML doit être compatible avec SGML.

4. Il doit être facile d'écrire des codes qui


traitent les documents XML.

5. Les caractéristiques optionnelles de


XML doit être minimum.

41
Les principes directeurs du groupe de
travail XML (1)

6. Un document XML doit être lisible par


un être humain et raisonnablement
clair.

7. La conception d'un document XML doit


être rapide.

8. XML doit être défini formellement et de


façon concise.

9. Les documents XML doivent être faciles


à créer.

10. La concision des documents XML


n'est pas jugée importante => mise en
œuvre de mécanismes de compression si

42
Quelques conséquences pour XML

Extensibilité: pouvoir définir de nouvelles


balises.

Structuration : pouvoir modéliser des


données d'une complexité quelconque.

Validation : pouvoir vérifier la conformité


d'une donnée avec un modèle de structure.

Indépendance du média: pouvoir formater


un contenu selon des représentations
diverses.

Interopérabilité : Pouvoir échanger et


traiter une donnée en utilisant de nombreux
types de logiciels.

43
Autres différences XML HTML

- Aucune balise ne peut être omise.

- Le balisage doit être 'bien formé' .

- Toutes les valeurs d'attributs doivent être


(entre ' ou ").

- Les éléments vides sont explicités.

- Les symboles (noms d'éléments et


d'attributs) sont sensibles à la casse ("case-
sensitive").

- Interopérabilité : Codage caractère


unicode pour le contenu et les balises.

44
Description détaillée du langage
XML 1.0

I Principales caractéristiques de XML

II Corps d’un document XML

III Prologue d’un document XML


III.1) Déclaration XML
III.2) Les instructions de traitement
III.3) Déclaration de type de document

45
I Principales caractéristiques de XML

XML : langage de niveau méta

XML n'est pas un langage de balises de plus


(comme HTML).

XML permet de définir de nouveaux


langages de balises (comme SGML).

Notion de langage de niveau méta

- Un langage qui permet de redéfinir des


éléments d’un autre langage,

- Un langage qui permet de créer


complètement de nouveaux éléments dans
un autre langage (ici essentiellement des
balises).

46
XML: de la syntaxe (pas de sémantique)

On définit un ensemble aussi varié que


possible de balises mais qui ne sont
associées à aucun comportement.

Z1 XML n'est pas aussi abstrait que la BNF


'Backus Naur Form' mais est du même genre

Z2 En fait il y a un tout petit peu de


sémantique dans XML (éléments, attributs)

Les spécifications de comportement doivent


venir d'ailleurs.

- Dans la publication de documents il s'agit de


feuilles de styles ("style sheets" = formes
déclaratives de présentation graphique).
Un document XML n'est pas directement
publiable de façon élégante sur un navigateur.

- Dans d'autres domaines il pourra s'agir d'une


application spécifique (forme impérative)
offerte par un composant logiciel jouant le rôle
d'un interpréteur ou processeur XML.

47
XML : un langage verbeux

Choix délibéré: XML définit tout en format


caractère (lisible).

- Avantage : pour le développement des


codes, la mise au point, l'entretien et pour
l'interopérabilité (choix des caractères UCS
'Universal Character Set' ISO Unicode).

- Inconvénient: Les données codées en XML


sont toujours plus encombrantes que les
mêmes données codées en binaires.

L'espace mémoire, l'espace disque et la bande


passante sont devenus moins chers.
Les techniques de compression sont
accessibles facilement et gratuitement.
Elles sont applicables automatiquement dans
les communications par modems ou en
HTTP/1.1 et fonctionnent bien avec XML.

=> On atteint les mêmes encombrements


qu'avec du format binaire.

48
XML : une famille de technologies

XML 1.0, la spécification de base décrivant la


structuration des documents.
XSL, un langage pour définir la présentation
graphique des documents.
XSLT, un langage de transformation de
documents XML.
Xpath, un langage permettant de naviguer
dans des documents XML.
XML Namespaces, une spécification pour
l’unicité de la désignation des éléments XML.
DOM, un standard d'API pour interroger et
manipuler des documents XML (et HTML)
RDF, un standard de description meta des
données.
XML Schéma, améliore la précision de
description des structures de documents.
Xlink, la spécification des liens en XML.
CSS, un langage de feuilles de styles
applicable à XML comme à HTML.

Etc ….

49
Structure d’un document XML

Notion de structure logique

- Un document est composé de :

1) Un prologue qui comporte:


. Déclarations
. Instructions de traitement
. Type du document

2) Un ensemble d'éléments en
arbre.

3) Des commentaires

Les commentaires sont définis par les


balises ouvrantes <!-- et fermantes -->

Exemple: <!-- Un commentaire -->.

50
Notion de structure physique

- Un document est composé d'unités de


.

- Les entités sont emboîtées les unes dans


les autres en commençant par l'entité racine
(document) => l'ensemble forme un arbre.

- Une entité peut référencer une autre entité


pour forcer l'inclusion à la place dans le
document.

- Une entité est nommée (alias).

- Une entité peut être interne (son nom est


un raccourci pour sa valeur).

- Une entité peut être externe et représenter


un fichier XML local ou distant.

51
II Corps d’un document XML:

XML définit un cadre (‘framework’) pour


baliser n’importe quel type de données
structurées par un ensemble quelconque de
balises (‘tags’).

=> Notion d’élément XML


donnée sous la forme d'une chaîne de
caractères comme ayant un sens indiqué par
une balise (un prix, un titre, … )

<message>
<de>Jean</de>
<pour>Jacques</pour>
<objet>Rappel</objet>
<texte>On se voit demain à 10h</texte>
</message>

=> Notion d’attribut XML: permet d'associer


une donnée à une balise sous la forme d'un
attribut (une localisation, un codage, ….)

52
Un exemple complet

Une bibliographie en XML

53
Exemple après passage en analyse
syntaxique

Explorer version 5 contient un analyseur


xml baptisé MSXML . Il produit l'arbre
d'analyse syntaxique suivant
(Il existe de très nombreux autres parseurs).

Z Sur l'arbre d'analyse syntaxique:


- signifie qu'une branche est dépliée

+ signifie qu'une branche est repliée.

54
Quelques caractéristiques de la syntaxe
XML au travers de l'exemple

L'entête XML

- Définit la version xml utilisée: ici 1.0.

Les éléments XML

- Contenu encadré par une balise ouvrante


<BOOK> et une fermante </BOOK>
- La casse des balises doit être respectée
(BOOK est différent de book).
- Les éléments doivent s'imbriquer les uns
dans les autres (sans chevauchement)
pour former un arbre.

Les attributs d'éléments

- Définissent des données à l'intérieur des


balises. <BOOK LANG="fr"
SUBJECT="Informatique">
- Les valeurs des attributs sont encadrées
par des apostrophes ou des guillemets.

55
Choix de description d'une donnée:
attribut d'élément ou contenu d'élément

On peut choisir l'un ou l'autre:

En tant qu'attribut d'élément

<LIVRE LANGUE="fr"
SUJET="Informatique"> </LIVRE>

En tant que contenu d'élément


<LIVRE>
<LANGUE> fr </LANGUE>
<SUJET> Informatique </sujet>
</LIVRE>

Recommandation:
- Utiliser les attributs avec parcimonie: les
attributs brisent la structuration.
- Utiliser les éléments à chaque fois qu'il
s'agit d'une donnée applicative.
- Réserver les attributs pour les aspects
externes. Cas typique : définition d'une
URI dans un lien.
<LIEN ref="URI"> description </LIEN>
56
Documents bien formés

Un document XML a deux facettes


logique et physique qui doivent être
toutes les deux bien formées.

Si un document XML respecte les règles de la


grammaire XML on dit qu'il est bien formé.

Les règles d'un document bien formé


- Toute balise ouverte doit être fermée,
Ex: <livre> ….. </livre>
- L'ensemble des balises est correctement
imbriqué. Ex : Entrelacement mal formé
<p> <b> ….</p> </b>
- Les valeurs d'attributs sont entre guillemets"
- Les noms des attributs sont en minuscules.
- Les balises uniques correspondent à des
documents vides et sont notées:
Ex : <IMG SRC="image.gif"/>
- Les caractères < & sont notés &lt; &amp;
- Un document commence par une déclaration
<?xml version="1.0" standalone="yes"?>

57
III Le prologue d’un document XML

<? xml version="1.0"


encoding="iso-8859-1" ?>

- Un numéro de version obligatoire (une


seule version 1.0 à ce jour).

- encoding= Choix d'un codage des


caractères utilisé pour coder le document.
XML utilise les jeux de caractères de la
norme ISO 10646 ou Unicode, voir
http://www.unicode.org
Codes fréquemment utilisés:
UTF-16 : codage sur 16 bits
UTF-8 : codage sur 8 bits
ISO-8859-1

- standalone='yes' ou 'no' permet de


définir un document auto suffisant ou
dépendant d'informations externes.
58
III.2) Les instructions de traitement
('Processing instructions')

- Permettent de passer des directives aux


applications (pragma) sous la forme :
<?application_cible directive+ ?>

- Application_cible: nom d'une application


de traitement (sauf xml qui est réservé).

- Directive+: plusieurs chaînes de


caractères interprétables par l'application.

Exemple type: Définition d’un ensemble


de feuilles de styles en XSL pour permettre
l'affichage du document à l'écran.

<?xml:stylesheet type="text/xsl"
href="simple.xsl" ?>

59
III.3) Déclaration de type de document
DTD 'Document Type Definition'

DTD : une notion héritée de SGML


permettant la définition formelle de la
structure d'arbre d'un document XML.

- C'est une information de niveau méta pour


qu'un analyseur syntaxique (parseur) vérifie
la conformité du document réel qui suit
avec une spécification formelle de structure.
. intitulé des balises,
. imbrication des balises,
. caractère obligatoire ou facultatif de
la présence de certaines informations,
. enchaînement.

- Une DTD est optionnelle en XML :


En son absence: on constate une structure.
En sa présence: on contraint la conformité
d'un document XML.

- Lorsqu'un document XML possède une DTD


associée et la respecte, on dit qu'il est valide.

60
Usages de la notion de DTD

Les usages habituels du typage

- Des groupes d'utilisateurs indépendants


peuvent se mettre d'accord sur la structure
commune des informations qu'ils partagent.

- Un utilisateur peut vérifier la validité de


ses propres données.

- Une application informatique peut


vérifier qu'une structure de données reçue
est valide.

Z De nombreux forums sont apparus pour


définir des DTD standards dans différents
métiers => remplacement en vue de l'EDI
('Electronic Data Interchange')

Exemples:

CommerceNet's http://www.xmlx.com/.
Ou http://www.schema.net/.

61
Définition interne d'une DTD

- Déclarée dans le document XML elle


apparaît dans le prologue après la
déclaration xml.

- Forme <!DOCTYPE nom_de_la_dtd


[contenu_de_la_dtd]>

Exemple avec dtd interne

62
Définition externe d'une DTD

- Comme pour toute partie d'un document


XML, la DTD peut être définie sous la
forme d'une entité externe.
- On peut ainsi réutiliser des dtd, partager
des dtd entre usagers.
- On déclare l'URI (ou le fichier) ou se
trouve la DTD avec l'attribut
SYSTEM pour une dtd privée
PUBLIC pour une dtd publique.

Exemple avec DTD externe

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


<!DOCTYPE exdtd SYSTEM dtdsalut.txt>
<salutation>Bonjour le monde</salutation>

Dans le fichier salut.txt on trouve:

<!ELEMENT salutation (#PCDATA)>

Z Ex : dtd complexe W3C (format de spec):


http:://www.w3.org/XML/1998/06/xmlspec
-v21.dtd
63
Les éléments XML sont déclarés par:

<!ELEMENT nom_élément
(contenu_élément)>

- Nom : le nom de l'élément soit le nom de


la balise dans un document.

- Contenu: un type de base (chaîne de


caractères avec variantes) ou un type
construit (en fait une séquence

64
Types de base

EMPTY : Chaîne vide


<! ELEMENT vide (EMPTY)>
Eléments vides: support d'attributs
Notation développée d'un élément vide
<vide></vide>
Notation compactée d'un élément vide
<vide/>

#CDATA : Chaîne non analysée


La chaîne est supposée contenir des
données qui n'ont pas à être parsées.

#PCDATA : ('Parsed Character DATA')


Chaîne de caractères devant être parsée.
- Elle ne doit pas contenir de caractères
XML spéciaux <,>,& …. => utilisation d'un
mode transparent &lt; &gt; &amp; …..
- Si une valeur PCDATA contient des
éléments, ils doivent aussi être déclarés.

ANY : Une chaîne quelconque.

65
Elément avec fils : séquence

Types d'éléments construits à partir


d'autres types d'éléments (types article).

- Les types d'éléments utilisés (les fils) sont


à décrire par ailleurs.

- On peut préciser la structure (séquence)


des fils au moyen de constructeurs.

Nom_élément une seule occurrence


Nom_élément+ 1 ou n occurrences
Nom_élément* 0, 1 ou n occurrences
Nom_élément? 0 ou 1 occurrence
(valeur optionnelle)
Nom1|Nom2 alternative
, séquence
() parenthèses

Types éléments 'mixtes'


<!ELEMENT mémoire (titre, résumé,
remerciements?, introduction, chapitre+,
conclusion, bibliographie,#PCDATA) >

66
Les déclarations d'attributs.

- Les listes d'attributs 'attlist' définissent


pour un élément la liste des attributs de cet
élément avec leurs propriétés.
Nom de l'attribut,
Type de l'attribut,
Valeur par défaut.

- Forme d'une liste d'attributs


<!ATTLIST nom_element
nom_attribut1 type1 défaut1

nom_attributn typen défautn>

Le paramètre défaut

#REQUIRED:attribut obligatoire à fournir.


#IMPLIED : attribut optionnel.
#FIXED 'value': attribut dont la valeur est
invariable et égale à 'value'.
'value': une valeur pour l'attribut quand
celle ci n'est pas donnée.

67
Typage des attributs (1)

Trois catégories de types: les chaînes, les


listes de chaînes, les valeurs énumérées.
Selon des modalités variées.

CDATA : Les valeurs possibles sont des


chaînes de caractères non analysées par le
parseur ('Character DATA').

Ex: <!ATTLIST fichier


cheminaccès CDATA #REQUIRED>

ID : Les valeurs possibles sont des


identifiants uniques.
Ex: <!ATTLIST dossier
ident ID #REQUIRED
nom CDATA #IMPLIED>

IDREF, IDREFS : Les valeurs possibles


sont des noms d'identifiants uniques
déclarés par ailleurs (resp des listes).

68
Typage des attributs (2)

ENTITY, ENTITIES : la valeur est un


nom d'entité déclaré et existants par ailleurs
resp une liste de noms).

NMTOKEN, NMTOKENS : la valeur est


obligatoirement un mot clé valide de xml
(resp une liste de mots clés).
xml: Les valeurs qui commencent par xml:
sont prédéfinies.
Ex: xml:lang désigne une langue dans
laquelle un document est rédigé.

NOTATION: La valeur est le nom d'une


notation.

Valeurs énumérées : Soit des notations de


valeurs déjà définies soit des valeurs.
Séparation par des barres (val1|val2|…)
Déclaration : <!ATTLIST paiement type
(chèque|CB|liquide) "liquide">
Utilisation : <paiement type="chèque">

69
Les déclarations d'entités.

Les entités supportent l'organisation


physique d'un document.

- Les entités sont des textes sources


constituant des parties d'un document
Ex: Un texte xml, un fichier image ….

Entités analysables (parsed) et entités


non analysables (unparsed)

- Les entités sont dites analysables s'il


s'agit de texte xml insérable tel que
comme une partie d'un document xml.

- Les entités non analysables (''unparsed')


sont des textes non xml (pour une autre
application qu'un processeur xml).

Z Les entités non analysables doivent faire


l'objet d'une définition de notation (voir
plus loin) qui définit leur format et une
application pour les prendre en charge.

70
Entités internes et externes

Entité interne: Il s'agit d'une entité définie


dans le cadre d'un document.

Syntaxe de déclaration:
<!ENTITY nom_entité "valeur_entité">
Exemple: <!ENTITY gf "Gérard Florin">

Syntaxe d'utilisation:
<author>&gf;</author>

Entité externe: Il s'agit d'une entité définie


dans un fichier connu par son URI.

Syntaxe de déclaration:
<!ENTITY nom SYSTEM "URI/URL">
Ex: <!ENTITY gf SYSTEM
"http://deptinfo.cnam.fr:8080/ ……
/mon_nom.xml">
Syntaxe d'utilisation:
<author>&gf;</author>

71
Entités générales et entités paramètres

- Les entités analysées (‘parsées’) sont dites


s'il s'agit d'un texte à insérer
dans une dtd.

<!-- Déclaration entité param "ISOLat2" -->


<!ENTITY % ISOLat2 SYSTEM
"http://www.xml.com/iso/isolat2-
xml.entities" >

<!-- Une référence pour l'importer -->


%ISOLat2;

- Les entités analysées (‘parsées’) sont dites


s'il s'agit d'un texte à insérer
dans un document.

Z Les entités paramètres et générales sont


utilisées dans des contextes différents.
Il ne peut y avoir d'ambiguïté.

72
Les déclarations de notations.

- Pour définir le format des entités non


analysables (en fait non xml).
. identifient par un nom le format.
. l'application qui traitent les données.

Exemple: Une image en format gif


<!NOTATION gif SYSTEM "sh_gif.dll">

Exemple: Un texte compressé format zip


<!NOTATION zip SYSTEM 'zip.exe' >
gif, zip : nom du format.
SYSTEM : notation dans une
application (PUBLIC pour les normes)
zip.exe : une application pour ce format.

- Des valeurs de notation sont de type


NDATA (Ex : NDATA zip).

73
Utilisation des notations

- Des éléments peuvent avoir des attributs


dont la valeur est une notation.

<!NOTATION zip SYSTEM 'zip.exe' >


<!ELEMENT un_document ……
<!ATTLIST un_document
compression NOTATION (zip|gzip)
#REQUIRED
….. >
- Autre exemple, des entités non xml peuvent

<!NOTATION jpeg SYSTEM


"/usr/local/bin/afficheur_jpeg">
<!ENTITY animal SYSTEM
"./photos/cheval.jpg" NDATA jpeg>

74
Le traitement des caractères

Les références à des entités caractères

Pour utiliser un caractère au moyen de son


code interne, définition d'entités caractères
(conforme codage UCS ISO/CEI 10646)
Ex: &#233; Caractère é codé en décimal
&#xe9; Caractère é codé en hexadécimal

Les entités caractères prédéfinies

- Les caractères spéciaux xml (<, >, & …)


ont besoin d'un mode transparent dans les
chaînes analysées (PCDATA).
- Les déclarations standards suivantes (a
priori toujours disponibles) montrent que le
caractère d'échappement est & #38.
<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">

75
Exemple d'utilisation des entités

Dans la norme xml:

<!ENTITY % ed "&#xc9;ditions Gallimard" >


<!ENTITY droits "Tous droits
r&#233;serv&#233;s" >
<!ENTITY livre "La Peste : Albert Camus,
&#xA9; 1947 %ed;. &droits;" >

La Peste : Albert Camus, © 1947 Éditions


Gallimard . Tous droits réservés

Commentaires:

- ed est considérée comme une entité


paramètre interne. Elle est définie en interne
et elle sert dans une dtd…
- droits est considérée comme une entité
générale interne. Elle sert dans une valeur.
- Ces deux entités comportent des caractères
considérés comme spéciaux (des accents
français dans une bibliographie en anglais).
76
Un exemple récapitulatif de dtd :
Une structure de rapport

Auteur: Richard Erlander. Site Web:


http://pdbeam.uwaterloo.ca/~rlander/

<!DOCTYPE REPORT [
<!ELEMENT REPORT (TITLE,(SECTION|SHORTSECT)+)>
<!ELEMENT SECTION (TITLE,%BODY;,SUBSECTION*)>
<!ELEMENT SUBSECTION
(TITLE,%BODY;,SUBSECTION*)>
<!ELEMENT SHORTSECT (TITLE,%BODY;)>
<!ELEMENT TITLE %TEXT;>
<!ELEMENT PARA %TEXT;>
<!ELEMENT LIST (ITEM)+>
<!ELEMENT ITEM (%BLOCK;)>
<!ELEMENT CODE (#PCDATA)>
<!ELEMENT KEYWORD (#PCDATA)>
<!ELEMENT EXAMPLE (TITLE?,%BLOCK;)>
<!ELEMENT GRAPHIC EMPTY>

<!ATTLIST REPORT security (high | medium | low ) "low">


<!ATTLIST CODE type CDATA #IMPLIED>
<!ATTLIST GRAPHIC file ENTITY #REQUIRED>
<!ENTITY xml "Extensible Markup Language">
<!ENTITY sgml "Standard Generalized Markup Language">
<!ENTITY pxa "Professional XML Authoring">
<!ENTITY % TEXT
"(#PCDATA|CODE|KEYWORD|QUOTATION)*">
<!ENTITY % BLOCK "(PARA|LIST)+">
<!ENTITY % BODY "(%BLOCK;|EXAMPLE|NOTE)+">
<!NOTATION GIF SYSTEM "">
<!NOTATION JPG SYSTEM "">
<!NOTATION BMP SYSTEM ""> ]>

77
Conclusion XML

Multiples avantages

- Un langage effectivement assez simple.


- XML permet la description précise et
universelle des contenus de données, de sorte
que la recherche et l’accès sont plus faciles
pour des plateformes hétérogènes.
- XML rend possible l’arrivée d’une nouvelle
d’outils logiciels :
. de manipulation,
. de transmission,
. de visualisation de données distribuées.

Les inconvénients

- La simplicité de base conduit à


de compléments de toutes natures.
- Ces lacunes sont assez importantes pour
voir apparaître des améliorations xml
successives et des DTD très nombreuses qui
ajoutent des détails.

78
L'avenir de XML

XML pourrait permettre pendant un certain


temps (combien?) et pour de nombreuses
applications (celles qui ne posent pas de
problèmes cruciaux de performances) de
supporter dans un cadre unifié aussi bien:

La définition des documents.

Outils de bureautique, de documentation ..

La définition des données.

SGBD, logiciels de gestion, Échanges de


Données Informatisé (EDI), …

La présentation des réseaux

Format des données échangées par


messages ou par invocations de méthodes.

79
Bibliographie

- J.C. Bernadac, J.F. Knab 'Construire une


application xml', Eyrolles.

- Extensible Markup Language (XML) 1.0


(Second Edition) W3C Recommendation 6
October 2000
http://www.w3.org/TR/2000/REC-xml-
20001006
Versions antérieures
http://www.w3.org/TR/2000/WD-xml-2e-
20000814
http://www.w3.org/TR/1998/REC-xml-
19980210

- La page XML pour débutants de


Emmanuel Lazinier
http://www.chez.com/xml/initiation/

- Les très nombreux cours XML sur le WEB.


http://www.xmlephant.com/

80
Représentation des données
Chapitre III

Les espaces de nommage


(‘Namespaces')
Recommandation W3C janvier 1999

81
Introduction: Motivation pour une
extension du nommage en XML

- On peut avoir à utiliser des documents XML


qui comportent de multiples descriptions
d'éléments et d'attributs avec possibilité
d'utiliser les mêmes noms.
- Dans l'exemple suivant on a 4 fois titre et
deux fois nom.
<biblio>
<titre>Bibliographie</titre>
<auteur titre="Dr" nom="C. Carrez" />
<livre titre="Les systèmes informatiques"/>
</biblio>

<alcools>
<armagnac>
<nom>De Casteljaloux</nom>
<titre>45°</titre>
</armagnac>
</alcools>

Besoin d'un mécanisme pour construire des


noms uniques d'éléments ou d'attributs
dans le WEB.
82
Principe de la solution des espaces de noms
XML

- Utiliser la désignation universelle unique


fournie par les URI pour qualifier les noms
d'éléments ou d'attributs et résoudre les
conflits.

- Si l'on doit employer deux fois le symbole


titre (pour un livre et pour un alcool) on les
qualifie par deux URI différentes.

Propriétés visées par les espaces de noms

- Réutilisation des balises dans les DTD.

- Modularité des documents décrits.

- Extensibilité de la désignation XML.

83
Espaces de noms XML : une première

- C'est un ensemble de noms, identifiés par


une URI et utilisés dans des documents XML
comme des noms d'éléments ou d'attributs.

- L'utilisation d'un espace de noms permet de


transformer un arbre XML dont les noms
sont locaux en un arbre XML dont les noms
sont universels dans le WEB.

- La projection utilise l'idée de .

Noms qualifiés 'Qualified Names'

- C'est un nom en deux parties séparées par :


- La première partie (préfixe) est universelle
- Elle sert de raccourci pour un nom d'URI.
- Il faut donc une déclaration d'association
entre le préfixe et l'URI.
- La seconde partie est locale.

84
Exemples

Utilisation dans une déclaration d'élément

<livres xmlns:a="http://www.cnam.fr/chem">
<!-- L'élément de nom 'éditeur' dans le
document est rendu unique par la référence à
http://www.cnam.fr/chem -->
<a:éditeur>Dunod</a:éditeur>
</livres>

- L'attribut "xmlns" pour un élément est un


mot clé XML réservé pour la déclaration d'un
espace de noms.

Utilisation dans une déclaration d'attribut

<livres xmlns:a="http://www.cnam.fr/chem">
<!-- L'attribut de nom 'catégorie' dans le
document est rendu unique par la référence à
http://www.cnam.fr/chem -->
<livre a:catégorie="pédagogie">Les systèmes
informatique</livre></livres>

85
Déclaration d'un espace de noms

- Un espace de nommage est déclaré au


moyen d'attributs réservés (xmlns ou avec
préfixe xmlns: ) pour un élément.
- Les préfixes commençant par xml sont
réservés.
- On déclare l'espace sur n'importe quel
la portée de la déclaration est
au sous arbre xml sous l'élément.
- L'unicité des attributs est réalisée si deux
attributs:
1. Ont des noms différents ou

partie locale et des préfixes liés à des espaces


de noms différents.

- Exemples de mauvaise déclaration :


<!-- http://www.cnam.fr est lié à a et à b -->
<elem xmlns:a="http://www.cnam.fr"
xmlns:b="http://www.cnam.fr" >
<y att="1" att="2" />
<y a:att="1" b:att="2" />
</elem>

86
Utilisation explicite des préfixes

- On mentionne explicitement le préfixe.

Exemple ou tous les préfixes sont explicites:

b est associé à urn:BooksAreUs.org:BookInfo,


h est associé à http://www.w3.org/TR/REC-
html40 (l'espace de nom pour HTML/4.0).
On peut distinguer les deux éléments 'title'.

<?xml version="1.0"?>
<html xmlns:h="http://www.w3.org/TR/REC-
html40"
xmlns:b="urn:cnam.fr:infos_livres">
<h:head>
<h:title>Bibliographie</h:title>
</h:head>
<h:body>
<h:p>Bienvenue dans le monde des
livres</h:p>
<b:title h:style="font-family: sans-
serif;">Systèmes Informatiques</b:title>
<b:author>Christian Carrez</b:author>
</h:body></h:html>
87
Utilisation implicite des préfixes

- Un espace de nommage déclaré dans un


pour tous les
éléments de l'arbre sous l'élément ou figure
la déclaration et qui n'ont pas de préfixe.
- Ne s'applique pas aux attributs.

Tout ce qui n'est pas préfixé par b est


préfixé est préfixé par défaut par http://….

<?xml version="1.0"?>
<html
xmlns="http://www.w3.org/TR/REC-html40"
xmlns:b="urn:cnam.fr:infos_livres">
<head><title>Bibliographie</title></head>
<body>
<p>Bienvenue dans le monde des livres.
Voici un livre qui pourrait vous être utile</p>
<b:title style="font-family: sans-
serif;"></b:title>
<b:author>Christian Carrez</b:author>
</body> </html>

88
Conclusion : Espaces de noms

- Les espaces de noms XML forment un


ensemble de conventions de désignation
- permettant à des applications utilisant XML
définies indépendamment de coopérer
- en réglant les conflits potentiels.

Quelques limitations

- On peut observer des stratégies différentes


pour attribuer des noms uniques dans les
espaces de noms.
.Utiliser une gestion par numéro de
versions (XSL, XSLT),
. Utiliser des dates (RDF)
. Utiliser la localisation de la DTD (SVG)
. Utiliser l'URI de la spécification (HTML
4.0, SMIL).

- Les espaces de noms n'apportent aucune


information sémantique. Est ce que deux
noms ou attributs d'un espace de nom ont
même sémantique ? (même symbole ou
symboles différents)
89
Bibliographie : Espaces de nom

Tim Bray, Dave Hollander, Andrew Layman


'Namespaces in XML' - Recommandation
W3C Janvier 1999.

Steve Pemberton, et al. XHTML 1.0: 'The


Extensible HyperText Markup Language, A
Reformulation of HTML 4.0 in XML 1.0' -
W3C - Recommandation W3C Janvier 2000.

Robin Cover, 'The SGML/XML Web Page:


Namespaces in XML'

'XML Tutorial : Using XML Namespaces' -


Microsoft. MSDN Online Web.

90
Représentation des données
Chapitre IV

Les transformations de documents XML


et les feuilles de styles

(XSL ‘eXtending Stylesheet Language')


Recommandation W3C

1 Généralités: feuilles de styles avec


XML

2 Le langage de localisation Xpath

3 Le langage de transformation XSLT


91
1 Généralités: les feuilles de styles XML

Motivations pour une définition de


feuilles de styles en complément de XML.

- La destination principale des documents


XML reste l'affichage.

- Un document XML ne comporte en


général aucun aspect sémantique pour
l'affichage (sauf si on le définit pour cela).

=> Besoin d'un langage complémentaire


pour la représentation graphique:
langage de feuilles de styles

92
Rappel des avantages de la séparation du
contenu et du style de présentation.

Principalement: on peut modulariser les


tâches de définition de contenu et de
définition de la présentation graphique.

- Aspects graphiques différents du même


document selon le contexte ou selon les
usagers.

- Aspects différents selon le média utilisé


(papier, station de travail, téléphone

- Utilisation de styles de présentation


au niveau d'une entreprise.

- Séparation possible des tâches entre


producteurs de documents et
formatteurs de documents.

Z Approche plus modulaire => plus de


travail : décrire une fois les données pour
leur contenu puis pour leur présentation.
93
Les langages de feuilles de styles

Avec HTML

CSS 'Cascading Style Sheets' langage de


style de HTML,

S'applique à XML mais il n'est pas


considéré comme assez puissant.

Avec SGML

DSSSL 'Document Style Semantics and


Specification Language')

Avec XML

XSL 'eXtensible Stylesheet Language' est


un langage de styles dérivé du langage de
DSSSL.

- objectifs de simplicité de XML


- conservation des propriétés et du
vocabulaire CSS 'Cascading Style Sheets'.

94
Les deux techniques utilisées
dans les langages de feuilles de styles

1 Transformation préliminaire du
document à afficher (optionnelle)

Outil : Transformateur de la structure


Document d'entrée -> document de sortie

Exemples d'utilisation

- Adjonction de données constantes (textes


explicatifs).
- Suppression de certaines données
(filtrage)
- Réorganisation des données
(changement dans l'ordre de présentation
du document).
- Duplication de données (pour faire une
table des matières).
- Tris (pour la présentation de tableaux).
- Transformations les plus générales de
l'information présentée (sommations,
algorithmes de calcul, ….).

95
2 Description effective de la présentation
du document transformé

- Description des propriétés graphiques de


chaque élément du transformé).

Outil : Afficheur de documents graphiques.

Les trois niveaux de description

- Spécification de la structure générale


de la page, de son fond, ….

- Placement des contenus dans des types


de conteneurs de base (paragraphes,
tableaux, listes,…).

- Spécification des propriétés de


présentation de chaque conteneur
(fontes, marges, alignements,
espacements, ….).
Décrire la taille, la couleur des caractères
utilisés pour afficher la valeur d'un élément.

96
Les principaux composants de XSL

XSLT: Extensible Stylesheet Language


Transformations

- Un langage qui permet de décrire toute


transformation d'un document XML considéré
comme un arbre en un autre document XML
(un autre arbre).

XPath: XML Path Language

- Un langage qui permet de désigner n'importe


quelle partie spécifique d'un document XML
(indispensable pour définir des règles très
générales de transformation des documents).

XSL: Extensible Stylesheet Language

- XSLT + XPATH + un ensemble d'objets de


formattage graphique et de propriétés de
formattage.

97
Techniques pour afficher des documents
XML, Solution1:Transformation en HTML

Les navigateurs HTML étant très répandus:

DOCUMENT
XML Proc
DOCUMENT
HTML
XSLT
SPEC XSLT

Naviga
teur Sortie écran
HTML

Transformation XSLT d'un document


XML sans indications graphiques en un
document HTML affichable
98
Un exemple XSLT de transformation XML
en HTML

La feuille de style XSLT

99
Le document source XML

Le résultat affiché

100
Technique employée: une transformation
XSLT d'arbre

L'arbre de document XML en un arbre de


document HTML

biblio

livre

auteur titre

html

head body

title h2 p

A la fin sérialisation de l'arbre HTML pour


en refaire un document.
101
Quelques commentaires de la page XSL

- Une feuille de style est également un


document donc on trouve une déclaration
XML. Dans le source du document à
afficher on référence cette feuille de style.

- L'élément xsl:stylesheet indique qu'il s'agit


d'une feuille de style.

- La balise xsl:for-each définit une boucle


pour qui répète une opération (ici l'affichage
d'une référence bibliographique).

- L'attribut select permet de sélectionner un


élément sur lequel opère la répétition. On
navigue dans un document comme dans un
système de fichier biblio/livre.

- La balise xsl:value-of pour un élément


sélectionne un fils dans la hiérarchie et insère
associé à ce fils dans le résultat.

- On exprime la présentation graphique par


des balises HTML produites en sortie.
102
Techniques pour afficher des documents
XML, Solution2: Utilisation des objets FO

- Les objets de formattage FO ('Formatting


Objects') sont des objets définis spécialement
en XSL pour assurer l'affichage graphique
des documents HTML.

DOCUMENT
XML Proc
DOCUMENT
FO
XSLT
SPEC XSLT

Affic
heur Sortie écran
FO

103
Exemple d'utilisation des objets FO (début)

- Définition d'une organisation en blocs de


l'affichage à atteindre avec les
caractéristiques graphiques des blocs.
- Placement des éléments dans les blocs.

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


<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/
XSL/Transform"
xmlns:fo="http://www.w3.org/1999/
XSL/Format">
……….
<xsl:template match="biblio/livre">
<fo:block text-align="justified"
space-after="8pt" space-before="8pt"
font-size="12pt" font-weight="bold">
<xsl:copy/>
</fo:block>
</xsl:template>
………..
Exemple Non testé

104
2

Le langage de localisation Xpath

105
Généralités

- L'une des caractéristiques essentielles d'un


langage de feuille de styles comme d'un
langage de transformation de documents est de
pouvoir localiser des éléments pour être
édités ou pour être transformés.

- Xpath XML Path Language réalise cette


fonction :
a) En considérant l'arbre d'un document et en
permettant de naviguer dans cet arbre
(comme dans un arbre de fichiers).
b) En définissant des prédicats qui permettent
de raffiner la localisation.

- La description d'une localisation se fait


relativement à un contexte.

106
Quelques exemples préliminaires

/ : définit la racine du document

//toto : définit tous les éléments de nom toto


n'importe ou dans l'arbre.

toto/riri : définit tous les éléments de nom riri


fils de l'élément toto dans le contexte courant.

toto//riri : définit tous les éléments de nom riri


qui ont un ancêtre toto dans le contexte.

.//riri : définit tous les éléments de nom riri qui


sont descendants du contexte courant.

toto/riri[1] : définit le premier élément riri dans


l'arbre dont le père est toto dans le contexte.

toto[@adresse="nn"] : définit l'élément toto


dans le contexte qui a un attribut adresse de
valeur nn.

toto | riri : définit toto ou riri.

107
Syntaxe de Xpath : généralités

Principaux aspects du langage.


Formellement défini dans:
http://www.w3.org/TR/xpath

- Un chemin de localisation est absolu s'il


commence par /

- Un chemin de localisation est relatif s'il est


défini par une suite d'étapes séparées par /

- Une étape est définie par:

Une spécification d'axe (de l'arbre).


Un test sur un sommet
(nœud de l'arbre).
Un prédicat

108
Tests sur un sommet ('node tests')

nom : définit le nom d'un élément qui est un


noeud de l'arbre.

* : définit n'importe quel élément qui est un


noeud de l'arbre.

espace:nom : définit un élément nom dans un


espace de noms qui est un noeud de l'arbre.

comment() : définit n'importe quel noeud du


graphe de commentaire.

text() : définit n'importe quel noeud de l'arbre


de type texte.

Processing-instruction('target') : définit
n'importe quelle instruction de traitement.

node() : définit n'importe quel noeud de


l'arbre.

109
Prédicats

nodetest[1] : définit le premier nœud dans


l'arbre.

nodetest[position()=last()] : définit le dernier


nœud dans l'arbre.

nodetest[position() mod 2= 0] : définit les


nœuds pairs dans l'arbre.

element[@toto="val"] : définit les nœuds qui


ont un attribut de nom toto de valeur val.

element[not(@toto)] : définit les nœuds qui


n'ont pas d'attribut de nom toto.

livre[auteur="Christian Carrez"] : définit un


nœud livre ayant un fils auteur dont la valeur
est précisée.

livre[normalize-space(auteur)="Christian
Carrez"] : même chose que précédemment
sans tenir compte des espaces avant ou après
le symbole.

110
Spécifications d'axes

On définit ainsi quelle catégorie de sommets


de l'arbre sont concernées

self ou . : le nœud courant.

parent ou .. : le père du nœud courant.

ancestor : définit l'ensemble des nœuds


ancêtres du nœud courant.

ancestor-or-self: définit l'ensemble des


nœuds ancêtres plus le nœud courant.

attribute ou @ : les attributs du nœud courant.

child : les enfants du nœud courant.

descendant : les descendants.

descendant-or-self

following et following-sibling : les éléments


après le nœud courant dans l'ordre de parcours.

111
Spécifications d'axes (suite)

preceding et preceding-sibling : les éléments


avant le nœud courant dans l'ordre de
parcours

namespace: l'espace de noms du nœud


courant

112
Représentation graphique
des définitions d'axe

Preceding
Ancestor
Following

Preceding Following-
-sibling sibling
Parent

Self

Child

Descendant

113
3 Le langage de transformation XSLT

114
Introduction XSLT

- En fait XSLT est un langage très riche qui


n’est pas uniquement dédié à la
présentation graphique des documents.
.
- C'est un véritable langage réflexif qui permet
de manipuler très complètement l'arbre
d'évaluation syntaxique d'un document : en
fait de transformer un arbre en un autre
arbre.

- Donc XSLT: une approche de réfléxivité


structurale.

- Applicable au problème de l'affichage


graphique mais aussi à d’autres problèmes
(transformation de schéma de données)

115
Liste des principales directives XSLT

Les patrons ('xsl:templates')

- L'instruction de base pour décrire un


remplacement d'une forme par une autre.
Permet de faire une série de tests sur des
éléments et définir les remplacements.

<xsl:template match="localisation_Xpath">
production de résultats, textes, littéraux
</xsl:template>

Exemple

<xsl:template match="biblio/livre">
<p><xsl:value-of/></p>
</xsl:template>

116
Les structures de contrôle de langage évolué

Appliquer un patron récursivement


('xsl:apply-template')

Pour tous les éléments au dessous de l'élément


courant, appliquer les modifications définies
par le même patron.

Exemples

<xsl:template match="paragraphe">
<p><xsl:apply-templates/></p>
</xsl:template>

On peut sélectionner
<xsl:template match="/">
<p><xsl:apply-templates
select="par1"|"par2"/></p>
</xsl:template>

117
L'instruction de boucle ('xsl:for-each')

- Possibilité de faire des itérations sur des


ensembles d'éléments.

<xsl:for-each select='….'>
... des instructions XSLT...
</xsl:for-each>

- Possibilité de faire des tris

<xsl:for-each select="biblio/livre/CD" order-


by="+ auteur">

L'attribut order-by est associé à un plus (+) ou


un moins (-) sign, pour définir un ordre
croissant ou décroissant.

118
L'instruction de choix ('xsl:choose')

<xsl:choose>
<xsl:when match=" ….">
... un code XSLT...
</xsl:when>
<xsl:when match=" ….">
... un second code XSLT...
</xsl:when>
<xsl:otherwise>
... un autre code XSLT....
</xsl:otherwise>
</xsl:choose>

L'instruction conditionnelle ('xsl:if')

En fait une génération conditionnelle de


transformation.
<xsl:if test=$condition>
<!-- Un commentaire: le code XSLT ici n'est
exécuté que si la condition est vraie-->
<xsl:text>Pas de réponses</xsl:text>
</xsl:if>

119
Les variables

Déclarer et affecter ('xsl:variable')

On peut associer une valeur à une variable.

Une liste de nœuds


Un arbre résultat.

Les variables sont à affectation unique.

La portée d'une variable est très restreinte.


Dans un bloc if elle est limitée au bloc

Contenu d'une variable $nom.

Utilisation dans les instructions:


xsl:applytemplate select=
xsl:value-of select=
xsl:number value=
xsl:for-each select
xsl:if test=
xsl:when test=
xsl:sort select=

120
Evaluer des expressions arithmétiques
('xsl:number'

On peut évaluer une expression et la convertir

On peut aussi compter les éléments d'un arbre


source pour en déduire des directives de
transformation.

121
Les directives pour créer l'arbre résultat

Générer du texte ('xsl:text')

On copie directement le texte dans l'arbre


résultat en préservant les espaces.

<xsl:text>Bibliographie</xsl:text>

Insérer une valeur


('xsl:value-of')

Obtenue comme résultat d'une expression:


<xsl:value-of select="$compteur"/>

Insérer un élément
('xsl:copy et xsl:copy-of')

xsl:copy copie le nœud courant et xsl:copy-of


copie un noeud sélectionné dans l'arbre.

122
Créer un nouvel élément
('xsl:element')

<xsl:element name="nom de l'element">


Code xslt
</xsl:element>

Ajouter un nouvel attribut


('xsl:attribute')

Au plus proche élément contenant:


<tableau>
<xsl:attribute name="nb_ligne">
</xsl:attribute>
</tableau>

123
Conclusion : XSL/XSLT

- De multiples possibilités qui font de XSLT


un langage très riche.

- C'est un véritable langage réflexif: une


approche de réfléxivité structurale.

- Bien appliqué au problème de l'affichage


graphique (séparation contenu affichage) en
liaison avec XSL FO.

Quelques restrictions

- Peu d'applications autres que l'affichage


des documents relèvent de la démarche
XSLT (possibilité de manipulation d'un
schéma de données rédigé en XML).
- Une approche assez complexe qui nécessite
un apprentissage assez long pour la
présentation de documents WEB.
- Solution: outils de génération automatique
des formats mais la présentation à la main
reste souvent nécessaires.

124
Bibliograhie XSL/XSLT

XSL Concepts and Practical Use


(http://nwalsh.com/docs/tutorials/xsl/)

XPath (http://www.w3.org/TR/xpath) XML


Path Language 1.0, Recommandation W3C

XSLT (http://www.w3.org/TR/xslt) XSL


Transformations 1.0, Recommandation W3C

XSL (http://www.w3.org/TR/xsl) Extensible


Style Language 1.0, W3C Proposé
Recommandation W3C

125
APPENDICE: LISTE DE SIGLES ET
GLOSSAIRE ASSOCIES A XML

API Application Programming Interface


CDF Channel Definition Format: W3C
CGI Common Gateway Interface: IETF
CML Chemical Markup Language
CSS Cascading Style Sheets: W3C
DOM Document Object Model: W3C
DSSSL Document Style Semantics and
Specification Language ISO/IEC
ECMA European Computer Manufacturers
Association
ECMAScript langage de script
EDI Electronic Data Interchange
HTML HyperText Markup Language: W3C
IETF Internet Engineering Task Force
MathML Maths Markup Language: W3C
ISUG International SGML Users' Group
OFX Open Financial Exchange: W3C
OTP Open Trading Protocol
RDF Resource Description Framework: W3C
SAX Simple API for XML
SGML Standard Generalised Markup ISO

126
UCS Universal Character Set: ISO
(aligned with Unicode)
URL Universal Resource Locator :IETF
XLL XML Linking Language
XML Extensible Markup Language
XSL XML Style Language
WWW World Wide Web
W3C World Wide Web Consortium

127