Extensions à la spécification XML

Problème à signaler:


Télécharger Extensions à la spécification XML



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Extensions à la spécification XML

...

Niveau physique

  • Deux niveaux de spécification

Les normes incontournables

  • Les schéma de données (DTD et XMLSchema)
  • Les espaces de noms : XML namespace
  • L'inclusion de documents : XInclude
  • Résolution d'URL relatives : XML Base
  • Langage d'adressage d'arbre : XPath
  • Extension des URLs : XPointer
  • Liens entre ressources : XLink
  • Langage de transformation : XSL (XSLT, XSLFO)
  • Langage d'interrogation : XQuery
  • Programmation XML : DOM, SAX, JDOM, JAPX …

Espaces de noms

Motivations

  • Faire cohabiter deux dialectes XML dans un même document

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

<facture>

<client>

<nom>Ducroc</nom>

<prénom>Jean</prénom>

</client>

<produits>

<produit>

<nom>Crayon</nom>

<qte>100</qte>

</produit>

</produits>

</facture>

Dialecte Produit

Dialecte client

Ambiguïté sur l'élément nom

Le problème et sa solution

  • Le problème

– Un espace de nommage unique !

  • La solution

– Qualifier les noms d'éléments avec un nom unique (universel) : Une URI par exemple

  • Mise en œuvre

– Déclaration de préfixes

URI qualifiante Nom local

URI - URL

  • URI Uniform Resource Identifier

– Moyen d'identifier une ressource

– Ce n'est n'est pas une localisation

  • URL Uniform Resource Locator

– Localisation physique d'une ressource sur Internet

  • Une URL peut être utilisée comme URI mais pas l'inverse

Changer l'espace de noms par défaut

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

<facture>

<client xmlns=" ">

<nom>Ducroc</nom>

<prénom>Jean</prénom>

</client>

<produits>

<produit xmlns=" ">

<nom>Crayon</nom>

<qte>100</qte>

</produit>

</produits>

</facture>

  • Signification : les noms d'éléments sous la portée de la déclaration sont qualifiés par la valeur de l'attribut

Attribut réservé

Portée d'une déclaration d'espace de noms

  • La portée est lexicale, sont concernés :

– L'élément contenant la déclaration

– Les éléments contenus par l'élément déclarant

– Les noms d'éléments mais aussi les noms d'attribut

  • L'espace de nom peut être changé à nouveau par n'importe quel descendant

Xpath - Yves Bekkers - IFSIC 10

Expliciter des espaces de noms

  • On utilise des préfixes

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

<facture xmlns:cl=" "

xmlns:pr=" ">

<cl:client>

<cl:nom>Ducroc</cl:nom>

<cl:prénom>Jean</cl:prénom>

</cl:client>

<produits>

<pr:produit>

<pr:nom>Crayon</pr:nom>

<pr:qte>100</pr:qte>

</pr:produit>

</produits>

</facture>

Les identificateurs de préfixes sont libres …

Trois espaces de noms

  • par défaut (sans préfixe)
  • xmlns:cl
  • xmlns:pr

Avantages des espaces de noms

  • Résolution des conflits de noms
  • Encourage la réutilisation et la modularité des définitions de dialectes XML

Xpath - Yves Bekkers - IFSIC 12

Construction modulaire de documents

Le problème

  • Construire un document par réutilisation d'autres documents

Chap 1 Chap 2 … Chap n

livre

Héritage de SGML

  • On utilise les entités (un système de macro)

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE livre [

<!ELEMENT livre (html*)>

<!ENTITY chapitre1 SYSTEM "cours1/cours.xml">

<!ENTITY chapitre2 SYSTEM "cours2/cours.xml">

]>

<livre>

&chapitre1;

&chapitre2;

</livre>

  • Le problème : nécessite une dtd
  • Éviter cette solution autant que possible …

XInclude

  • Directive d'inclusion xi:include

<?xml version="1.0" standalone="yes"?>

<livre xmlns:xi="http://www.w3.org/2001/Xinclude">

<xi:include href="/cours1/cours.xml"/>

<xi:include href="/cours2/cours.xml"/>

</livre>

  • Il s'agit d'une substitution d'arbre qui est faite juste après la compilation du document principal

– Le document source principal et le résultat de la substitution sont équivalents

– Le compilateur doit faire appel à un processeur XInclude

  • Attention : les boucles sont interdites !

XInclude – espace de nomage

  • Nom officiel de l'espace de noms XInclude
  • Identificateur de préfixe - généralement : xi

Outils XInclude

Rubrique "nous avons essayer pour vous"

– XInclude Engine [lien]

  • Un ensemble de classe java pour interpréter XInclude

