10/9/2008

Définition
• Un espace de noms XML est une collection de noms
d’éléments et d’attributs identifiée par un URI. Un nom d’élément ou d’attribut est logiquement formé

XML Namespaces
Combining XML documents
Source : Vincent Quint, INRIA Rhone−Alpes Namespaces in XML

• d’un URI qui identifie l’espace de noms (nom de
l’espace de noms)

• d’une partie locale : le nom d’élément ou d’attribut à • d’une partie locale : le nom d’élément ou d’attribut à
l’intérieur de cet espace de noms

l’intérieur de cet espace de noms

Motivation
• Un même document XML doit pouvoir utiliser plusieurs
vocabulaires de balisage

URI et URL
• L’URI doit être unique et persistant • L’URI est juste un nom. Il ne référence pas
nécessairement un fichier
URI URL

• Conception modulaire des vocabulaires de balisage • Réutilisation d’un même vocabulaire dans des • Les mêmes noms (éléments, attributs) peuvent être
contextes différents utilisés avec des sémantiques différentes dans des vocabulaires indépendants Quelle application doit traiter quelle partie du document?

• Problèmes d’ambiguïté, collision de noms

1

10/9/2008

Exemples

Portée de la déclaration

• Espace de noms XHTML :

• Espace de noms MathML :
• Espace de noms SVG : • Espace de noms SMIL :

http://www.w3.org/1999/xhtml http://www.w3.org/1998/Math/MathML http://www.w3.org/2000/svg http://www/w3.org/2000/SMIL20/Language

• La portée de la déclaration est l’élément où elle

apparaît et tous ses descendants, tant qu’il n’y a pas de redéfinition

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

Déclaration

Utilisation
• L’espace de noms auquel appartient un élément ou un
attribut est:

• Les espaces de noms utilisés dans un document
doivent être déclarés. La déclaration se fait par attribut. Deux formes :

• xmlns="uri" définit l’espace de noms par défaut • xmlns:prefix="uri" définit le préfixe représentant
un espace de noms

• représenté par un préfixe suivi de ’:’ (noms qualifiés,
QNames) exemple <svg:image xlink:href="xxx"/>

• L’espace de noms auquel appartient un élément est: • l’espace de noms par défaut, défini dans l’élément ou
un ancêtre, s’il n’y a pas de préfixe

2

10/9/2008

Attributs

Règle
• Pour connaître l’espace de nom d’un élément: • Si préfixe, on recherche la définition en remontant
vers les ancêtres

• Un attribut sans préfixe n'est dans aucun • pour y être, un attribut doit être muni d'un
préfixe. espace de noms

• Si pas de préfixe: erreur! • Si pas de préfixe, on recherche la définition du
préfixe par défaut en remontant vers les ancêtres

• Si pas de définition: pas d’espace de nom

Préfixes
On aurait pu avoir: <{http://www.w3.org/TR/xhtml1} head>
Qualifying URI Local name

Règle
• Pour connaître l’espace de nom d’un attribut: • Si préfixe, on recherche la définition en remontant
vers les ancêtres

La solution choisie est plus compacte <... xmlns:foo="http://www.w3.org/TR/xhtml1"> ... <foo:head>...</foo:head> ... </...>

• Si pas de préfixe: erreur! • Si pas de préfixe: pas d’espace de nom

3

10/9/2008

Exemple
<?xml version="1.0"?> <html:html xmlns:html=’http://www.w3.org/1999/xhtml’> <html:head> <html:title>My Title</html:title> </html:head> <html:body> <html:p>Refer to <html:a href=’http://example.com/def.html’>definition</html:a> </html:p> </html:body> </html:html> <?xml version="1.0"?> <html xmlns=’http://www.w3.org/1999/xhtml’> <head> <title>My Title</title> </head> <body> <p>Refer to <a href=’http://example.com/def.html’>definition</a> </p> </body> </html>

Exemple
<?xml version="1.0"?> <book xmlns="urn:loc.gov:books" xmlns:isbn="urn:ISBN:0−395−36341−6"> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> <notes> <p xmlns="http://www.w3.org/1999/xhtml"> This is a <i>funny</i> book! </p> </notes> </book>

est équivalent à

Exemple
<?xml version="1.0"?> <bk:book xmlns:bk="urn:loc.gov:books" xmlns:isbn="urn:ISBN:0−395−36341−6"> <bk:title>Cheaper by the Dozen</bk:title> <isbn:number>1568491379</isbn:number> </bk:book>
est équivalent à

Exemple
<widget xmlns="http://www.widget.org" xmlns:xhtml="http://www.w3.org/TR/xhtml" > <head size="medium"/> <big><subwidget ref="tcv"/></big> <info> <xhtml:head> <xhtml:title>Description of gadget</xhtml:title> </xhtml:head> <xhtml:body> <xhtml:h1>Gadget</xhtml:h1> A gadget is nice </xhtml:body> </info> </widget>

<?xml version="1.0"?> <book xmlns="urn:loc.gov:books" xmlns:isbn="urn:ISBN:0−395−36341−6"> <title>Cheaper by the Dozen</title> <isbn:number>1568491379</isbn:number> </book>

4

10/9/2008

Documents composites
• • •
Les espaces de noms permettent de créer des documents composites, c’est-a`-dire des documents qui utilisent plusieurs vocabulaires XML indépendants Les éléments des différents vocabulaires sont dans le même fichier XML Exemples :

• •

XHTML + MathML XHTML + SVG + MathML

Documents dynamiques

Documents qui se transforment en fonction des actions de l’utilisateur. Composants nécessaires :

• • • •

Événements associés aux actions de l’utilisateur Mécanisme de liaison entre événements et actions Langage de programmation pour réaliser les actions Interface de programmation pour accéder au document (api dom)

5

Sign up to vote on this title
UsefulNot useful