Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
XML
(eXtensible Markup Language)
Abderrazak MKADMI
amkadmi@gmail.com
© 2004-2012
TABLE DES MATIÈRES
INTRODUCTION GENERALE 5
1. OBJECTIF ET DEFINITIONS 5
1.1. DEFINITION 5
1.2. ORIGINE 6
1.3. HISTORIQUE 7
2. LES LIMITES DE HTML 7
3. LES APPORTS DE XML 8
3.1. EXTENSIBILITE ET STRUCTURE : 8
3.2. STRUCTURE TYPE : MODULARISATION ET REUTILISATION 8
1. INTRODUCTION 41
2. XPATH: LE LANGAGE DE NAVIGATION 41
2.1. LA SELECTION D'OBJETS 41
2.2 LES AXES NODAUX 42
3. LES LIENS XML: XLINK ET XPOINTER 43
3.1 LES LIENS XLINK 43
3.2. LES POINTEURS XML: XPOINTER 46
1. INTRODUCTION 60
2. LE DOM ET LE W3C 61
3. LA PROGRAMMATION DU DOM 61
4. INTERFACE SAX 62
5. DOM VERSUS SAX 64
1- INTRODUCTION 70
2- CORRESPONDANCES ENTRE SGBDR ET XML 71
2-1 SGBDR 71
2-2 LANGAGE SQL 72
2-3 XML VS SGBDR : STRUCTURE 72
2-4 XML VS SGBDR : RELATIONS 73
3- EXPORTATION DES BASES DE DONNEES RELATIONNELLES VERS XML 76
4- EXPORTATION DES DONNEES XML VERS UNE BASE DE DONNEES RELATIONNELLE 77
5- LE LANGAGE DE REQUETE XML : XQUERY 78
5-1 PRESENTATION ET OBJECTIF 78
5-2 LES BASES DE XQUERY 79
1. CHAMP D'APPLICATIONS 83
4.1 COMMERCE ELECTRONIQUE ET ECHANGE DE DONNEES INFORMATISEES (EDI) 83
1.2 GESTION ELECTRONIQUE DE DOCUMENTS (GED) : 83
1.3 INTEROPERABILITE DE SYSTEMES D'INFORMATIONS HETEROGENES 83
1.4 PERSONNALISATION DE LA RELATION CLIENT (CRM): 83
2. LES STANDARDS 83
2.1. INTRODUCTION 83
2.2. MATHML (MATHERNATICAL MARKUP LANGUAGE) 84
2.3. SVG (SCALABLE VERCTOR GRAPHICS) 85
2.4. SMIL (SYNCHRONIZED MULTIMEDIA INTEGRATION LANGAGE) 86
2.5. RDF (RESOURCE DESCRIPTION FRARNEWORK) 87
CONCLUSION 89
BIBLIOGRAPHIE 90
LIVRES 90
SITES INTERNET 90
OUTILS 90
SITE OFFRANT DES DTDS STANDARDS 91
SITES DE LOGICIELS EN LIGNE 91
GLOSSAIRE 92
Introduction générale
INTRODUCTION GENERALE
XML (eXtensible Markup Language) est un nouveau langage normalisé de balisage
numérique, permettant de décrire la structure hiérarchique d'un document. Non propriétaire et
indépendant des plate-formes et des systèmes d'exploitation, XML est une solution
incontournable pour la représentation et l'échange de documents sur Internet. Il offre de
nombreuses fonctionnalités en matière de publication électronique, d'e-commerce et de
personnalisation des transactions.
Ainsi, XML est devenu le langage universel d’échange de données informatiques, qu’il
s’agisse de les stocker, de les échanger, de les traiter ou de les afficher.
« L’apparition de XML a été prédominante. Grâce à lui, il est possible de séparer les
données de leur structure. Cela permet notamment de stocker ces informations sur le web de
façon qu’elles soient exploitées automatiquement par différents serveurs et de présenter le
résultat final, sous forme de service web, par exemple, à l’utilisateur (...). L’avenir appartient
aux entreprises capables d’exploiter les données et de les visualiser. 1»
Je vais essayer, à travers ce cours, de présenter sommairement ce méta-langage, ainsi que
quelques langages dérivés, tout en décrivant les techniques qui permettent de présenter un
document XML sur un navigateur, à savoir les feuilles de style. J’essaierai aussi de présenter
les DTD qui permettent de valider un document par rapport à un méta-modèle, tout en faisant
la différence entre les DTD et les schémas XML qui viennent répondre à certaines
insuffisances des premières. Plusieurs exemples seront présentés pour faciliter la
compréhension.
Le cours est composé donc d’une introduction générale et de 7 chapitres complétés par une
conclusion, une bibliographie et un glossaire. Ces chapitres sont :
1- Les documents XML : structure et DTDs
2- Les schémas XML
3- La navigation XPath et les liens XLL
4- Les feuilles de style
5- Le modèle de document : DOM & SAX
6- Les formulaires XML (XForms)
7- XML et les bases de données
1. OBJECTIF ET DEFINITIONS
1.1. DEFINITION
XML peut être considéré comme une généralisation de HTML où, au lieu d'avoir un jeu de
balises prédéfinies ayant une signification prédéfinie, l'auteur peut "inventer" à volonté ses
propres balises.
Le but de XML est de faciliter le traitement automatisé de documents et de données. L'idée
est de pouvoir structurer les informations de telle manière qu'elles puissent être à la fois lues
par des personnes sur le web et traitées par des applications qui exploiteront de manière
automatisée les informations en question.
L'objectif majeur de XML donc est d'étendre les fonctionnalités de HTML afin de faciliter les
échanges de documents sur le WEB. Pour cela les acteurs du W3C (World Wide Web
1
ABRAMATIC, Jean-François (W3C). - Entretien à Décision Micro, le 6 juin 2001
1.2. ORIGINE
Les objectifs étaient donc
d'étendre les fonctionnalités du langage HTML qui est limité,
d'offrir un standard équivalent à SGML auxquels les acteurs du W3C reprochaient les
éléments suivants :
- il est trop complexe pour être implémenté dans des navigateurs,
- il impose que tout document soit conforme à une structure type spécifiée et
validée,
- il ne possède pas de mécanismes de liens évolués.
Mais les concepts de SGML (séparation entre contenu et forme, garantie d'une plus grande
pérennité, indépendance vis à vis des évolutions technologiques et des médias ; écran,
imprimantes, ...) ont pu être validés par de nombreux industriels en particulier sur la gestion
de documentation.
Les objectifs qui ont guidé le groupe de travail XML :
- Utilisable sur l'infrastructure Internet
1.3. HISTORIQUE
1996: groupe de travail au sein du W3C
1998 : publication de recommandations pour la version 1.0 de XML
XML est une recommandation du W3C en date du 10 Février 1998, référencée à :
http://www.w3.org/TR/1998/REC-xml-19980210
Quelques standards gérés par le W3C :
• XSL (eXtensible Stylesheet Language) : XSLT + XSLFO : Règles de transformation et de
présentation de documents XML,
• XLL (eXtensible Linking Language Xlink + Xpointer : Liaison et adressage entre
documents,
• XPath (utilisé pour XSLT et XPointer) : Expression de la navigation dans des documents
XML,
• DOM (Document Object Model) : API d'accès et de manipulation de documents XML sous
forme d'objets,
• XML Schema : Définition de la structure des documents XML en XML,
• XQL (eXtensible Query Language) : Requêtes pour la recherche d'information dans un arbre
XML.
Une interopérabilité limitée : on ne sait pas extraire une information particulière d'un
document HTML, ce qui limite l'échange d'informations avec d'autres applications
ainsi que les possibilités de recherche sémantique sur le contenu d'un site ou d'un
document.
Une gestion des liens trop simples : Deux types de liens dans HTML : le lien "Link"
(lien vers un autre élément, par exemple une feuille de style) et le lien "a" (lien vers
une autre page). Dans la pratique le "l" n'est presque pas utilisé mis à part pour la
gestion des feuilles de style CSS. Aujourd'hui rien n'empêche d'utiliser un lien "a" là
où un lien "link" aurait été plus adapté.
Des recherches lourdes et des réponses très nombreuses, rendant leurs traitements
difficiles car il n'y a pas de notion de sémantique dans l'information recherchée.
Aujourd'hui la recherche des ouvrages d'un auteur particulier se fait en recherchant sur
une chaîne de caractères qui peut apparaître sous n'importe quelle forme sur les sites.
Les réponses pourront donc inclure les ouvrages recherchés mais aussi toutes
informations faisant référence à l'auteur. XML permettra de faire la recherche en
spécifiant des mots clés de recherche du type AUTEUR=" xxxxx ". Ce qui limitera les
réponses ramenées aux seules pages contenant une information de ce type.
Cependant, il est important qu'il n'y ait pas d'ambiguïté sur la structure et la sémantique des
différentes données échangées entre des particuliers ou des entreprises. C'est pourquoi XML
propose des structures types de documents (les DTD).
En outre, ces dernières ouvre la porte vers des outils (API ou logiciel) permettant de
manipuler ces différentes structures.
2. LA STRUCTURE DU DOCUMENT
Il existe deux types de documents XML : le document bien formé et le document valide.
Un document bien formé est un document respectant la syntaxe XML.
Un document valide est un document bien formé qui respecte une structure type définie dans
une DTD.
Le document XML se compose de :
• un prologue (facultatif mais conseillé),
• un arbre d'éléments qui constitue le contenu du document,
• des commentaires et des instructions de traitement.
Déclaration XML
<?xml version= " 1.0 " encoding= " ISO-8859-1 " standalone = " yes " ?>
<?xml-stylesheet type = " text/xsl " href= " test.xsl " ?>
Instruction de traitement
< !DOCTYPE formation [
< !ENTITY organisme " EDIFRANCE ">
PROLOGUE
1. LE PROLOGUE
Les trois éléments sont facultatifs, mais il est en général préférable d'include la déclaration
XML qui contient les deux premiers éléments d'information.
Si aucun jeu de caractères n'est spécifié, une application XML doit supposer qu'il s'agit du jeu
de caractères Unicode, encodé en UTF-8 ou en UTF-16.
Si aucune DTD n'est identifiée, le document est considéré bien formé. Si une DTD est
spécifiée, le document est alors valide (s'il respecte les règles dictées dans la DTD bien sûr).
< ?xml version= "1.0 " encoding = "ISO-8859-1" standalone = "yes" ?>
Dans cet exemple, il y a trois parties :
L'identification du document XML est nécessairement au début du document et a la
forme suivante :
<?xml version="1.0"?> : Version du langage utilisé
L'encodage, s'il est spécifié, se retrouve dans l'instruction de traitement qui identifie le
document XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
Dans cet exemple, il s'agit d'un document XML dont le jeu de caractères est l'ISO-Latin
1 (norme ISO 8859-1), et donc pas l'Unicode. Dans l'exemple précédent, le jeu de
caractères était l'Unicode, avec encodage UTF-8 ou UTF-16, soit la valeur par défaut
Exemple
< ?xml version='1.0' ?>
<PRODUIT>
<TOPIC>
<TITLE>Création d’un répertoire de schémas XML</TITLE>
<AUTHOR>Abderrazak MKADMI</AUTHOR>
<PUBLISHER>EDIFRANCE</PUBLISHER>
</TOPIC>
<TOPIC>
<TITLE>Les bases de données relationnelles</TITLE>
<AUTHOR>Imad Saleh</AUTHOR>
<PUBLISHER>Eyrolles</PUBLISHER>
</TOPIC>
</PRODUIT>
Comme nous avons vu, un seul élément racine est autorisé par document.
L’exemple ci-dessous par exemple est incorrect car il comporte plusieurs éléments père :
< ?xml version='1.0' ?>
<TOPIC>
<TITLE>Création d’un répertoire de schémas XML</TITLE>
<AUTHOR>Abderrazak MKADMI</AUTHOR>
<PUBLISHER>EDIFRANCE</PUBLISHER> Syntaxe
</TOPIC> incorrecte
<TOPIC>
<TITLE>Les bases de données relationnelles</TITLE>
<AUTHOR>Imad Saleh</AUTHOR>
<PUBLISHER>Eyrolles</PUBLISHER>
</TOPIC>
2.2.2 Élément vide
Un élément vide est un élément dont le contenu entre la balise d'ouverture et la balise de
fermeture est vide (<baliseDOuverture suiteDAttributs></baliseDOuverture
suiteDAttributs>); il peut être abrégé <baliseDOuverture suiteDAttributs /> (il ne faut pas
croire qu'un élément vide ne contient pas d'information; les informations qu'il contient sont
dans ses attributs).
Un élément vide s’écrit sous la forme suivante :
<exemple></exemple> ou <exemple/>
3.1. PRESENTATION
L'arbre d'éléments XML peut contenir différents objets :
• Des attributs : les éléments peuvent contenir des informations complémentaires
stockées sous forme d'association nom=valeur. Ces informations permettront
d'effectuer des traitements spécifiques (par des applications, des navigateurs ou des
feuilles de style XSL) en utilisant des critères distincts des données affichées. Cela
permet par exemple de gérer des liens.
Des entités : une entité est un objet disposant d'un nom et d'un contenu. Cet objet peut
être interne (une chaîne de caractère), externe en format XML (autre fichier XML) ou
non (fichier WORD par exemple). Une entité pourra être référencée sur un attribut.
Des sections littérales : une section littérale est une chaîne de caractères non
interprétée par le parseur XML. Cela permet ainsi d'inclure des caractères spéciaux.
Par exemple pour inclure des exemples de syntaxes XML dans une page XML.
Des données : toutes chaînes de caractères ne répondant pas aux éléments ci-dessus.
2
Les entités paramétriques ne peuvent pas être utilisées en dehors d'une DTD
<!DOCTYPE catalogue [
<!ENTITY INTER " Internet ">
<!ENTITY Obj_Xmlp SYSTEM "3b_OBJ_XMLP.xml">
]>
<catalogue>
<stage>
<intitule>XML et les bases de données</intitule>
<grp-produit>&INTER; </grp-produit>
&Obj_Xmlp;
</stage>
</catalogue>
Les fichiers .xml référencés n’ont pas à contenir de prologue. En effet, celui-ci est inclu dans
le document principal.
C’est le mot clé SYSTEM qui indique qu’il s’agit d’une référence de type URL.
3.7.2. Adressage par identificateur public (FPI3)
L'adressage par identificateur public permet de réaliser une indirection via un fichier externe
(fichier catalogue).
<!ENTITY nom PUBLIC "FPI" "URL">
Le mot clé PUBLIC indique qu'il s'agit d'un FPI. IL est possible d'ajouter une URL qui sera
utilisée lorsque l'application ne pourra pas résoudre l'identificateur public.
Exemple :
Code pour référencer les entités prédéfinies XHTML
< ! - - character entity set. Typical invocation :
< ! ENTITY % HTMLlat1 PUBLIC
"-//W3C//ENTITIES Latin 1 for XHTML//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent>
%HTMLlat1 ;
-->
Le FPI est de la forme: préfixe//auteur//description//CodeLangue
3.7.2.1. Résolution des identificateurs publics :
La résolution des adressages par FPI se fait de la façon suivante :
1. recherche d'un fichier catalogue à partir d'une variable d'environnement de type PATH,
2. Recherche dans le fichier catalogue d'une entrée correspondante au FPI,
3. Récupération de l’URL associée à l'identificateur,
4. Si l'identificateur n'est pas trouvé, utilisation de l’URL par défaut.
3.7.2.2. Avantages
L'utilisation de ce mode d'adressage augmente la maintenabilité de l'application en
permettant une réutilisation des liens. Lorsqu'une URL change, il n'y a que le fichier
catalogue à modifier que tous documents XML prennent en compte la modification.
3
Format Public Identifier
4. CONSEIL D'ECRITURE
1. élément versus attribut
Il n'est pas toujours facile de choisir entre élément et attribut, car il n'y a pas de règles
absolues car tout peut se réduire à des éléments sans attributs.
Les critères de choix sont liés à :
• La structure de l'information
- Structurée ou non structurée multi-lignes éléments
- Non structurée attribut
• Qui et comment est exploitée l'information
- Homme ou machine et type d'application
• L'ordre de l'information a-t-il une importance
- Ordre important éléments
- Ordre non important attribut
(Le parseur traite et restitue les attributs sans règle imposée)
2 Inclure les méta-données sous forme d'attributs dans un élément vide
exemple
<exemple>
<meta cat = 'Exemple'
num='7.3'
auteur='Mkadmi'
date_cre='2002-11-15'
date_mod=' '>
</meta>
</exemple>
3 Utiliser des marquages méta-typographiques pour indiquer les éléments devant
bénéficier de mise en forme particulière. Ce marquage n'indiquant pas la mise en forme à
réaliser.
Exemple
<p>Dans l’&apos ;exemple suivant le texte important est indiqué entre des
marqueurs<me>spéciaux</me></p>
L’élément me indique ici le texte qui doit bénéficier d'une mise en forme particulière,
mais n’indique nullement quelle mise en forme il faut appliquer.
<catalogue>
<stage id = ''XMLPres''>
<intitule>XML et les bases de données</intitule>
<prerequis>connaître les langages SQL et HTML</prerequis>
</stage>
<stage id = ''XML Prog''>
<intitule>XML programmation</intitule>
<prerequis>avoir suivi le stage de XML et les bases de données</prerequis>
</stage>
</catalogue>
editeur | auteur : indique que ces éléments sont obligatoires et que l’ordre est indifférent.
6.1.1. Déclaration d'un élément de données
La déclaration d'un élément fils (niveau le plus fin) se fait de la façon suivante
< !ELEMENT nom (#PCDATA)>
L'élément nom peut contenir toute donnée XML (y compris des sections littérales) mais
ne peut pas contenir des données non-XML.
6.1.2. Déclaration d'un élément à modèle mixte
Cette définition autorise la mixité entre données et élément.
< !ELEMENT chapitre (#PCDATA | p | exemple)* >
Un chapitre peut contenir des données (#PCDATA) et/ou un élément nomme p et/ou un
élément nommé exemple. Ces éléments étant facultatifs et pouvant apparaître plusieurs
fois.
6.1.3. Déclaration d'un contenu libre: ANY
Il est possible d'indiquer que le contenu d'un élément est libre (donnée ou autres
éléments) en précisant le mot clé ANY
< ! ELEMENT chapitre ANY >
Cette déclaration peut être très pratique en phase de conception car elle permet de définir
des structures et de les affiner au fur et à mesure de l'avancement du projet.
6.1.4 Déclaration d'un Elément vide
< !ELEMENT chapitre EMPTY>
<xs:enumeration value="28-01-2001"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="heure_modif" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="12:12"/>
<xs:enumeration value="12:14"/>
<xs:enumeration value="14:12"/>
<xs:enumeration value="15:12"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="racine">
<xs:complexType>
<xs:sequence>
<xs:element ref="repertoire" maxOccurs="unbounded"/>
<xs:element ref="fichier"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="repertoire">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="fichier"/>
<xs:element ref="repertoire"/>
</xs:choice>
<xs:attribute name="nom" type="xs:string" use="required"/>
<xs:attribute name="date_modif" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="19-02-2001"/>
<xs:enumeration value="25-02-2001"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="heure_modif" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="14:12"/>
<xs:enumeration value="14:14"/>
<xs:enumeration value="15:12"/>
<xs:enumeration value="16:09"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Chaque élément déclaré est associé à un type de données via l'attribut type. L'élément nom est
de type typeNom, qui est un type complexe défini par l'utilisateur. L'élément remarque est du
type xsd:string qui est un type simple prédéfini de XML Schema.
Les éléments pouvant contenir des sous-éléments ou porter des attributs sont dits de types
complexes, tandis que les éléments ne contenant pas de sous-éléments sont dits de types
simples.
Il s’agit d’une nouveauté importante, puisque les DTD se contentaient de types de données
plutôt limités (PCDATA, CDATA …).
Les types de données simples les plus courants sont représentés : chaînes de caractères,
entiers, dates, réels, etc. Les types de données des DTD ont été repris par XML Schema pour
des raisons de compatibilité ascendante.
<xsd :simpleType>
<xsd :restriction base = « xsd :NMTOKEN »>
<xsd :enumeration value = « KO »/>
<xsd :enumeration value = « MO »/>
<xsd :enumeration value = « GO »/>
</xsd :restriction>
</xsd :simpleType>
</xsd :attribute>
Pour pouvoir rendre des éléments optionnels, il faut appliquer des contraintes d'occurrences
sur les éléments.
Définition d’une séquence pour l’élément racine
<xsd :element>
<xsd :complexType>
<xsd :sequence>
<xsd :element ref = « repertoire »/>
<xsd :element ref = « fichier »/>
</xsd :sequence>
</xsd :complexType>
</xsd :element>
Le connecteur de séquence de XML Schema reproduit donc fidèlement l'opérateur
de séquence des DTD(,)
Lorsqu’ils sont définis localement, les éléments d’un schéma peuvent comporter les attributs
minOccurs et maxOccurs.
La valeur spéciale « unbounded » peut être donnée à l’attribut maxOccurs pour spécifier
qu’un élément peut apparaître un nombre illimité de fois.
La valeur par défaut est de 1 pour les deux attributs minOccurs et maxOccurs, donc
présence obligatoire et une seule fois.
< !—Définition
Définition d’un type des données communes pour repertoire et fichier--
fichier >
<xsd :complexType name=”typeconteneur” mixed= “true”>
<xsd:attribute name = “nom”
“ ” type = “xsd:string” use = “required”/>
“required”/
<xsd:attribute name = “date_modif”
“ ” type = “xsd:string” use = “required”/>
<xsd:attribute name = “heure_modif”
“ ” type = “xsd:time” use = “required”/>
</xsd:comlexType>
1. INTRODUCTION
Il existe une grande variété de spécifications liées à XML, dont XPath et XLL sont deux
composantes connexes :
• XPath qui permet d'exprimer la navigation dans un arbre XML avec des expressions sous
forme de patterns utilisées par XSLT et XPointer.
• XLL (XML Linking Language) qui est un ensemble de deux spécifications :
- XLink pour décrire les liens entre documents
- XPointer pour définir un endroit précis dans un document cible d'un lien, en utilisant
XPath.
XPath a un statut de recommandation du 16 Novembre 1999, dont les spécifications sont
disponibles à : http://www.w3.org/TR/1999/REC-xpath-19991116
XLink a un statut de recommandation du 27 Juin 2001, dont les spécifications sont
disponibles à : http://www.w3.org/TR/2001/REC-xlink-20010627
XPointer a un statut de candidate recommandation du 11 Septembre 2001, dont les
spécifications sont disponibles à : http://www.w3.org/TR/2001/CR-xptr-20010911
Recherche d'attribut
- @ Nom l'attribut nom du nœud (élément) courant
- fichier/ @Nom l'attribut nom de l'élément <fichier> fils
-@* tous les attributs de l'élément courant
Les tests
- repertoire[fichier] les éléments <repertoire> contenant un sous-élément <fichier>
- *[@taille] les éléments contenant un attribut taille
- //repertoire[@nom = "XML"] les éléments <repertoire> de la racine ayant pour
attribut nom = "XML"
- xlink: type=" locator" décrit les ressources locales qui participent à la liaison
- xlink:href="URI' URI de la ressource liée
- xlink:label="nomlabel" identifiant nommé de la ressource locale
• L'association entre source et destination
- xlink:type="arc" décrit les ressources locales qui participent à la liaison
- xlink:from="nomiabel" identifiant nommé du départ du lien
- xlink:to="nomiabel" identifiant nommé de l'arrivé du lien
Un lien en ligne possède au moins une ressource locale.
Association en ligne des URI des sites FAQ XML
<faq-xml xmlns:xlink=http://www.w3.org/1999/xlink/namespace/
xlink:type="extended"
xlink:title="Liens vers les sites FAQ XML étrangers">
<nomlien xlink:type="resource"
xlink:label="local">
Sites FAQ XML
</nomlien>
<site xlink:type="local"
xlink:href=http://www.xml.fr/FAQ.xml
xlink:label="fr"
xlink:title="Version française"/>
<site xlink:type="local"
xlink:href=http://www.xml.us/FAQ.xml
xlink:label="us"
xlink:title="Version américaine"/>
<site xlink:type="local"
xlink:href=http://www.xml.ca/FAQ.xml
xlink:label="ca"
xlink:title="Version canadienne"/>
<site xlink:type="arc"
xlink :from="local"
xlink:to="fr"/>
<site xlink:type="arc"
xlink :from="local"
xlink:to="us"/>
<site xlink:type="arc"
xlink :from="local"
xlink:to="ca"/>
</faq-xml>
Les valeurs pour la description du lien, xlink :from et xlink :to doivent être des labels
Exemple de définition de lien étendu hors ligne
Fichier de lien externe
<doc_base
xmlns:xlink=http://www.w3.org/1999/xlink
xlink:type="extended">
<doc
xmlns:xlink=http://www.w3.org/1999/xlink
xlink:type="locator"
xlink:href="mondoc.xml"
xlink:label="label_doc">
</doc>
<base
xmlns:xlink=http://www.w3.org/1999/xlink
xlink:type="locator"
xlink:href="mabase.xml"
xlink:label="label_base">
</base>
<loadbase
xmlns:xlink=http://www.w3.org/1999/xlink
xlink:type="arc"
xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase"
xlink:from="label_doc"
xlink:to="label_base"
</loadbase>
</doc_base>
2. XSL
2.1. PRESENTATION
XSL est une famille de spécifications comprenant :
o XSLT (XSL Transformation) pour le parcours et la transformation d'un document
source XML vers un autre document XML,
o X-Path et les patterns pour la navigation dans l'arbre XML source,
o XSL-FO (XSL Formatting objects) pour décrire la présentation d'un document.
Au départ, il n'y avait pas cette séparation, et c'est pourquoi le terme générique XSL désigne
aussi bien la phase de transformation que celle de formatage.
3. XSLT: LA TRANSFORMATION
XSLT (XML Stylesheet Language Transformation) a pour objectif de définir un langage pour
effectuer des transformations sur des arbres XML.
La transformation produit en sortie un fichier XML de préférence XHTM, WML, SVG, ...
Elle s'applique sur un arbre XML provenant :
- d'un fichier XML,
- d'un message (flux) XML.
XSLT permet de gérer, a partir d'une source unique d'informations, des fichiers adaptés aux
différents canaux de visualisation (PC, Mobile, WebTV, … )
Feuille Fichier
XSLT HTML
Processeur
XSLT
Fichier
Flux XML
WML
<laboratoire>PARAGRAPHE</laboratoire>
<adresse>
<rue>2, rue de la Liberté</rue>
<code_postal>93526</code_postal>
<ville>SAINT-DENIS</ville>
<pays>France</pays>
</adresse>
<telephone>(33)149406789</telephone>
<fax>(33)14558787865</fax>
</bureau>
</personne>
</cartes>
Repertoire : XML
ressources XML (exemples, outils,
spécifications, ...)
Repertoire : exemples
exemples de fichiers XML
Fichier : séminaire.xml
Fichier : XMLSPY.xml
Repertoire : outils
Repertoire : Schema
Repertoire : DTD
Ressources sur les DTD
Repertoire : outils
Fichier : XMLSPY.exe
Fichier : cooktop.msi
Repertoire : XML Schema
Fichier : ebXML.pdf
4
Bertrand Ibrahim. – Introduction à XML. - http://cui.unige.ch/eao/www/xml/Plan.html
<xsl:if
exécute les règles imbriquées dans l'élément xsl:if
test="ExpressionBooléenne">
uniquement si l'expression booléenne fournie est évaluée à
...
vrai.
</xsl:if>
<xsl:choose>
<xsl:when test="ExpressionBoo
léenne">
...
</xsl:when>
<xsl:when test="ExpressionBoo fonctionne d'une manière similaire au xsl:if, mais permet de
léenne"> tester plusieures conditions et de prévoir une alternative
... quand toutes les conditions échouent.
</xsl:when>
<xsl:otherwise>
...
</xsl:otherwise>
</xsl:choose>
<xsl:element
produit en sortie un élément du nom indiqué par l'attribut
name="NomElementSortie">
name. Des éléments xsl:attribute peuvent être imbriqués pour
...
ajouter des attributs à l'élément produit en sortie.
</xsl:element>
4. XSL-FO: LE FORMATAGE
XSL-FO (XML Stylesheet Language Formatting Objects) a pour objectif de définir un
langage pour formater les données.
Il s'agit d'une application XML permettant de décrire la mise en page des données en sortie de
traitement. Le formatage permet de décrire une mise en page en vue d'une génération vers :
Navigateur, PDF, RTF, PostScript,....
Pour l'instant, il existe des outils qui permettent de générer un fichier au format PDF ou RTF,
à partir du document XML : pour le PDF, l'application FOP de James Tauber disponible sur le
site : http://xml.apache.org/fop/
Pour le RTF, l'application jfor disponible sur le site : http://www.jfor.org/
Flux XML
XSL-FO
Processeur
XSLT
Feuille
XSLT Feuille
RTF
Processeur
FO Feuille
PDF
<fo :sequence-specification>
<fo :sequence-specifier-single page-master-name="only"/>
</fo :sequence-specification>
<fo :flow>
<fo :block font-size="20pt" font-family="serif">
Hydrogen
</fo :block>
<fo :block font-size="20pt" font-family="serif">
Helium
</fo :block>
</fo :flow>
</fo :page-sequence>
</fo :root>
Hydrogen
Helium
1. INTRODUCTION
Le Modèle Objet de Document (DOM) est une interface de programmation d'applications
(API) pour des documents HTML et XML. Il définit la structure logique des documents et la
manière dont un document est accédé et manipulé.
Dans la spécification DOM, le terme "document" est utilisé au sens large - XML est de plus
en plus utilisé pour représenter tout type d'informations stockées sur tout type de systèmes. La
plupart d'entre elles auraient été traditionnellement vues comme des données plutôt que des
documents. Cependant, XML représente ces données comme des documents, et DOM peut
être utilisé pour gérer ces données.
Avec le Modèle Objet de Document, les programmeurs peuvent construire des documents,
naviguer dans leur structure, et ajouter, modifier, ou supprimer soit des éléments, soit du
contenu. Tout ce qui peut être trouvé dans un document HTML ou XML peut être accédé,
changé, détruit, ou ajouté en utilisant le Modèle Objet de Document,
Le DOM fournit une interface de programmation objet (API) indépendante des langages de
programmation, de sorte que des implémentations DOM puissent être écrites dans le langage
de votre choix.
Le DOM est en général ajouté comme couche intermédiaire entre le parseur XML et
l’application qui a besoin des Informations du document. Le parseur lit les données du
document XML, les transmet à un DOM qui va être utilisé par une application de plus haut
niveau.
Application
DOM
Parseur XML
< -- >
_____
_____
Document XML
• DOM level 2
- Complète la version Core pour la gestion des espaces de noms
- DOM CSS : prise en charge des feuilles de style
- DOM Events : Modèle d'événements
- DOM Filters and Iterators : filtrage d'éléments et traitements itératifs
- DOM Range : isoler et traiter des fragments de documents.
2. LE DOM ET LE W3C
Le W3C gère les spécifications liées au DOM
• DOM level 1 a un statut de recommandation du 01 Octobre 1998, dont les spécifications
sont disponibles à:
http://www.w3.org/1998/REC-DOM-Level-1-19981001
• DOM level 2 Core, Views, Style, Event et Range ont un statut de recommandation du 13
Novembre 2000, dont les spécifications sont disponibles à: http://www.w3.org/2000/REC-
DOM-Level-2-Core-20001113
http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113
http://www.w3.org/TR/2000/REC-DOM-Level-2-Slyle-20001113
http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113
http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113
• DOM level 3 est au statut de Working Draft.
3. LA PROGRAMMATION DU DOM
DOM représente un document XML comme un arbre d'objets, chaque noeud est un type
dérivé de type Node.
• Offre les méthodes nécessaires au parcours et construction de l'arbre.
La racine de l'arbre est de type Document
• Accès au type de document et sa DTD
• Offre les méthodes nécessaires à la création des différents types d'éléments
• Contient un seul objet fils de type Element qui est la racine du document
Chaque élément est de type Element
• Accès au nom de l'élément
• Offre les méthodes nécessaires au traitement des attributs
• Accès aux éléments fils par leur non
Une liste de nœuds de type NodeList
• Récupération de la taille de la liste et accès à chaque nœud
Les nœuds de type Text, Comment et CDATASection dérive du type CharacterData
• Offre les méthodes nécessaires aux traitements des chaînes de caractères
Les attributs sont du type Attr, qui n'appartiennent pas à l'arbre DOM, mais sont liés aux
éléments
• Récupération du nom et de la valeur
Il existe une interface d'accès à une collection de nœud d'après un nom unique, c'est le type
NamedNodeMap
• Offre les méthodes nécessaires à la lecture, écriture et suppression
Les autres types de nœuds sont :
• Entity pour une entité générale
• EntityReference pour une référence à une entité dans une donnée XML
• Processinglnstruction pour représenter les instructions de traitement.
La spécification DOM ne propose pas de méthode pour :
- charger en un document XML sous forme de représentation mémoire DOM,
- sauvegarder une représentation mémoire DOM sous forme de document XML,
- méthode pour générer un document à partir d’un arbre XML et d’un arbre
XSLT.
Les interfaces des langages et outils en proposent.
Exemple de chargement en mémoire d’un document XML dans IE5
Création mémoire d’un document XML et XSLT dans IE5
var sourceXML = "arboSPY-Deplier.xml" ;
var styleXSLT = "arboSPYdeplie.xslt" ;
4. INTERFACE SAX
SAX (Simple API for XML) est une recommandation de fait (plutôt qu’être une spécification
développée par un organisme de standardisation, il s’agit du fruit de la collaboration de
développeurs de parseurs XML, autour d'un groupe de discussion sur internet (Celle liste de
diffusion est nommée XML-Dev). Son objectif est de fournir une API simple et standard pour
accéder au contenu d'un document.
Contrairement à DOM, elle est basée sur une approche événementielle, et une lecture
séquentielle du document XML :
• On trouve des notions de début et fin de document, d'élément, d'attribut,
• Permet de récupérer les informations lues par le parseur XML.
SAX, contrairement à DOM, n'implémente pas d'arbre en mémoire, donc orienté traitement de
gros document XML.
Les spécifications de SAX, qui ne sont pas gérés par le W3C sont disponibles
http://www.megginson.com///SAX/index.html
Il existe deux versions de SAX :
• SAXI (11 Mai 1998) supportée par tous les parseurs XML en Java, mais sans espaces de
noms,
• SAX2 (05 Mai 2000), ajoute espaces de noms et configuration des parseurs SAX et son
utilisation en Java.
Exemple de programme SAX qui affiche le nom des balises ouvrantes et fermantes lors de
la lecture séquentielle d’un document XML
import org.xml.sax.Parser ;
import org.xml.sax.DocumentHandler ;
import org.xml.sax.helpers.ParserFactory ;
import org.xml.sax.HandlerBase;
import org.xml.sax.AttributeList;
2- XFORMS : COMPOSANTS
Contrairement aux schémas XML pour lesquels, les facettes sont statiques, les facettes
XForms peuvent être dynamiques, et correspondre ainsi à des contraintes qui évoluent en
cours d'exécution (par ex. bornes inférieures et supérieures d'un élément de formulaire qui
changent en fonction de ce que l'utilisateur aura tapé dans d'autres champs).
Exemple
<xform:string name="state"/>
<xform:string name="zipCode"/>
</xform:case>
<xform:case locale="default">
<xform:string name="rue"/>
<xform:string name="ville"/>
<xform:string name="pays"/>
<xform:string name="codePostal"/>
</xform:case>
</xform:switch>
Structures homogènes : Permet de répéter une structure en plusieurs exemplaires.
<xform:array name="auteurs" minOccurs="1" maxOccurs="unbounded">
<xform:string name="auteur" />
</xform:array>
2-1-2 Langage de contraintes dynamiques
Les contraintes dynamiques sont définies par des expressions faisant référence à divers
éléments du document. Ces éléments peuvent être référencés à l'aide de la notation définie
dans XPath. Pour éviter des problèmes dus à l'utilisation de caractères spéciaux, les opérateurs
utilisés dans les expressions sont des mots:
opérateur signification
not expr inverse le résultat de l'expression
le résultat sera le résultat de la première expression si
if cond then expr1 else expr2 la condition est vraie, sinon celui de la deuxième
expression
expr1 is expr2 retourne vrai si les deux expressions sont égales
retourne vrai si expr1 est une valeur comprise entre
expr2 et expr3. Les expressions doivent être du même
expr1 is within(expr2,expr3)
type de base (numérique, string, date, temps, valeur
monétaire)
expr1 is before expr2 expr1 est inférieure à expr2
expr1 is below expr2 idem
expr1 is after expr2 expr1 est supérieure à expr2
and, or et xor opérateurs booléens
plus, minus, times et over opérateurs arithmétiques
string1 plus string2 concaténation de chaînes de caractères
nombre% valeur divisée par 100
number(), sum(), floor(), ceiling(),
fonctions numériques
average(), min(), max()
string(), concat(), starts-with(),
contains(), substring-before(), substring-
fonctions de manipulation de chaînes de caractères
after(), substring(), string-length(),
normalize-space() et translate()
heure actuelle du système sous forme de chaîne de
now()
caractères
submit() envoi au serveur
Cette section décrit les balises à utiliser pour décrire l'interface utilisateur, les propriétés de
style permettant la mise en page des éléments interactifs de formulaires, ainsi que le
mécanisme faisant le lien entre l'interface utilisateur et le modèle de données.
2-2-1 Eléments interactifs
Elément Catégorie Description
élément non modifiable par l'utilisateur et affichant une
output anyControl
valeur généralement calculée à partir d'autres éléments
élément de saisie de texte. Les attributs rows et cols
textbox anyNavControl
indiqueront les dimensions (en caractères).
checkbox anyNavControl case à cocher
élément de sélection simple contenant un élément <item
value="..."> pour chaque valeur possible. La propriété de
exclusiveSelect anyNavControl
style list-ui peut prendre une des valeurs radio, checkbox,
menu ou listbox pour définir l'apparence de l'élément
élément de sélection multiple contenant, comme l'élément
multipleSelect anyNavControl
exclusiveSelect, des éléments item.
élément permettant de lancer une action. L'attribut action
button anyNavControl
peut contenir une contrainte dynamique.
élément provoquant l'envoi des données du formulaire.
submit button
L'attribut action a pour valeur par défaut submit().
reset pas encore défini
suspend pas encore défini
D'autres éléments interactifs seront bientôt définis.
2-2-2 Eléments de mise en page
Elément Description
élément pouvant contenir d'autres éléments de formulaire. La propriété de style
layout indique la direction selon laquelle les éléments contenus sont répartis
groupbox (horizontal, vertical ou inherit). La propriété field-align indique l'emplacement
de l'étiquette (sous-élément <caption>) d'un élément par rapport à l'élément
interactif même (left, right, top, bottom, center, justify ou inherit).
1- INTRODUCTION
XML est devenu dans peu de temps le format standard de structuration et d’échange de
données le plus populaire. Ce métalangage est capable d’être le format du stockage, du
transport et d’affichage des données. Parallèlement, les bases de données relationnelles
constituaient depuis un bon moment et constituent toujours le moyen le plus utilisé pour le
stockage des données dans la plupart des entreprises, et ce pour leur capacité de mettre à
disposition d’un grand nombre d’utilisateurs des données avec un accès rapide et un bon
niveau de sécurité.
Les SGBDRs sont donc des outils qui s'adossent traditionnellement à un système de gestion
de base de données (SGBD) pour organiser les éléments d'information (fichiers, textes,
images, etc.) au sein d'une structure de tables liées entre-elles. Une galaxie de contenus
structurés qu'ils rendent accessibles depuis une application cliente par le biais de langages de
requêtes - exécutées via des interfaces (telles que ODBC et JDBC). Pour l'heure, le
vocabulaire le plus utilisé pour l'interrogation de bases de données demeure le langage SQL
(pour Structured Query language).
Avec la montée en puissance du XML, les éditeurs positionnés sur ce créneau tentent
d'évoluer : la plupart d'entre eux ont mis en place des mécanisme permettant d'intégrer à leur
produit des documents dans ce format. Certains ajoutant d'ores et déjà une couche de
structuration XML à leur référentiel propriétaire (c'est notamment le cas d'Oracle).
Aux côtés de ces acteurs traditionnels, plusieurs éditeurs proposent des applications XML
natives. Schématiquement, ce type d'outils s'articulent autour d'un référentiel de contenu qui
repose sur les briques du langage XML relatives à la description et à la structuration de
données (DTD, XML Schema, etc.). Côté logiciel client, les langages de requêtes qu'ils
supportent sont également décrits à l'aide de vocabulaires XML. Il s'agit principalement de
XQuery et de XPath.
Pour ces raisons et pour les avantages qu’offrent ces deux moyens, à savoir XML et les
SGBDs, plusieurs auteurs pensent que « l’utilisation combinée de ces deux méthodes offre
également au programmeur un grand nombre de possibilités. D’une part, les bases de
données relationnelles apportent une gestion et des fonctionnalités de sécurité fiables…
d’autre part, dans la mesure où le langage XML est composé uniquement de texte, il peut
facilement être transmis sur un réseau, et d’une plate-forme à l’autre… de plus, il peut
facilement être traduit d’un langage à l’autre»5.
Plusieurs raisons donc nous poussent à associer XML et les bases de données : stocker des
documents XML dans une base de données ou utiliser un contenu d’une base de données au
format XML :
- XML fournit une méthode de représentation des données structurées sans ajout
d’informations,
- XML permet la réutilisation des données par des systèmes d’héritage,
- XML peut être utilisé par des outils déjà disponibles (Feuilles de style : XSLT et
serveurs XML : ex : Biztalk…),
5
WILLIAMS, Kevin & BRUNDAGE, Michael & DENGLER, Patrick, et al. – XML et les bases de données. –
Eyrolles, 2001
2-1 SGBDR
Un SGBD représente un ensemble coordonné de logiciels qui permet de décrire, mémoriser,
manipuler, traiter les ensembles de données constituant la base. Il assure également la sécurité
et la confidentialité des données dans un environnement ou de nombreux utilisateurs ayant des
besoins variés peuvent interagir simultanément sur ces ensembles de données.
Un SGBDR est un logiciel supportant le modèle relationnel dont toute information de la base
de données est représentée par des valeurs dans des tables. Dans ce système, il n'y a pas de
pointeurs visibles par l'utilisateur entre les tables. De plus, un système dit relationnel doit
supporter les opérateurs relationnels de restriction, projection et jointure naturelle sans
limitations liées à des considérations internes telles que par exemple la jointure unique sur
attributs indexés.
Un SGBD est dit complètement relationnel si de plus il satisfait les deux conditions
suivantes :
- il réalise tous les opérateurs de base de l'algèbre relationnelle, sans restriction d'usage liée à
des contraintes internes,
- les deux contraintes d'intégrité de base du modèle relationnel doivent être supportées
d'unicité comme le numéro de sécurité social et la deuxième est la contrainte référentielle.
Un SGBD relationnel contient généralement:
- un langage commun de description et de manipulation des données,
- des commandes qui permettent le contrôle sémantique des données : gestion des vues
partielles, autorisation et contrôle d'accès, intégrité sémantique des valeurs de données,
- des instructions qui assurent la cohérence physique des données par la gestion des
transactions, des accès concurrents et des reprises sur pannes,
- des algorithmes internes qui gèrent les méthodes d'accès aux données ou encore qui
permettent des évaluations de la navigation,
- des utilisateurs, tels que générateurs de rapports, interfaces graphique, générateurs
d'application.
Les avantages principaux des systèmes de gestion de base de données sont résumés dans ce
qui suit :
Indépendance physique,
Indépendance logique,
Manipulation des données par des non informaticiens,
Parallèlement, en XML, les données peuvent être regroupés dans un élément décrivant une
entité déterminée (exemple : adresse). Pour présenter par exemple l’entité présentée ci-dessus
dans une table d’une base de données, nous pouvons créer un élément « Personne » qui
contiendra toutes les données stockées dans la table « PERSONNE ».
XML permet deux moyens de représenter ces données : en utilisant des éléments ou des
attributs (comme c’est vu dans le cours précédant sur XML).
En utilisant des éléments, nous pouvons présenter l’élément « Personne » comme suit :
<Personne>
<Prenom>Abderrazak</Prenom>
<Nom>MKADMI</nom>
<Rue>18 rue la Fontaine</Rue>
<Ville>Antony</Ville>
<Code_postal>92160</Code_postal>
<Pays>France</Pays>
</Personne>
En utilisant des attributs, l’élément « Personne » peut être présenté comme suit :
<Personne
Prenom= »Abderrazak »
Nom= « MKADMI »
Rue= « 18 rue la Fontaine »
Ville= « Antony »
Code_postal= « 92160 »
Pays= « France »/>
Clé
primaire Clé
étrangère
Table : MODELEXML
ID_Modele Designation_Modele Version Date_Version Mots_Cles ID_Proprietaire
Table : PROPRIETAIRE_MODELE
ID_Proprietaire Prenom_Owner Nom_Owner Tel_Owner Email_Owner Ville_Owner
Clé
primaire Clé
étrangère
Table : MODELEXML
ID_Modele Designation_Modele Version ID_Organisation Mots_Cles ID_Proprietaire
Clé Primaire
Clé
étrangère
Table : ORGANISATION
ID_Organisation Nom_Org Acronyme_Org Tel_Org Site_Web_Org Ville_Org
Clé
primaire
6
WILLIAMS, Kevin & BRUNDAGE, Michael & DENGLER, Patrick, et al. – XML et les bases de données. –
Eyrolles, 2001
7
op cit p.9
- Créer une table intermédiaire qui exprime la relation entre le père et l’enfant, si ce
dernier apparaît une ou plusieurs fois ;
- Créer une colonne pour chaque élément contenant que du texte et apparaissant qu’une
seule fois dans l’élément père dans la table représentant l’élément père, tout en
définissant la taille nécessaire … Si l’élément contenant du texte apparaît plusieurs
fois dans l’élément père, il faut créer une table pour stocker ses valeurs, ainsi que la
clé étrangère renvoyant à l’élément père. Si cet élément peut apparaître plus d’une fois
dans plusieurs éléments, il faut créer une table intermédiaire pour exprimer la relation
entre chaque père et chaque enfant ;
Pour les éléments de contenu mixte, créer une table et insérer des lignes, tout en précisant
une clé, puis créer deux tables, une pour l’élément et une pour relier les différentes parties de
cet élément, et dans la table des sous éléments, inclure une clé étrangère qui pointe vers la
table de l’élément principal ;
Pour la déclaration des attributs :
pour chaque attribut de type CDATA, ajouter une colonne à la table correspondant à
l’élément associé à cet attribut, tout en lui définissant une chaîne de longueur variable et une
taille maximale. Ex : pour : Code_Postal CDATA #REQUIRED, on met : Code_Postal
VARCHAR (10) ;
pour chaque attribut de type ÉNUMÉRÉ, ajouter une colonne à la table correspondant à
l’élément associé à cet attribut, tout en lui définissant un type : ENUM. Ex : pour un élément
Role_Affaire
< !ELEMENT Role_Affaire EMPTY>
< !ATTLIST Role_Affaire
Type_Role_Affaire (client | fournisseur | distributeur) #REQUIRED
On crée la table suivante :
Create table Role_Affaire (Type_Role_Affaire ENUM (client, fournisseur,
distributeur))
Gérer les attributs de type ID et IDREF qui servent successivement à identifier de manière
unique les éléments à l’intérieur de document XML (pour les ID) et renvoyer à d’autres
éléments dont les attributs ID correspondent (pour les IDREF). Pour le premier attribut, nous
pouvons le définir comme une clé primaire dans la base de données ou simplement le garder
pour le relier à tout IDREF pointant vers lui. Quant au deuxième, on le représente par une clé
étrangère qui fait référence à la clé primaire de l’élément vers lequel l’attribut pointe. Si
l’attribut IDREF pointe vers plusieurs types d’élément, on le représente par une clé de
référence de table indiquant la table à laquelle la clé correspond ;
Pour les attributs de type NMTOKEN, NMTOKENS, ENTITY, ENTITIES, créer pour
chacun d’eux une colonne dans la table correspondant à l’élément stockant la valeur de
l’attribut ;
Enfin, vérifier les résultats, s’il y a des conflits entre les noms, et changer les noms de façon à
résoudre ce problème.
structure de données. C'est le but des langages de requête XML (XML Query Language) dont
le W3C vise la standardisation. L'interrogation des BD relationnelles reçoit donc un
traitement particulier, comme nous avons vu plus haut. Souvent, un schéma SQL peut être
traduit en une perspective XML où chaque tableau devient un document, chaque colonne
devient un élément du document et chaque valeur de cellule comme le contenu d'élément. Les
interrogations SQL, les regroupements (GROUP BY, HAVING), les unions (joins), peuvent
être convertis en syntaxe XQuery comme des expressions FLWR (FOR, LET, WHERE,
RETURN).
XML Query Language, le langage de requête XML est à XML ce que SQL pour les bases de
données relationnelles. Il représente le standard le plus important produit par le W3C, dans
lequel une interrogation est représentée comme une expression.
<livre annee="2002">
<titre>XML et les bases de données</title>
</livre>
5-2-3 Expressions FLWR
Prononcée "flower", une expression FLWR (For, Let, Where, Return) est similaire à la
construction SELECT-FROM-WHERE de SQL (avec qui elle partage certaines capacités), et
compose le squelette de l'expression XQuery. Une expression FLWR consiste à :
une clause FOR : attache une ou plusieurs variables à une séquence de valeurs
renvoyées par une autre expression (généralement une expression de chemin), et
boucle dans les valeurs ;
une clause LET : attache aussi une ou plusieurs variables à une séquence, mais sans
itération ;
une clause WHERE : contient un ou plusieurs prédicats qui filtrent ou limitent le jeu
de noeuds générés par les clauses FOR/LET.
une clause RETURN : génère le résultat de l'expression FLWR. Elle contient
généralement un ou plusieurs éléments constructeurs et/ou des références à des
variables, et est executée une fois pour chaque noeud renvoyé par les clauses
FOR/LET/WHERE.
<resultats>
{
FOR $t IN distinct(document("prix.xml")/prix/livre/titre)
LET $p := avg(document("prix.xml")/prix/livre[titre=$t]/prix)
WHERE (document("biblio/xml")/livre[titre=$t]/editeur) = "Eyrolles"
RETURN
<resultat>
{ $t }
<moy>
{ $p }
</moy>
</resultat>
}
</resultats>
En plus des fonctions internes, XQuery fournit un mécanisme permettent à l'utilisateur de
créer ses propres fonctions.
5-2-4 Expressions conditionnelles
XQuery autorise l'utilisation des expressions IF/THEN/ELSE:
<utilisateur>
{ $u/numero }
{ $u/nom }
{
IF (empty($b))
THEN <status>inactif</status>
ELSE <status>actif</status>
}
</utilsateur>
5-2-5 Expressions quantifiées
Cette expression est exprimée par SOME et EVERY. Avec SOME, il est possible de
déterminer si au moins un noeud d'un bloc de noeuds correspond à un prédicat. L'expression
EVERY permet quant à elle de tester si tous les noeuds d'un bloc correspondent à un prédicat.
Le code suivant fait la liste des utilisateurs ayant parié sur tous les jeux :
<parieur>
{
FOR $u IN document("utilisateur.xml")//utilisateur_tuple
WHERE
EVERY $item IN document("jeux.xml")//jeu_tuple SATISFIES
SOME $b IN document("paris.xml")//pari_tuple SATISFIES ($jeu/numjeu
= $b/numjeu AND $u/numutilisateur = $b/numutilisateur)
RETURN
$u/nom
}
</parieur>
5-2-6 Expressions servant à tester ou modifier des types de données
XQuery utilise à la fois les types de données standards (basés sur le système de typage de
XML Schema: nombres, booléens, chaînes, dates, temps, durées...) et les types de données
utilisateur. Les expressions INSTANCEOF et TYPESWITCH/CASE sont utilisées pour tester
si une occurence est d’un type donné.
5-2-7 Constantes et variables
Constantes et variables sont les expressions les plus basiques de XQuery. Les constantes
prennent la forme de représentations littérales de valeurs:
"Journal du Net"
42
true
"2002-11-04"
La requête suivante affiche le livre dont le numéro est 2017 :
let $numlivre := "2017"
return document("livres.xml")//livre[numlivre=$numlivre]
Dans cet exemple, "2017" est la constante, et $numlivre la variable.
5-2-8 Opérateurs
On retrouve dans XQuery les mêmes opérateurs que dans les autres langages.
return
<resultat>
{ $element/numElement }
<niveau>
{ IF ( $element/prix >= 500 ) THEN 3 ELSE
IF ( $element/prix >= 200 ) THEN 2 ELSE
IF ( $element/prix <= 50 ) THEN 0 ELSE 1 }
</niveau>
</resultat>
Les opérateurs booléens
for $element in document("donnees.xml")//element
return
<resultat>
{$element/numElement}
<niveau>
{ if ( $element/prix >= 500 and $element/prix < 10000 ) then 3 else
if ( $element/prix >= 200 and $element/prix < 500 ) then 2 else
if ( $element/prix <= 200 and $element/prix > 50 ) then 1 else 0 }
</niveau>
</result>
1. CHAMP D'APPLICATIONS
XML est un format ayant des objectifs très larges :
4.1 COMMERCE ELECTRONIQUE ET ECHANGE DE DONNEES
INFORMATISEES (EDI)
En définissant des formats de documents standard, les entreprises pourront échanger tous
types d'informations et les intégrer dans leurs propres systèmes d'information. XML permettra
ainsi des échanges entre un nombre plus important de partenaires à un coût plus faible tout en
permettant des développements avec des outils modernes (Java, ActiveX).
1.2 GESTION ELECTRONIQUE DE DOCUMENTS (GED) :
La mise en place des documentations sur les sites intranet a rapidement montré ses limites.
Sans des outils permettant d'indexer, d'organiser et de structurer le contenu des documents
accessibles, il est très difficile aujourd'hui d'utiliser et de retrouver les informations
pertinentes. XML apporte des solutions grâce aux structures de documents et aux nombreux
langages de description de contenu qui lui sont associés.
1.3 INTEROPERABILITE DE SYSTEMES D'INFORMATIONS HETEROGENES
Le développement d'applications dans des architectures hétérogènes est une problématique
importante de ces dernières années. Pour répondre à ces besoins, de nombreuses solutions
existent allant des applications Client/Serveur aux applications intranet en passant par les
outils Corba (EJB - Enterprise Java Beans) ou DCOM (ActiveX). XML va permettre, via
différents standards (DOM, WIDL, ...), d'étendre les possibilités des applications Internet
actuelles.
1.4 PERSONNALISATION DE LA RELATION CLIENT (CRM8):
En permettant le développement d'applications WEB dynamiques accessibles aussi bien en
Internet qu'en intranet, XML offre des solutions efficaces dans le développement d'une
application de CRM.
2. LES STANDARDS
2.1. INTRODUCTION
La spécification XML est mise en oeuvre sous forme d'applications, c'est à dire de langages
de descriptions dérivés.
XML est un méta-langage de description, servant à créer des langages plus spécialisés. C'est
par exemple le domaine des mathématiques, des graphiques 2D, du multimédia, ...
Comme les standards connexes (XPath, XLL), ces applications dérivées peuvent devenir des
recommandations du W3C.
MathML (Mathematical Markup Language) pour la description et communication
d'informations mathématiques et scientifiques sur le Web,
SVG (Scalable Verctor Graphics) pour la description en XML des graphiques en 2D,
8
Customer Relationship Management
1
Y=
X² + 1
z-index="0" />
<region id="videog" left="73" top="92" height="144" width="192"
z-index="1" />
</layout>
</switch>
</head>
CONCLUSION
XML est un méta-langage de description des données permettant de définir des formats de
documents. Ces formats possèdent les caractéristiques suivantes:
• Ce sont des documents textuels utilisant la norme Unicode,
• Le modèle de base est hiérarchique,
• XML est une norme de l'industrie,
• L'information dans les documents est auto-descriptive
L'ensemble de ces caractéristiques fait en sorte que la norme XML permet de représenter des
documents structurés, elle assure la pérennité de l'information et facilite les échanges de
données.
XML permet de définir des langages spécifiques à savoir : XLL, XPath, XQuery, RDF,
… à travers une méta-syntaxe, à laquelle doivent se conformer ces langages,
XML ne s’intéresse pas au formatage de données, il en décrit la structure et la sémantique,
Les informations liées à la présentation des données doivent être décrites dans une feuille
de style qui permet au navigateur de savoir comment contrôler le format des éléments,
Le XSL (Extensible Style Language) est le langage utilisé pour définir les feuilles de style
qui seront associées aux documents XML. C'est le fichier XSL qui permettra de définir
que tel élément XML doit être affiché avec telle fonte, de telle couleur, etc. Ces décisions
seront, grâce à XSL, prises par le créateur du document qui aura ainsi un meilleur contrôle
sur l'apparence de son document,
Une DTD est un composant facultatif associé à un document XML spécifiant le contenu
autorisé et la structure des éléments. Si on utilise une DTD, le document sera dit "valide";
c'est-à-dire qu'il fera appel à cette DTD et s'y conformera. Si on n'utilise pas de DTD, le
document XML devra être "bien formé"; il ne devra comporter aucune ambiguïté dans le
balisage,
Un schéma XML est une DTD plus développée. Il est conçu pour palier aux déficiences
des DTD. XML Schema propose, en plus des fonctionnalités fournies par les DTD, des
nouveautés à savoir le grand nombre de types de données, la notion d'héritage, le support
des espaces de nom… et le grand apport de ce dernier est qu’il est écrit en langage XML,
XForms doivent devenir la prochaine génération de formulaires, étandant et simplifiant la
fourniture de formulaires indépendants de l’interface utilisateur.
XQuery est donc le nouveau langage qui permet au XML d'atteindre son plein potentiel
dans la gestion de données en provenance de bases de données et autres documents au
format XML.
« Il est à prévoir que l'usage d'XML va déborder largement le WWW, en provoquant la
convergence de deux mondes informatiques jusqu'ici séparés ; celui des documents et
celui des données. Il est très probable qu'il va de ce fait devenir très rapidement la
lingua franca de l'informatique, parlée tout autant par les SGBD que par les outils de
bureautique et de documentation, par les logiciels de gestion aussi bien que par les
applications techniques et scientifiques et qu'il va considérablement simplifier
l'Échange de Données Informatisé (EDI).
On n'a donc pas fini d'entendre parler de XML ! 9»
9
LAZINIER, Emmanuel. XML expliqué aux débutants. - http://www.chez.com/xml/initiation/
BIBLIOGRAPHIE
LIVRES
WILLIAMS, Kevin & BRUNDAGE, Michael & DENGLER, Patrick, et al. – XML et les
bases de données. – Eyrolles, 2001
HAROLD, Eliotte Rusty. – XML : le guide de l’utilisateur. – Eyrolles, 2000
BERNADAC, Jean-Christophe & KNAB, François. - Construire une application XML. -
Eyrolles
MICHARD, Alain. - XML Langage et applications. – Eyrolles. -
(http://www.eyrolles.com/xml)
SITES INTERNET
Des références sur html : htlp://www.allhtml.com/langages/html.php3
Des références sur html4:
• http://oxygen.citeweb.net/
• http://www.w3.org/tr/rec-html40
Le site de l'éditeur O'Reilly : htlp://www.xml.com/pub
Les rapports techniques du consortium W3C : http://www.w3.org/tr
Des références sur xml :
• l'incontournable: http://www.w3c.org
• le site XML français: http://xmlfr.org
• Spécification XML annotée: xml.com/axml/axml.html
• Tutoriaux SUN: java.sun.com/xml
• Le site de référnce de Robin Cover: www.oasis-open.org/cover
• Site généraliste "business": xml.com
• Infos sur les softs commerciaux: xmlsoftware.com
• Infos sur des freewares: www.garshol.priv.no/download/xmltools
• et ...www.google.com
• www.w3.org/tr/rec-xml
• http://www.xmltechno.com
• http://www.chez.com/xml/liens/liens-en-1.htm
LAZINIER, Emmanuel. - XML expliqué aux débutants. -
http://www.chez.com/xml/initiation/
Bertrand Ibrahim. – Introduction à XML. - http://cui.unige.ch/eao/www/xml/Plan.html
Des références sur XML-QL:
http://www.w3.org/TR/NOTE-xml-ql/
OUTILS
Microsoft :
- notepad XML : http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/dnxml/html/xmlpaddownload.asp
- parser XML : http://msdn.microsoft.com/xml/default.asp
Modélisation et développement, éditeur DTD :
- http://www.opentext.com/near_and_far/
- http://www.eyrolles.com/xml
GLOSSAIRE
BPML (Business Process Modeling Language) : De la même façon que XML fournit un
format de représentation des données, BPML est un métalangage de modélisation des
processus collaboratifs qu'engage une entreprise avec ses partenaires sur internet.
www.bpmi.org
cXML (Commerce XML) Cette spécification XML, élaborée par Ariba, se propose de
standardiser la gestion des catalogues électroniques et des transactions commerciales
exécutée travers d'une place de marché sur internet. www.cxml.org
DOM (Document Object Model) : Le modèle objet de documents définit une API
(indépendante des langages de programmation) permettant de manipuler et de
parcourir un document représenté sous la forme d'arborescence orientée objet (un
noeud de l'arbre est un objet). www.w3.org/DOM
ebXML (Electronic Business XML Initiative) : Les Nations unies (UN/Cefact) et l'organisme
Oasis sont à l'origine de ce framework XML, qui permettra à deux partenaires de
s'échanger sur internet des messages s'inscrivant dans le cadre de l'intégration de leurs
processus collaboratifs. www.ebxml.org
ebXML Registry : Cet annuaire référence tous les éléments (schémas XML, documents,
description de processus, modèles UML, etc. ) nécessaires à une entreprise désirant
engager une collaboration commerciale sur internet, basée sur le framework XML
ebXML, avec l'un de ses partenaires. www.ebxml.org/toc.htm
eCo Framework : Framework XML d'échange de données. Défini par CommerceNet, celui-
ci se propose de rassembler dans une même spécification les apports de différents
standards XML (OBI, ICE, OFX, OTP, etc.).
www.commerce.net/projects/currentprojects/eco
HDML (Handheld Device Markup Language) : S'appuyant sur une syntaxe XML, ce langage,
développé par Openwave (ex-Phone. coin), est utilisé pour créer et diffuser un contenu
de type hypertexte sur des terminaux mobiles caractérisés par de fortes contraintes
d'affichage.
VML (Vector Markup Language) : Définit un format d'encodage des informations graphiques
vectorielles, auquel s'ajoutent des balises décrivant la manière dont ces informations
sont affichées. www.w3.org/TR/1998/NOTE-VML-9980513.html.
WebDAV (Web Distributed Authoring and Versioning) : Ce standard constitue une série
d'extensions au protocole HTTP 1. 1. Il permet de disposer d'une infrastructure
d'édition et de partage (verrouillage, gestion de versions, etc. ) de documents résidant
sur des serveurs web distants. Les informations liées aux propriétés du document - les
métadonnées - sont décrites en XML. www.webdav.org/specs
WML (Wireless Markup Language) : Il s'agit du langage de description - basé sur une
syntaxe XML - du contenu diffusé sur les terminaux mobiles conformes au protocole
WAP (wireless Application Protocol). www.w forum.org.
World Wide Web Consortium (W3C) Organisme de standardisation des protocoles
internet. Le W3C est organisé par groupes de travail. Chaque groupe de travail
réfléchit à un thème précis (HTML, XML...) et propose des spécifications aux
membres du consortium. Les membres du W3C votent. Si le vote est positif, la
spécification devient une recommandation.
WSDL (Web Services Description Language) : Ce langage permet d'exposer dans un format
XML la signature d'un composant applicatif - on parle de service web - accessible sur
internet. Cette signature inclut les opérations exposées par le service web en question,
le type de ses paramètres d'entrée et de sortie, l'adresse réseau à laquelle on pourra
l'invoquer, etc. www.w3.org/TR/2001/NOTE-wsdl-20010315
xCBL (XML Common Business Library) : Cette spécification XML, élaborée par
Commerce0ne, se propose de standardiser la gestion des catalogues électroniques et
des transactions commerciales exécutées au travers d'une place de marché sur internet.
www.xcbl.org
XHTML (eXtensible Hypertext Markup Language) : Il s'agit d'une reformulation de HTML 4
en XML. Ce langage s'appuie sur trois DTD définissant le langage HTML.
www.w3.orR/TR/xhtmll
XLANG Schedule : Ce langage permet de décrire en XML les processus collaboratifs conçus
avec l'outil BizTalk Orchestration Designer. www.microsoft.com/biztalk
XLink (XML Linking Language) : Ce langage, basé sur une syntaxe XML, permet d'insérer
dans un document XML des éléments de description de liens entre objets. Ces liens
peuvent être plus unidirectionnels, comme les hyperliens de HTML (« -A HREF... »)
ou plus complexes (liens entre plus de deux documents ou auxquels on associe des
métadonnées, etc. www.w3.ore/TR/xlink.
XML (eXtensible Markup Language) : Ce métalangage permet la création de langage de
balisage. Il est extensible. Autrement dit, tout auteur peut structurer le contenu de ses
documents XML à l'aide de balises qu'il aura lui-même définies. Contrairement à
HTML, XML sépare la structure du contenu d'un document de sa présentation.
www.w3.org/XML.
XML Namespaces (domaine ou espace de noms) : Permet de qualifier les éléments et les
attributs d'un document XML en leur associant des espaces de noms identifiés par une
adresse URI (Uniform. Resource Identifier). Tous les éléments appartenant à un
espace de noms sont préfixés par son identifiant, suivi du signe «:» (-personne : nom-
Martin-/personne : nom-). www.w3.or2/TR/REC-xml-names.
XML Schema : Cette spécification permet de créer des schémas XML, lesquels remplacent et
pallient les lacunes des DTD en termes de définition de type de données, d'espaces de
noms (namespaces) et des relations entre les éléments d'un document XML et ses
attributs. Contrairement à une DTD, un schéma XML est un document XML.
www.w3.org/XML/Schema.
XML-RPC (XML Remote Procedure Call) : Ce protocole a inspiré SOAP. Il permet à une
application d'appeler une fonction applicative distante, la requête étant transportée sur
HTTP et son corps décrit en XML. www.xml-rpc.com
XP (XML Protocol) : Ce protocole permet à deux entités applicatives distantes d'interopérer.
Élaboré par le W3C, il prévoit de décrire en XML à la fois la requête d'invocation d'un
service applicatif distant et l'enveloppe dans laquelle sera véhiculée cette requête sur
HTTP. www.w3.org/2000/xp
XPath (XML Path Language) : Ce langage permet d'accéder à un élément d'un arbre XML. Il
a été conçu pour être utilisé conjointement avec XSLT et XPointer.
www.w3.org/TR/xpath.
XPointer (XML Pointer Language) : Décrit la façon de désigner un document ou un élément
à l'intérieur d'un document. C'est avec cette syntaxe que l'on construit un URI (Unique
Resource Identifier) en XML. Un élément désigné à l'aide de XPointer est accessible
via XPath. www.w3.org/XML/Linkinz.
XSL (eXtensible Stylesheet Language) : Langage de description de feuille de style. Il est
composé de XSL-FO (Formatting Objects), un vocabulaire qui permet d'appliquer un
style à un document XML, et de XSLT, un langage de transformation de document
XML. www.w3.org/Style/XSL
XUL (eXtensible User Interface Language) : Langage basé sur XML permettant de décrire les
éléments composant une interface utilisateur, tels que les fenêtres graphiques, les
boîtes de dialogue, les menus, les barres de défilement, etc.
www.mozilla.org/xpfe/xptoolkit/xulintro.html