– Ant XInclude task [lien]

  • Une tâche XInclude pour Jajarta Ant

XInclude – attribut href

  • XInclude permet de spécifier un document en entier ou une partie de document

– Attribut href

  • Exemple

<xi:include href="/monFic.xml#partie1"/>

  • On utilise une extension des URL appelée

XPointer (voir plus loin)

XInclude – attribut parse

  • XInclude permet de spécifier le type de traitement en entrée

– Attribut parse

– Deux traitements sont possibles

  • XML traitement par défaut
  • Texte
  • Exemple

<xi:include href="/monFic.xml" parse="text"/>

XInclude – Attribut encoding

  • XInclude permet de spécifier le type d'encodage du document

– Attribut encoding

  • Exemple

<xi:include href="/monFic.xml" encoding="UTF8"/>

Xpath - Yves Bekkers - IFSIC 21

XInclude – valeur par défaut

  • XInclude permet de donner une valeur par défaut dans le cas où la ressource est absente

<xi:include href="/monFic.xml">

<xi:fallback>

<xi:fallback>

</xi:include>

Xpath - Yves Bekkers - IFSIC 22

XLink

Xpath - Yves Bekkers - IFSIC 23

Problèmes avec les liens HTML

  • Les liens HTML sont binaires unidirectionnels
  • Ils ne sont pas assez génériques

– Leur sémantique est celle des liens hypertexte et elle est associée à celle des éléments <a> et <img>

  • Une ancre doit être placée sur la destination

– Une cible ne peut pas être définie de l'extérieur

source

href

destination

name

Le liens dans les documents

XML

  • XLink Une généralisation des liens HTML

– Ils ne sont pas limités aux liens hypertexte

  • Ils permettent de représenter des liens abstraits tels que des liens de parenté, des liens de propriété …

– Ils sont plus souples

  • Multidirectionnels
  • Pas limités aux relations binaires
  • Ils utilisent XPointer pour repérer les ressources

Xpath - Yves Bekkers - IFSIC 25

Lien étendu un exemple

<facturation xmlns:xlink=" ">

<facture xlink:type="extended">

<leClient xlink:type="locator" xlink:href="#p1"

xlink:label="client"/>

<leProduit xlink:type="locator" xlink:href="#prod1"

xlink:label="produit"/>

<aAcheté xlink:type="arc" xlink:from="client"

xlink:to="produit"><qte>100</qte></aAcheté>

</facture>

<client id="p1">

<nom>Ducroc</nom>

<prénom>Jean</prénom>

</client>

<produits>

<produit id="prod1">

<nom>Crayon</nom>

</produit>

</produits>

</facturation>

Élément de liaison

Xpath - Yves Bekkers - IFSIC 26

Les liens de XLink

  • Lien XLink

– une relation explicite entre 2 ou plusieurs ressources, locale ou à distance

– Il peut être caractérisé

  • Élément de liaison

– Un élément qui définit l'existence d'un lien et décrit les caractéristiques du lien

  • Repère (locator)

– L'identification d'une ressource (à distance) qui participe à un lien

  • Arc

– Un élément de liaison définit un ensemble d'arcs traversables entre les ressources

Xpath - Yves Bekkers - IFSIC 27

Les arc définis par un élément de liaison

Ressource

locale

lien

Ressource à distance

Ressource à distance

Ressource à distance

arc

arc

Livre

Auteur

Bibliographie de l'auteur

L'editeur

Arc sortant entrant tier

Types de liens

  • Une ressource locale vient avec l'élément de liaison les autres sont à distance
  • Type d'un élément de liaison

– Sortant "Outbound" : la source est la ressource locale

– Entrant "Inbound" : la destination est la ressource locale

– Tier "Third-party" : aucune des ressources n'est locale

  • Deux versions

– Étendu (extended) la forme générale

– Simple Une version restreinte des liens étendus

  • Valable seulement pour les liens binaires unidirectionnels (tels que ceux de HTML)

XLink comment ?

  • XLink est un ensemble d'attributs dans un espace propre

– xlink:type, xlink:href, xlink:label, …

  • Ils permettent de décorer les éléments de l'utilisateur
  • Nom officiel de l'espace de noms XLink
  • Préfixe recommandé xlink:

Lien étendu un exemple

<facturation xmlns:xlink=" ">

<facture xlink:type="extended">

<leClient xlink:type="locator" xlink:href="#p1"

xlink:label="client"/>

<leProduit xlink:type="locator" xlink:href="#prod1"

xlink:label="produit"/>

<aAcheté xlink:type="arc" xlink:from="client"

xlink:to="produit"><qte>100</qte></aAcheté>

