XMLorigine - concept - techniques
Tuyêt Trâm DANG NGOC
Laboratoire PRiSMUniversité de Versailles-Saint-Quentin
Cours 1/2
Tuyêt Trâm DANG NGOC - Université de Versailles 2Tuesday, April 11, 2023
XML : Origine, concept, technique (Plan 1/2)
Origine et objectifsLe fond et la forme : SGML, HTML et XML
La norme XMLLe rôle du W3CDéfinition du standard XML
La technologie XMLMétadonnées : DTD et XML-SchémaEspace de noms : XML namespacePrésentation : XSL Interrogation : XPath, XQuery
Tuyêt Trâm DANG NGOC - Université de Versailles 3Tuesday, April 11, 2023
XML : Origine, concept, technique (Plan 2/2)
XML et les bases de donnéesDéploiement d'un site web avec XMLLes produits XML
Stockage : natif, middleware ou extension de SGBD
Services WEB et serveurs d'applicationOutils de manipulation XML
ConclusionRéférences
Origine et objectif
De HTML et SGML vers XML
HTML : la formeSGML : le fondXML : le fond pour la forme
Tuyêt Trâm DANG NGOC - Université de Versailles 5Tuesday, April 11, 2023
Origine et objectifs
Un document peut se définir par le fond et par la forme.
Multiples approches dont les plus connues sont le HTML pour le format et le SGML pour la structuration.
nom: Mulderprenom: Foxprofession: Agent du FBI
nom prenom profession
Mulder Fox Agent du FBI
Fox Mulder, Agent du FBI
Agent du FBI : Fox Muldernom: Mulderprenom: Foxprofession: Agent du FBI
Présentation d'un document
Fédération de données semi-structurées avec XML
Tuyêt Trâm DANG NGOCLaboratoire PRiSM – Université de Versailles
45, avenue des Etats-Unis78035 Versailles CEDEXemail: [email protected]
Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"
1 IntroductionL'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés.
2 Problématique2.1 Requête sur données semi-structuréesEvaluer une requête sur des données semi-structurées [1] implique de naviguer à travers la structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.
2.2 Médiation de données semi-structuréesLes sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD relationnel sera interrogé suivant le langage SQL suivant : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'
Fédération de données semi-structurées avec XML
Tuyêt Trâm DANG NGOCLaboratoire PRiSM – Université de Versailles
45, avenue des Etats-Unis78035 Versailles CEDEXemail: [email protected]
Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"
1 IntroductionL'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés.
2 Problématique2.1 Requête sur données semi-structuréesEvaluer une requête sur des données semi-structurées [1] implique de naviguer à travers la structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.
2.2 Médiation de données semi-structuréesLes sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD relationnel sera interrogé suivant le langage SQL suivant : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'
Note: [Abiteboul 1998] Semistructured Data Tutorial 1998
Note: [Abiteboul 1998] Semistructured Data Tutorial 1998
Tuyêt Trâm DANG NGOC - Université de Versailles 7Tuesday, April 11, 2023
HTML (Hyper Text Markup Language) : présentation
Proposé par le W3C comme format de documents sur le Web.
Langage simple avec des balises standardisées permettant la mise en forme d’un texte.
Standard reconnu par tous les navigateurs.Langage très populaire sur le Web
HTML 1.0Juin 1993
HTML 2.0(RFC 1866)
Nov. 1995
HTML 2+
HTML 3.0
HTML 3.214 Jan. 1997
HTML 4.024 Avr. 1998
HTML 4.0124 Dec. 1999 XHTML 1.0
26 Jan. 2000
XHTML 1.131 Mai 2001
1996
Tuyêt Trâm DANG NGOC - Université de Versailles 8Tuesday, April 11, 2023
Quelques balises HTML standards
Balises Signification
<html> défini le contenu comme étant un document HTML
<title> Pour donner un titre à la fenêtre
<body> Corps de la page
<bf> Mettre en gras une partie de texte
<i> Mettre en italique
<ul> définir une liste d'item
<li> définir un item
<ol> définir une liste numérotée
<p> définir un paragraphe
<hr> créer une ligne droite
<font> changer la fonte (police, couleur)
Balises Signification
<pre> afficher un code litéral
<h1>, <h2>, <h3>
Definir un titre de niveau 1, 2 ou 3
<img src> Insérer une image
<blink> Faire clignoter
<a href> Créer un hyperlien
<a name> définir une référence
<table> définir un tableau
<tr> définir une nouvelle ligne
<td> définir une nouvelle colonne
<br> Passage à la ligne
Tuyêt Trâm DANG NGOC - Université de Versailles 9Tuesday, April 11, 2023
Source HTML
<html><body bgcolor="#ffffff" fgcolor="#000000""<font color="#0000FF"><h1>Fédération de données semi-structurées avec XML</h1></font><p align=right>Tuyêt Trâm DANG NGOC<br>Laboratoire PRiSM – Université de Versailles<br>45, avenue des Etats-Unis<br>78035 Versailles CEDEX<br>email: <a href="mailto: [email protected]">[email protected]</a></p><p align=center><i>Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"</i></p><font color="#0000FF"><h1>1 Introduction</h1></font><p>L'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés .</p><font color="#0000FF"><h1>2 Problématique</h1></font><font color="#0000FF"><h2>2.1 Requête sur données semi-structurées</h2></font><p>Evaluer une requête sur des données semi-structurées <a href="note.txt"> [1] </a> implique de naviguer à travers la
structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.</p>
<font color="#0000FF"><h2>2.2 Médiation de données semi-structurées</h2></font><p>Les sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD
relationnel sera interrogé suivant le langage SQL suivant :</p><pre> 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'</pre></body></html>
<html><body bgcolor="#ffffff" fgcolor="#000000""<font color="#0000FF"><h1>Fédération de données semi-structurées avec XML</h1></font><p align=right>Tuyêt Trâm DANG NGOC<br>Laboratoire PRiSM – Université de Versailles<br>45, avenue des Etats-Unis<br>78035 Versailles CEDEX<br>email: <a href="mailto: [email protected]">[email protected]</a></p><p align=center><i>Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"</i></p><font color="#0000FF"><h1>1 Introduction</h1></font><p>L'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés .</p><font color="#0000FF"><h1>2 Problématique</h1></font><font color="#0000FF"><h2>2.1 Requête sur données semi-structurées</h2></font><p>Evaluer une requête sur des données semi-structurées <a href="note.txt"> [1] </a> implique de naviguer à travers la
structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.</p>
<font color="#0000FF"><h2>2.2 Médiation de données semi-structurées</h2></font><p>Les sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD
relationnel sera interrogé suivant le langage SQL suivant :</p><pre> 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'</pre></body></html>
Tuyêt Trâm DANG NGOC - Université de Versailles 10Tuesday, April 11, 2023
Limitation de HTML (1)
HTML est conçu pour la présentation d'information sous forme de pages web
HTML contient un nombre limité de balises défini
La conception de HTML n'est pas appropriée pour les donnéesles balises ne renseignent pas sur les valeurs
incluses entre les balisesLes balises ne sont pas extensibles
Tuyêt Trâm DANG NGOC - Université de Versailles 11Tuesday, April 11, 2023
Limitation de HTML (2)
Lorsque les balises ne suffisent pas, les constructeurs ont tendance à définir leurs propres balises pour répondre à leurs besoins ( incompatibilité) ex. HTML 2+, HTML 3.0
Mise à jour d’un ensemble de pages web très complexe :hyperliens pointant dans tous les sens ;restructuration ou remise en forme de l’ensemble
des pages du site fastidieux.
Tuyêt Trâm DANG NGOC - Université de Versailles 12Tuesday, April 11, 2023
Limitation de HTML (3)
Une fois le document HTML réalisé, il est figé :de la façon dont l’a définie l’auteur de la mise en
page ( pas de possibilité pour les clients de le présenter différemment)
Traitement entre sites rendu compliqué (problème pour le commerce «électronique».
Tuyêt Trâm DANG NGOC - Université de Versailles 13Tuesday, April 11, 2023
HTML : extensions
Pour résoudre les problèmes de mises à jour, plusieurs «bidouilles» et/ou solutions propriétaires :Microsoft ASP, Cold fusion...
Langages restent propriétaires et sont tous incompatibles entre eux.
La présentation est toujours aussi figée
Tuyêt Trâm DANG NGOC - Université de Versailles 14Tuesday, April 11, 2023
Feuilles de style CSS (Cascading Style Sheet)
Recommandation W3C en décembre 1996Mécanisme simple pour ajouter un style (fonte,
couleur, etc.) aux documents WebIntégré dans HTML 4.0Changement de présentation des documents
limitées
Tuyêt Trâm DANG NGOC - Université de Versailles 15Tuesday, April 11, 2023
@import "truc.css"
BODY {
color: #000 ;
background: #FBFBFF ;
margin-left: 9% ;
margin-right: 6% ;
font-family: "Helvetica", sans-serif ;
line-height: 1.35 ;
}
@import "truc.css"
BODY {
color: #000 ;
background: #FBFBFF ;
margin-left: 9% ;
margin-right: 6% ;
font-family: "Helvetica", sans-serif ;
line-height: 1.35 ;
}
CSS
[ ... ]TD, TH { font-family: "Helvetica",
sans-serif line-height: 1.35 ;}
H1, H2 { margin-top: 1.2em ; margin-left: -7% ; color: #900 ; clear: both ;}[ ... ]
[ ... ]TD, TH { font-family: "Helvetica",
sans-serif line-height: 1.35 ;}
H1, H2 { margin-top: 1.2em ; margin-left: -7% ; color: #900 ; clear: both ;}[ ... ]
<LINK REL="stylesheet" HREF="fichier.css"><LINK REL="stylesheet" HREF="fichier.css">
Tuyêt Trâm DANG NGOC - Université de Versailles 16Tuesday, April 11, 2023
SGML (Standard Generalized Markup Language)
Créé en 1986 [ISO 8879] Séparation du fond et de la forme Permet des puissants traitements informatiques sur les
documents Proposition d’un cadre défini pour l’expression des
modèles documentaires (validité, contrôle) Fournir un format de stockage et d’échange normalisé Très lourd et complexe pour la mise en œuvre de
documents respectant ce format Une grande rigueur est demandée
Fédération de données semi-structurées avec XML
Tuyêt Trâm DANG NGOCLaboratoire PRiSM – Université de Versailles
45, avenue des Etats-Unis78035 Versailles CEDEXemail: [email protected]
Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"
1 IntroductionL'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés.
2 Problématique2.1 Requête sur données semi-structuréesEvaluer une requête sur des données semi-structurées [1] implique de naviguer à travers la structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.
2.2 Médiation de données semi-structuréesLes sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD relationnel sera interrogé suivant le langage SQL suivant : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'
Fédération de données semi-structurées avec XML
Tuyêt Trâm DANG NGOCLaboratoire PRiSM – Université de Versailles
45, avenue des Etats-Unis78035 Versailles CEDEXemail: [email protected]
Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML"
1 IntroductionL'évolution constante en matière de réseaux et de base de données ces trente dernières années a mené à une demande toujours croissante d'accès rapides à une large quantité d'informations variés.
2 Problématique2.1 Requête sur données semi-structuréesEvaluer une requête sur des données semi-structurées [1] implique de naviguer à travers la structure en examinant à la fois les valeurs des éléments et le nom auto-descriptif de l'élément tout au long du parcours.
2.2 Médiation de données semi-structuréesLes sources sont hétérogènes et peuvent être interrogées de manière différentes. Par exemple un SGBD relationnel sera interrogé suivant le langage SQL suivant : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'
Composants imbriqués
Note: [Abiteboul 1998] Semistructured Data Tutorial 1998
Note: [Abiteboul 1998] Semistructured Data Tutorial 1998
TITRE
RESUME
AUTEUR
PRENOM
VILLEPARA
CODE
TITRE
NOM
ADRESSE
PARA
SOUSSECTION
TITRE
TITRE
TITRE
TITRE
SOUSSECTION
SECTION
SECTION
ENTETE
CORPS
RUE
ORGANISATION
CODEPOSTAL
NOM
FNOTE
Tuyêt Trâm DANG NGOC - Université de Versailles 18Tuesday, April 11, 2023
Vue Balisée
<ARTICLE> <ENTETE> <TITRE>Fédération de données semi-structurées avec XML.</TITRE> <AUTEUR CONTACT ="1"> <PRENOM>Tuyêt</PRENOM> <PRENOM>Trâm</PRENOM> <NOM>DANG</NOM><NOM>NGOC</NOM> <ADRESSE> <ORGANISATION>Laboratoire PRiSM – Université de Versailles<ORGANISATION> <ADRESSE>45, avenue des Etats-Unis</ADRESSE> <VILLE>Versailles CEDEX</VILLE> <PAYS>France</PAYS> <CODEPOSTAL>78035</CODEPOSTAL> <EMAIL>[email protected]</EMAIL> </ADRESSE> </AUTEUR> </ENTETE> <CORPS> <SECTION><TITRE>Introduction</TITRE> <PARA> L'évolution constante en matière de réseaux et de base de données ces... </PARA> [...] </CORPS> <FTNOTE ID=NT1><PARA>[Abiteboul 1998] Semistructured Data Tutorial 1998</PARA></FTNOTE></ARTICLE>
<ARTICLE> <ENTETE> <TITRE>Fédération de données semi-structurées avec XML.</TITRE> <AUTEUR CONTACT ="1"> <PRENOM>Tuyêt</PRENOM> <PRENOM>Trâm</PRENOM> <NOM>DANG</NOM><NOM>NGOC</NOM> <ADRESSE> <ORGANISATION>Laboratoire PRiSM – Université de Versailles<ORGANISATION> <ADRESSE>45, avenue des Etats-Unis</ADRESSE> <VILLE>Versailles CEDEX</VILLE> <PAYS>France</PAYS> <CODEPOSTAL>78035</CODEPOSTAL> <EMAIL>[email protected]</EMAIL> </ADRESSE> </AUTEUR> </ENTETE> <CORPS> <SECTION><TITRE>Introduction</TITRE> <PARA> L'évolution constante en matière de réseaux et de base de données ces... </PARA> [...] </CORPS> <FTNOTE ID=NT1><PARA>[Abiteboul 1998] Semistructured Data Tutorial 1998</PARA></FTNOTE></ARTICLE>
Tuyêt Trâm DANG NGOC - Université de Versailles 19Tuesday, April 11, 2023
Vue Arborescente
ARTICLE
ABSTRACTAUTEUR
NOM
CODE
TITRE
PRENOM
ENTETE CORPS
ADRESSE SECTION
SOUSSECTION
SECTION
SOUSSECTION
PARA
ORGANISATION ADRESSE
TITRE
PARA PARA TITLE
PARA
PARA
VILLE PAYS CODE POSTAL
PARA
PARA
FTNOTE
REFLOC
FTNOTE ID
PARA
TITRE
Tuyêt Trâm DANG NGOC - Université de Versailles 20Tuesday, April 11, 2023
Correspondance arborescence/balises
<sorties><bar>
<nom id="42"> L’Envol </nom><adresse>
<rue> Lacépède </rue><ville> Paris </ville>
</adresse><boisson> Maple Kiss </boisson><boisson> Gin Tonic </boisson>
</bar>
<bar><nom id="43"> Le Frog’s </nom><telephone> 01 43 40 70 71</telephone><adresse>
<rue>cour Saint-Emilion</rue><ville>Paris</ville>
</adresse></bar></sorties>
<sorties><bar>
<nom id="42"> L’Envol </nom><adresse>
<rue> Lacépède </rue><ville> Paris </ville>
</adresse><boisson> Maple Kiss </boisson><boisson> Gin Tonic </boisson>
</bar>
<bar><nom id="43"> Le Frog’s </nom><telephone> 01 43 40 70 71</telephone><adresse>
<rue>cour Saint-Emilion</rue><ville>Paris</ville>
</adresse></bar></sorties>
bar
nom
adresse
rue
villeboisson
(#attribut : 42)id
LacépèdeParis
Maple Kiss
L'Envol
nom
adresse
rue
ville
telephone 01 43 40 70 71
(#attribut : 43)id
cour Saint Emilionchaîne
Le Frog's
boisson Gin Tonic
bar
sorties
Tuyêt Trâm DANG NGOC - Université de Versailles 21Tuesday, April 11, 2023
Séparation du fond et de la forme
Permettre la diffusion du même document sous plusieurs formats différents et sous plusieurs supports. ex: format Postscript pour un document sous forme papier, format HTML pour le même document "en-ligne" sur le Webex : projet de documentation FreeBSD : http://www.freebsd-fr.org/ : on écrit une seule fois en SGML, et on génère automatiquement les formats HTML, Postscript, ASCII. Mise à jour du site et des documents très simple (une recompilation)
Tuyêt Trâm DANG NGOC - Université de Versailles 22Tuesday, April 11, 2023
L’approche XML
Par rapport à SGML Très semblable (balisés, DTD: schéma de définition du vocabulaire du
document) plus léger et moins strict (le DTD n’est pas obligatoire et n’a pas
besoin de coller exactement au document)
Par rapport à HTML plus strict (oubli des guillemets ou de fin de balises non accepté). balisage non prédéfini : une syntaxe plus forte et plus souple
SGML(Documentation structurée)
HTML(Présentation web)
XML
La norme XML
NormalisationSyntaxe
Tuyêt Trâm DANG NGOC - Université de Versailles 24Tuesday, April 11, 2023
La norme XML (eXtensible Markup Language)
Recommandation W3C en février 1998
but: ajouter une signification au contenu à travers sa structure
Définition de la structure à travers des balises (tags)
XML 1.010 fev. 1998
XML 1.115 Oct. 2002
XML 1.0 (2nd edition)6 Oct. 2000
Tuyêt Trâm DANG NGOC - Université de Versailles 25Tuesday, April 11, 2023
Balises
Les langages à balises sont idéaux pour organiser une information structurée.
Un objet balisé s’auto-décrit. Les balises sont de la forme classique :
<balise> valeur ou bloc </balise>
<cite id="C42F" > Un trou noir est le resultat de la division de l'univers par zero</cite>
Contenu
balise de début
Elément
balise de fin
nom d'attribut
valeur d'attribut
id = "C42F"attribut
Tuyêt Trâm DANG NGOC - Université de Versailles 26Tuesday, April 11, 2023
Syntaxe XML (1/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Déclaration XML
Tuyêt Trâm DANG NGOC - Université de Versailles 27Tuesday, April 11, 2023
Syntaxe XML (2/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Déclaration du type de document XML
Tuyêt Trâm DANG NGOC - Université de Versailles 28Tuesday, April 11, 2023
Syntaxe XML (3/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Instruction de formatage (processing instruction)
Tuyêt Trâm DANG NGOC - Université de Versailles 29Tuesday, April 11, 2023
Syntaxe XML (4/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Balises d'éléments (element tags)
Tuyêt Trâm DANG NGOC - Université de Versailles 30Tuesday, April 11, 2023
Syntaxe XML (5/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Attributs de balises d'éléments (attributes)
Tuyêt Trâm DANG NGOC - Université de Versailles 31Tuesday, April 11, 2023
Syntaxe XML (6/6)
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
01 <?xml version="1.0" encoding="ISO-8859-1"?>
02 <!DOCTYPE biblio SYSTEM "bibliot_1.dtd">
03 <?xml-stylesheet type="text/xsl" href="style.xsl"?>
04 <bibliotheque>
05 <livre code="C4242F">
06 <titre>Programmation Linux 2.0</titre>
07 <prix devise="EUR">28.88</prix>
08 </livre>
09 </bibliotheque>
Contenu (text content)
Tuyêt Trâm DANG NGOC - Université de Versailles 32Tuesday, April 11, 2023
Différence avec HTML : plus strict (bien-formé)
Toute balise ouverte doit être fermée et bien imbriquée <br/>
<b>bold <i> and italic </i> text</b>
<b>bold <i> and italic </b> text</i>
<ul> <li> list item </ul> Les attributs doivent être spécifiés et mis entre guillemets
<img src=‘images/banner.gif’/>
<img src=images/banner.gif />
<ul compact> <li> list item </li> </ul> Différentiation majuscule / minuscule
<prenom>Remy</prenom>
<PRenOM>Remy</prenom> Tous les caractères spéciaux y compris les accents doivent être codés
<prenom>Rémy</prenom>
<prenom>Rémy</prenom>
<prenom>Rémy</prenom>
Tuyêt Trâm DANG NGOC - Université de Versailles 33Tuesday, April 11, 2023
Points importants
Les document DOIVENT être bien-formés (well-formed)un document ne contient qu'un seul élément racine les balises ouvrantes doivent être fermées et correctement
imbriquées les attributs doivent être spécifiés et mis entre guillemets le contenu ne doit contenir que des caractères XML valides
Les documents PEUVENT être valides la structure et les contenus du document se conforment à
des règles spécifiées par un "vocabulaire" (DTD ou XML-Schema)
Technologies XML
Règle de structureDTDXML-Schema
InterrogationXPathXQuery
PrésentationXSL
Tuyêt Trâm DANG NGOC - Université de Versailles 35Tuesday, April 11, 2023
Technologies XML
Décrire la structure d'un document XML : DTD ou XML-Schema
Présenter un document XML : XSL
Se repérer dans un document XML : XPath
Différencier les documents XML : XML-Namespace
Interroger un document XML : XQuery
Tuyêt Trâm DANG NGOC - Université de Versailles 36Tuesday, April 11, 2023
Schéma : notion
<bar><nom id="42"> L’Envol </nom><adresse>
<rue> Lacépegrave;de </rue>
<ville> Paris </ville></adresse><boisson> Maple Kiss </boisson><boisson> Gin Tonic </boisson>
</bar>
<bar><nom id="43"> Le Frog’s </nom><telephone> 01 43 40 70 71</telephone><adresse>
<rue>cour Saint-Emilion</rue><ville>Paris</ville>
</adresse></bar>
bar
nom
adresse
rue
villeboisson
telephone
chaîne
type_telephone
(#attribut : nombre)id
chaîne
chaînechaîne *
chaîne
noeud
Tuyêt Trâm DANG NGOC - Université de Versailles 37Tuesday, April 11, 2023
DTD (Document Type Definition)
Permet de définir le «vocabulaire» et la syntaxe qui seront utilisés dans le document XML
Permet de valider un document XML : pour la cohérence
Peut être mis dans un fichier et être appelé dans le document XML par :<!DOCTYPE livre SYSTEM «livre.dtd»>
Tuyêt Trâm DANG NGOC - Université de Versailles 38Tuesday, April 11, 2023
DTD : syntaxe (1/3)
!ELEMENT tag (contenu)Décrit une balise qui fera partie du vocabulaire.ex : <ELEMENT livre (auteur, edition)>
!ATTLIST tag [attribut type #valeur]*Définit la liste d’attributs pour une baliseex : <!ATTLIST auteur
genre CDATA #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED «Paris»>
Tuyêt Trâm DANG NGOC - Université de Versailles 39Tuesday, April 11, 2023
DTD : syntaxe (2/3)
!ENTITY %nom «valeur»Une entité est l’équivalent XML d’une macro. Permet de définir un nom qui sera remplacé par le parseur dans le texteex : <!ENTITY % genres «homme» | «femme»>
<!ATTLIST auteur genre (%genres ; ) #REQUIRED>
Tuyêt Trâm DANG NGOC - Université de Versailles 40Tuesday, April 11, 2023
DTD : syntaxe (3/3)
CDATADonnées brutes qui ne seront pas analysées
PCDATA Elément de texte sans descendants ni attributs contenant des caractères à analyser.
#FIXED : assigne une valeur ne pouvant être changée dans le document XML #IMPLIED : valeur fixée dans le document XML
#REQUIRED : valeur obligatoire
Tuyêt Trâm DANG NGOC - Université de Versailles 41Tuesday, April 11, 2023
Exemple de DTD
<!ELEMENT bibliotheque (livre)*>
<!ELEMENT livre (titre, auteur+, date, ISBN, editeur)>
<!ATTLIST livre code #REQUIRED>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT editeur (#PCDATA)>
<!ELEMENT bibliotheque (livre)*>
<!ELEMENT livre (titre, auteur+, date, ISBN, editeur)>
<!ATTLIST livre code #REQUIRED>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT ISBN (#PCDATA)>
<!ELEMENT editeur (#PCDATA)>
Tuyêt Trâm DANG NGOC - Université de Versailles 42Tuesday, April 11, 2023
XML-Schema
Syntaxe XMLManipulation des schémas avec des outils d'édition XML
classiques Les DTD XML ne permettent pas de définir assez de
contraintesTypage étendu (string, Boolean, decimal, integer, date, etc.)
Définition de ses propres types (ComplexType)
Contraintes sur intervalles maxlength, precision, enumeration, maxInclusive (borne supérieure), minInclusive (borne inférieure), encoding (sur les binaires)
Orienté-objetDérivation de types par rapport à des types existants
Tuyêt Trâm DANG NGOC - Université de Versailles 43Tuesday, April 11, 2023
Disgression : Espaces de noms XML (XML Namespace)
Qu'est ce qu'un espace de noms ? l'espace de nom d'un élément est le contexte dans lequel il est valide
(ex. un bloc {...} en C)
Pourquoi un espace de noms ? résolution des conflits : si des éléments sont définis dans un contexte
global, il risque d'y avoir des problèmes lors de l'utilisation de plusieurs documents. (collision et conflits de noms)
modularité : si un certain vocabulaire existe il est utile de pouvoir le réutiliser pour des applications utilisant le même contexte
Les espaces de noms en XML c'est une collection de noms identifiée par une référence URI Les noms d'un espace de nom XML sont représenté comme des noms
qualifiés par une partie préfixe et une partie locale. Le préfixe correspond à la référence URI et détermine l'espace de noms
<xsl:apply-templates select="."/>
Tuyêt Trâm DANG NGOC - Université de Versailles 44Tuesday, April 11, 2023
Exemple XML-Schema
<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.livres.org" xmlns=“http://www.livres.org”> <xsd:element name="bibliotheque"> <xsd:complexType> <xsd:sequence> <xsd:element ref="livre" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="livre"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titre" minOccurs="1" maxOccurs="1"/> <xsd:element ref="auteur" minOccurs="1" maxOccurs=“unbounded”/> <xsd:element ref="date" minOccurs="1" maxOccurs="1"/> <xsd:element ref="ISBN" minOccurs="1" maxOccurs="1"/> <xsd:element ref="editeur" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:date"/> <xsd:element name="ISBN" type="xsd:integer"/> <xsd:element name="editeur" type="xsd:string"/></xsd:schema>
<?xml version="1.0"?><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.livres.org" xmlns=“http://www.livres.org”> <xsd:element name="bibliotheque"> <xsd:complexType> <xsd:sequence> <xsd:element ref="livre" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="livre"> <xsd:complexType> <xsd:sequence> <xsd:element ref="titre" minOccurs="1" maxOccurs="1"/> <xsd:element ref="auteur" minOccurs="1" maxOccurs=“unbounded”/> <xsd:element ref="date" minOccurs="1" maxOccurs="1"/> <xsd:element ref="ISBN" minOccurs="1" maxOccurs="1"/> <xsd:element ref="editeur" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="titre" type="xsd:string"/> <xsd:element name="auteur" type="xsd:string"/> <xsd:element name="date" type="xsd:date"/> <xsd:element name="ISBN" type="xsd:integer"/> <xsd:element name="editeur" type="xsd:string"/></xsd:schema>
Tuyêt Trâm DANG NGOC - Université de Versailles 45Tuesday, April 11, 2023
XPath
Utilisé dans les standards XML (XSL, XML-Schema, XQuer) ex. "/livre/auteur/prenom"
Une manière pratique de repérer un élément dans un document XML
(Plus direct que de naviguer dans un arbre DOM ou attendre le bon évènement SAX)
. self::node()
.. parent::node()
// descendant-or-self::node()
@ attribute::
Tuyêt Trâm DANG NGOC - Université de Versailles 46Tuesday, April 11, 2023
XPath : Syntaxe (1/4)
livre/titrefils "titre" du fils "livre" du noeud courant
/livre/titrefils "titre" du fils "livre" de la racine du document
@langageattribut "langage" du noeud courant
chapitre/@langageattribut "langage" du noeud "chapitre" du noeud
courant
Tuyêt Trâm DANG NGOC - Université de Versailles 47Tuesday, April 11, 2023
XPath : Syntaxe (2/4)
chapitre[3]/para tous les fils "para" du troisième chapitre
livre/*/titre tous les fils de "titre" de tous les fils du fils "livre" du
noeud courant chapitre//para
tous les descendants "para" de n'importe quel fils du noeud chapitre
../../titre tous les fils "titre" du parent du parent du noeud courant equiv. parent::node()/parent::node()/child::titre
Tuyêt Trâm DANG NGOC - Université de Versailles 48Tuesday, April 11, 2023
XPath : Syntaxe (3/4)
para[1] ou para[position()=1] le premier noeud fils "para" du noeud courant
para[last()] para[count(child::note)>0]
tous les paragraphes avec une ou plusieurs notes
para[id("abstract")] sélectionner tous les noeuds fils de la forme :
<para id="abstract">
para[@type='secret'] or para[attribute::type='secret'] selectionner tous les noeuds fils de la forme
<para type="secret">
Tuyêt Trâm DANG NGOC - Université de Versailles 49Tuesday, April 11, 2023
XPath : Syntaxe (4/4)
para[not(titre)] sélectionner tous les paragraphe fils sans éléments titre
para[position() >= 2 and position() < last()] sélectionner tous les paragraphes sauf le premier et le
dernier
note[contains(., "toto")] . veut dire "tester le contenu des fils aussi, récursivement
dans ce contexte
note[starts-with(., "toto")]
Tuyêt Trâm DANG NGOC - Université de Versailles 50Tuesday, April 11, 2023
XSL (eXtended Style Langage)
Basé sur le principe de DSSLPlus de fonctionnalités que CSS
Filtrage de données XMLPrésentation des données dans n'importe quel ordreModification et ajout d'informationPeut inclure des scripts
Prise en compte de XML en plus du HTML
XML + XSL => affichage sur le navigateur client
Tuyêt Trâm DANG NGOC - Université de Versailles 51Tuesday, April 11, 2023
XSL : Syntaxe (1/4)
Associé à un document XML par un appel<?xml-stylesheet type="text/xsl" href="livre.xsl">
<xsl : template match=nom>Définit les règles pour la balise dont le nom est spécifié par match.ex : <xsl: template match="auteur">
Tuyêt Trâm DANG NGOC - Université de Versailles 52Tuesday, April 11, 2023
XSL : Syntaxe (2/4)
<xsl : value-of select=nom>Retourne la valeur de l’attribut de la balise spécifiée ou le texte associé au noeud. Nom d’attribut préfixé par @, noeud atteint par /. ex: <xsl: value-of select="livre/auteur/@ville">
<xsl: template match="auteur"><b><xsl: value-of /></b>,<xsl: value-of select="@ville" />,<i><xsl: value-of select="@date_naissance" /></i></xsl template>
Soit la ligne dans le document XML :<auteur date_naissance="1783" ville "Grenoble">Stendhal</auteur>On affichera :Stendhal, Grenoble, 1783
Tuyêt Trâm DANG NGOC - Université de Versailles 53Tuesday, April 11, 2023
XSL : Syntaxe (3/4)
<xsl : for-each select=nom></xsl: for-each>Répète ce qui suit pour chaque élément correspondant au mot-clef demandéex : <xsl : for-each select="livre/auteur">
<xsl: value-of /> <xsl: eval>AjouteVirgule ( )</xsl: eval> </xsl : for-each>Cela écrira à la suite tous les noms d’auteurs séparés par une virgule.
Tuyêt Trâm DANG NGOC - Université de Versailles 54Tuesday, April 11, 2023
XSL : Syntaxe (4/4)
<xsl : apply-templates match=nom>Applique tous les templates possible aux éléments correspondant à la description.ex : <xsl: for-each select="livre">
<xsl: apply-templates select="auteur" /> <hr /> <xsl: apply-templates select="critique" /> </xsl: for-each>Affiche le détail sur les auteurs et les critiques des livres comris dans le document XML, chacun formatté avec leur propre template.
<xsl : eval>Fonction ( )</xsl : eval>Evalue une fonction JavaScript ou VBScript. Le retour de la fonction remplace la commande.
Tuyêt Trâm DANG NGOC - Université de Versailles 55Tuesday, April 11, 2023
<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table cellpadding="2" cellspacing="0" border="1" bgcolor="#FFFFD5"> <tr> <th>TITLE</th> <th>AUTHOR</th> <th>DATE</th> <th>ISBN</th> </tr> <xsl:for-each select="bibliotheque/livre"> <tr><td><xsl:value-of select="titre"/></td> <td><xsl:value-of select="auteur"/></td> <td><xsl:value-of select="date"/></td> <td><xsl:value-of select="ISBN"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
<?xml version='1.0'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table cellpadding="2" cellspacing="0" border="1" bgcolor="#FFFFD5"> <tr> <th>TITLE</th> <th>AUTHOR</th> <th>DATE</th> <th>ISBN</th> </tr> <xsl:for-each select="bibliotheque/livre"> <tr><td><xsl:value-of select="titre"/></td> <td><xsl:value-of select="auteur"/></td> <td><xsl:value-of select="date"/></td> <td><xsl:value-of select="ISBN"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
XSL : exemple
2225815968 1997M.J. Bachconception du systeme UNIX
2212091834 2000R.CardProgrammation linux 2.0
ISBNDATEAUTHORTITLE
pour se référer à l'espace de noms XSLon trouve l'élément racine
Ce qu'on fait si on trouve l'élément racine
aller dans chaque élément "livre" de l'élément "bibliothèque"
et afficher le titre, l'auteur, la date et l'ISBN
Tuyêt Trâm DANG NGOC - Université de Versailles 56Tuesday, April 11, 2023
XSL-FO (extended Style Sheet Formatting Object)
permet d’exprimer de manière très précise le rendu d’un document. Il gère la pagination d’un document, les notes de bas de page, les marges,… Il est possible de préciser avec exactitude l’emplacement des différents objets sur la page, les polices des caractères, l’affichage de tableaux, etc.
Un document XSL-FO est assez pénible à réaliser à la main, c’est pourquoi on utilise XSLT dans le but de générer du XSL-FO à partir d'une feuille de style XSLT.
Tuyêt Trâm DANG NGOC - Université de Versailles 57Tuesday, April 11, 2023
FOP (Formatting Objects Processor)
FOP utilise XSL-FO pour générer des documents sous des formats indépendant
FOP est une application java qui lit un arbre de formatage d'objet (FO) et renvoie une page suivant le format de sortie souhaité.
Format de sortie actuellement supporté par FOP : PDF, PCL, PS, SVG,
XML, Print, AWT, MIF and TXT. La cible principale est le PDF.
XML XSLT
Processeur XSLT
XSL-FO
Processeur FOP
XML et les bases de données
Pourquoi les SGBD-R ?Pourquoi XML ?
Tuyêt Trâm DANG NGOC - Université de Versailles 59Tuesday, April 11, 2023
XML et bases de données relationnelles
Pourquoi les bases de données relationnelles ? La plupart des données sont stockées dans des SGBD-R Peu d'évolution prévue dans un avenir proche
dimensionnable, sûr, performant, beaucoup d'outils existants
Besoin de moyen efficace pour publier des données relationnelles comme des documents XML
Pourquoi XML ? Modèle élégant complexe, arborescent, structuré balises spécifiques descriptives Standardisé ! Standard dominant d'échange sur le web.
Tuyêt Trâm DANG NGOC - Université de Versailles 60Tuesday, April 11, 2023
Inconvénients des modèles de données classiques
bar nom adresse rue ville telephone boissonL'Envol NULL LaCépède Paris NULL Maple Kiss,
Gin Tonic
Le Frog's
25, Cour Saint Emilion, Paris
NULL NULL 0143407071 NULL
L'Apparement Café
NULL NULL Paris 0148871222,
0148874942Café, Thé, Chocolat, Margarita, Gin Tonic
Valeurs nulles Attributs multi-valués Difficultés d'extensions
Exportation de données complexe
Tuyêt Trâm DANG NGOC - Université de Versailles 61Tuesday, April 11, 2023
Données XML
Structure arborescente Structure irrégulière
données multi-valuéesdonnées manquantesdonnées de types
différents
Structure implicitedéfinie dans les données
elles-mêmes
ReprésentationXML
<bar><nom> L’Envol </nom><adresse>
<rue> Lacépegrave;de </rue><ville> Paris </ville>
</adresse><boisson> Maple Kiss </boisson><boisson> Gin Tonic </boisson>
</bar>
<bar><nom> Le Frog’s </nom><telephone> 01 43 40 70 71</telephone><adresse> 25, cour Saint-Emilion Paris,</adresse>
</bar>
<bar><nom> L’Envol </nom><adresse>
<rue> Lacépegrave;de </rue><ville> Paris </ville>
</adresse><boisson> Maple Kiss </boisson><boisson> Gin Tonic </boisson>
</bar>
<bar><nom> Le Frog’s </nom><telephone> 01 43 40 70 71</telephone><adresse> 25, cour Saint-Emilion Paris,</adresse>
</bar>
Tuyêt Trâm DANG NGOC - Université de Versailles 62Tuesday, April 11, 2023
Oracle XSU (XML-SQL Utility)
XSU est packagé avec Oracle8i (8.1.7 et plus) et Oracle9i
XSU permet de transformer des données récupérées de tables ou vues relationnelles-objets en XML
XSU peut extraire des données d'un document XML et en utilisant un mapping générique, insérer, supprimer, mettre à jour des données dans les colonnes associées d'une table