</facture>

<client id="p1">

<nom>Ducroc</nom>

<prénom>Jean</prénom>

</client>

<produits>

<produit id="prod1">

<nom>Crayon</nom>

</produit>

</produits>

</facturation>

Élément de liaison

Xpath - Yves Bekkers - IFSIC 31

Analyse de l'exemple

<facture xlink:type="extended">

<leClient xlink:type="locator" xlink:href="#p1"

xlink:label="client"/>

<leProduit xlink:type="locator"

xlink:href="#prod1"

xlink:label="produit"/>

<aAcheté xlink:type="arc" xlink:from="client"

xlink:to="produit"><qte>100</qte></aAcheté>

</facture>

– Élément de liaison : xlink:type="extended"

– Ressource à distance : xlink:type="locator"

– Un mode de traversée : xlink:type="arc"

Xpath - Yves Bekkers - IFSIC 32

Attributs Xlink classés

  • Un élément de liaison

– xlink:type="extended"

  • Ressources Locale

– xlink:type="ressource"

– xlink:label="ID" ID un identificateur pour les arcs

  • Ressource à distance

– xlink:type="locator"

– xlink:href="/XP" XP un XPointer

– xlink:label="ID"

  • Arc (mode de traversée) :

– xlink:type="arc"

– xlink:from="ID"

– xlink:to="ID"

Xpath - Yves Bekkers - IFSIC 33

Associer un "comportement" à un arc

  • Les arcs peuvent être annotés d'information de comportement

– Il s'agit de comportement abstraits

– La sémantique est donnée par les applications

  • Deux types d'information de comportement

– Le comment (ou le quoi) : xlink:show

  • Valeurs : embed, new, replace, other, none

– Quand : xlink:actuate

  • Valeurs : onLoad, onRequest, other, none Xpath - Yves Bekkers - IFSIC 34

XInclude et XLink

  • xi:include de XInclude est différent d'un liens XLink avec l'attribut show="embed"

– XLink ne définit pas un modèle de traitement

  • Demande l'inclusion d'une ressource graphique généralement
  • Est là pour facilité la recherche d'une ressource aux outils de traitements

– XInclude spécifie la transformation d'un arbre

XML en un autre arbre XML

XPointer

  • Adresser une partie de document à partir d'un autre document

– Poser des étiquettes dans le document cible

<xi:include href="/monFic.xml#partie1"/>

– Utiliser XPointer une extension des URL avec XPath qui permet de ne pas poser d'étiquette dans la cible

– Exemple les 5 premières section d'un article

<xi:include

href="/monFic.xml#XPointer(article/section[position

()<=5])"/>

  • C'est utilisé par XLink et XInclude

Repères XPointer

  • Exemple de repère XPointer

href="/monFic.xml#partieàdroite"

  • La partie droite peut être

– Une valeur d'attribut ID

– Une séquence d'entiers qui dénote le chemin dans l'arbre en partant de la racine. Par exemple /1/4/5

– Une séquence de la forme xpointer(E) où E est une expression Xpointer

  • Exemples

monFic.xml#part1,

monFic.xml#/1/4/5 monFic.xml#xpointer(/ads/ad[note])

Xpath - Yves Bekkers - IFSIC 37

XPointer une généralisation de XPath

  • Une expression XPointer est une expression Xpath
  • XPointer offre des fonctionnalités supplémentaires par rapport à Xpath

– par exemple on peut adresser au niveau du caractère dans un contenu textuel XPointer XPath

Caractères spéciaux dans les repères XPointers

  • Certains caractères doivent être échappés, par exemple l'espace %20
  • Les caractères spéciaux d'XML tels que &,

<, >, " et ' doivent aussi être échappés, par exemple &lt;

Xpath - Yves Bekkers - IFSIC 39

XML Base

  • Deux types d'URLs

– URL absolue

– URL relative

unFichier.xml

  • Définir une base : attribut prédéfini xml:base

<aaa xml:base=http://quelquePart>>

<bbb href="/unFichier.xml"/>

</aaa>

Xpath - Yves Bekkers - IFSIC 40

Xpath - Yves Bekkers - IFSIC 41

Le "plus petit cercle" XML

– Les schéma de données (DTD et XMLSchema)

– Les espaces de noms : XML namespace

– L'inclusion de documents : XInclude

– Résolution d'URL relatives : XML Base

– Extension des URLs : XPointer

– Liens entre ressources : Xlink

– Langage d'adressage d'arbre : XPath

– Langage de transformation : XSL (XSLT, XSLFO)

– Langage d'interrogation : XQuery

– Programmation XML : DOM, SAX, JDOM, JAPX …



199