XML origine - concept - techniques

Slides:



Advertisements
Présentations similaires
Introduction aux Web Services Partie 1. Technologies XML
Advertisements

1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
Les espaces de nommage XML par Philippe Poulard 1
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
le langage les éléments
Les fonctions de XPath et XSLT
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
version Beta Marie Calberg Ninni Louhelainen SLFN7
XML Un format d'échange et un langage de présentation des données associé au HTML.
Design Pattern MVC En PHP5.
TP 3-4 BD21.
Manipulation d’XML avec XSL
CREATION DE FEUILLE DE STYLE pour structuré le document XML
Introduction et Concepts : De SGML à XML
XSL-FO THEORIE PRATIQUE.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Développement d’applications web
Bibliothèque Patchouli
L’utilisation des bases de données
HTML.
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Bienvenue! Qui suis-je? Webmestre depuis 1994 Café Internet en 1996 Commerce électronique Gestion de contenu web Marketing interactif.
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
Xpath XML Path language par Yves Bekkers
XSLT Langage de transformation darbre par Yves Bekkers.
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
XSLT : trier et mettre en valeur le contenu d’un document XML
Support des connaissances TP2 XSL-T
Les feuilles de style CSS
Langages de requêtes XML
PHP & My SQL.
Le langage XHTML 420-S4W-GG Programmation Web Client
Les outils de base : XPath, XSL, XLink, XForms
PROGRAMMATION WEB FRONT-END.
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
LE HTML ISN Terminale S Un peu d’histoire …
Présentation du produit
XPath XML Path UP Web Année universitaire
Programmation Web : Introduction à XML
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Publication et Traitement avec XSL
SMIL Synchronized Multimedia Integration Language
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
 G. Gardarin Les outils de base: Publication avec XML 1. XPATH 2. XSLT 3. XSLFO 4. XLink, XForms, RSS, … 5. XML et la bureautique.
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
INTERNET Le langage HTML
Soutenance du mémoire de synthèse
Module : Langage XML (21h)
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
eXtensible Markup Language. Généralités sur le XML.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Initiation aux bases de données et à la programmation événementielle
D é veloppement de sites web statiques Par DRISS AIT EL HADJ Par DRISS AIT EL HADJ Avril 2012.
Language html Hyper Text Markup Language
Scénario Les scénarios permettent de modifier la position, taille … des calques au cours du temps. Son fonctionnement est très proche de celui de Macromedia.
Dreamweaver Séance 1.
1 Présentation de DREAMWEAVER (1) Gaël TREMEAU GI05 Printemps 2006.
Présentation de Dreamveawer
Dreamweaver MX Jauneau Marie Claude-Antoine Zarate.
Plan de la présentation Le langage HTML Dreamweaver MX Les premiers outils pour créer une page web :  Propriétés d’une page  Création de cadres  Création.
Introduction au HTML Qu’est ce que le HTML ?
INF2005– Programmation web– A. Obaid Variantes de HTML.
1 er séance SI28 A2004 YIN Lei Emmanuel Eugene. Plan de l’exposé  Introduction au HTML  Le HTML dans le bloc-notes (notepad)  Présentation de Dreamweaver.
TP ISN-Terminale S Notion de code HTML. I) Visualisation du code source d’une page web Se mettre sur une page web quelconque : clic droit, Afficher la.
Transcription de la présentation:

XML origine - concept - techniques Tuyêt Trâm DANG NGOC Laboratoire PRiSM Université de Versailles-Saint-Quentin <dntt@prism.uvsq.fr> Cours 1/2

XML : Origine, concept, technique (Plan 1/2) Origine et objectifs Le fond et la forme : SGML, HTML et XML La norme XML Le rôle du W3C Définition du standard XML La technologie XML Métadonnées : DTD et XML-Schéma Espace de noms : XML namespace Présentation : XSL Interrogation : XPath, XQuery Tuyêt Trâm DANG NGOC - Université de Versailles

XML : Origine, concept, technique (Plan 2/2) XML et les bases de données Déploiement d'un site web avec XML Les produits XML Stockage : natif, middleware ou extension de SGBD Services WEB et serveurs d'application Outils de manipulation XML Conclusion Références Tuyêt Trâm DANG NGOC - Université de Versailles

Origine et objectif De HTML et SGML vers XML HTML : la forme SGML : le fond XML : le fond pour la forme

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: Mulder prenom: Fox profession: Agent du FBI nom prenom profession Mulder Fox Agent du FBI Fox Mulder, Agent du FBI nom: Mulder prenom: Fox profession: Agent du FBI Agent du FBI : Fox Mulder Tuyêt Trâm DANG NGOC - Université de Versailles

Présentation d'un document Fédération de données semi-structurées avec XML Tuyêt Trâm DANG NGOC Laboratoire PRiSM – Université de Versailles 45, avenue des Etats-Unis 78035 Versailles CEDEX email: dntt@prism.uvsq.fr Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML" 1 Introduction 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. 2 Problématique 2.1 Requête sur données semi-structurées Evaluer 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ées 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 : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%' Présentation d'un document Note: [Abiteboul 1998] Semistructured Data Tutorial 1998

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 XHTML 1.1 31 Mai 2001 HTML 2+ 1996 HTML 4.01 24 Dec. 1999 HTML 2.0 (RFC 1866) Nov. 1995 HTML 1.0 Juin 1993 HTML 3.0 XHTML 1.0 26 Jan. 2000 HTML 3.2 14 Jan. 1997 HTML 4.0 24 Avr. 1998 Tuyêt Trâm DANG NGOC - Université de Versailles

Quelques balises HTML standards 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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: dntt@prism.uvsq.fr">dntt@prism.uvsq.fr</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

Tuyêt Trâm DANG NGOC - Université de Versailles 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ées les balises ne renseignent pas sur les valeurs incluses entre les balises Les balises ne sont pas extensibles Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Feuilles de style CSS (Cascading Style Sheet) Recommandation W3C en décembre 1996 Mécanisme simple pour ajouter un style (fonte, couleur, etc.) aux documents Web Intégré dans HTML 4.0 Changement de présentation des documents limitées Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles CSS <LINK REL="stylesheet" HREF="fichier.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 ; @import "truc.css" BODY { color: #000 ; background: #FBFBFF ; margin-left: 9% ; margin-right: 6% ; font-family: "Helvetica", sans-serif ; line-height: 1.35 ; } Tuyêt Trâm DANG NGOC - Université de Versailles

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 Tuyêt Trâm DANG NGOC - Université de Versailles

Fédération de données semi-structurées avec XML Note: [Abiteboul 1998] Semistructured Data Tutorial 1998 TITRE RESUME AUTEUR PRENOM VILLE PARA CODE NOM ADRESSE SOUSSECTION SECTION ENTETE CORPS RUE ORGANISATION CODEPOSTAL FNOTE Composants imbriqués Fédération de données semi-structurées avec XML Tuyêt Trâm DANG NGOC Laboratoire PRiSM – Université de Versailles 45, avenue des Etats-Unis 78035 Versailles CEDEX email: dntt@prism.uvsq.fr Résumé: Nous décrivons dans ce papier une architecture de médiation "tout-XML" 1 Introduction 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. 2 Problématique 2.1 Requête sur données semi-structurées Evaluer 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ées 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 : 1 -- chercher tous les livre dont le titre contient LINUX 2 SELECT * 3 FROM livre 4 WHERE titre LIKE '%LINUX%'

Tuyêt Trâm DANG NGOC - Université de Versailles 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>dntt@prism.uvsq.fr</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

Tuyêt Trâm DANG NGOC - Université de Versailles Vue Arborescente ARTICLE ENTETE CORPS FTNOTE ID TITRE AUTEUR ABSTRACT PARA PRENOM NOM ADRESSE PARA PARA SECTION SECTION TITRE PARA PARA SOUSSECTION SOUSSECTION FTNOTE REFLOC CODE POSTAL ORGANISATION VILLE PAYS EMAIL TITRE PARA PARA TITLE PARA CODE ADRESSE Tuyêt Trâm DANG NGOC - Université de Versailles

Correspondance arborescence/balises bar nom adresse rue ville boisson (#attribut : 42) id Lacépède Paris Maple Kiss L'Envol telephone 01 43 40 70 71 (#attribut : 43) cour Saint Emilion chaîne Le Frog's Gin Tonic 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> <nom id="43"> Le Frog’s </nom> <telephone> 01 43 40 70 71</telephone> <rue>cour Saint-Emilion</rue> <ville>Paris</ville> </sorties> Tuyêt Trâm DANG NGOC - Université de Versailles

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 Web ex : 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

L’approche XML Par rapport à SGML Par rapport à HTML 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) XML HTML (Présentation web) Tuyêt Trâm DANG NGOC - Université de Versailles

Normalisation Syntaxe La norme XML Normalisation Syntaxe

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.0 10 fev. 1998 XML 1.0 (2nd edition) 6 Oct. 2000 XML 1.1 15 Oct. 2002 Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles 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> Elément <cite id="C42F" > Un trou noir est le resultat de la division de l'univers par zero</cite> id = "C42F" attribut Contenu balise de fin balise de début nom d'attribut valeur d'attribut Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (1/6) Déclaration XML 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> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (2/6) Déclaration du type de document XML 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> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (3/6) Instruction de formatage (processing instruction) 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> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (4/6) Balises d'éléments (element tags) 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> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (5/6) Attributs de balises d'éléments (attributes) 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> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Syntaxe XML (6/6) Contenu (text content) 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> Tuyêt Trâm DANG NGOC - Université de Versailles

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

Tuyêt Trâm DANG NGOC - Université de Versailles 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) Tuyêt Trâm DANG NGOC - Université de Versailles

Technologies XML Règle de structure Interrogation Présentation DTD XML-Schema Interrogation XPath XQuery Présentation XSL

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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> <nom id="43"> Le Frog’s </nom> <telephone> 01 43 40 70 71</telephone> <rue>cour Saint-Emilion</rue> <ville>Paris</ville> bar chaîne nom chaîne id (#attribut : nombre) telephone type_telephone adresse noeud rue chaîne ville chaîne boisson chaîne * Tuyêt Trâm DANG NGOC - Université de Versailles

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

Tuyêt Trâm DANG NGOC - Université de Versailles 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 balise ex : <!ATTLIST auteur genre CDATA #REQUIRED ville CDATA #IMPLIED> <!ATTLIST editeur ville CDATA #FIXED «Paris»> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles 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 texte ex : <!ENTITY % genres «homme» | «femme»> <!ATTLIST auteur genre (%genres ; ) #REQUIRED> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles DTD : syntaxe (3/3) CDATA Donné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

Tuyêt Trâm DANG NGOC - Université de Versailles 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)> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles XML-Schema Syntaxe XML Manipulation des schémas avec des outils d'édition XML classiques Les DTD XML ne permettent pas de définir assez de contraintes Typage é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é-objet Dérivation de types par rapport à des types existants Tuyêt Trâm DANG NGOC - Université de Versailles

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 A single document can use multiple DTDs But! Two DTDs can use the same element name with different rules Solution: Namespaces Must prefix tag name with namespace name e.g. <xsl:apply-templates select="."/> <xsl:apply-templates select="."/> Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles 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: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: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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles XPath : Syntaxe (1/4) livre/titre fils "titre" du fils "livre" du noeud courant /livre/titre fils "titre" du fils "livre" de la racine du document @langage attribut "langage" du noeud courant chapitre/@langage attribut "langage" du noeud "chapitre" du noeud courant Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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")] para[lang("en")] matches <para xml:lang="en-uk">…</para> Tuyêt Trâm DANG NGOC - Université de Versailles

XSL (eXtended Style Langage) Basé sur le principe de DSSL Plus de fonctionnalités que CSS Filtrage de données XML Présentation des données dans n'importe quel ordre Modification et ajout d'information Peut 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

Tuyêt Trâm DANG NGOC - Université de Versailles 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

XSL : exemple pour se référer à l'espace de noms XSL <?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> pour se référer à l'espace de noms XSL on 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 2225815968 1997 M.J. Bach conception du systeme UNIX 2212091834 2000 R.Card Programmation linux 2.0 ISBN DATE AUTHOR TITLE Tuyêt Trâm DANG NGOC - Université de Versailles

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

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 Supports 95% or so of the XML Formatting Objects recommendation Can generate very complex PDF files from files of formatting objects: Page number references Running headers and footers PDF bookmarks Support for JPEGs, GIFs, and SVG (limited) Syntaxe pour créer un fichier pdf: fop -xml fichier.xml -xsl fichierfo.xsl -pdf fichier.pdf PDF Tuyêt Trâm DANG NGOC - Université de Versailles

XML et les bases de données Pourquoi les SGBD-R ? Pourquoi XML ?

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

Inconvénients des modèles de données classiques bar nom adresse rue ville telephone boisson L'Envol NULL LaCépède Paris Maple Kiss, Gin Tonic Le Frog's 25, Cour Saint Emilion, Paris 0143407071 L'Apparement Café 0148871222, 0148874942 Café, Thé, Chocolat, Margarita, Gin Tonic INCONVENIENT DES MODELES DE DONNEES CLASSIQUES Valeurs nulles coûteux Attributs multi-valués difficultés de manipulation Difficultés d'extensions Ajout ou suppression d'un objet ayant un nouveau type d'attribut relationnel : rajouter encore des NULL et/ou créér un nouveau schéma et exporter/importer les anciennes données objets : types génériques ou modification du schéma Valeurs nulles Attributs multi-valués Difficultés d'extensions Exportation de données complexe Tuyêt Trâm DANG NGOC - Université de Versailles

Tuyêt Trâm DANG NGOC - Université de Versailles Données XML Structure arborescente Structure irrégulière données multi-valuées données manquantes données de types différents Structure implicite définie dans les données elles-mêmes Représentation XML <bar> <nom> L’Envol </nom> <adresse> <rue> Lacépegrave;de </rue> <ville> Paris </ville> </adresse> <boisson> Maple Kiss </boisson> <boisson> Gin Tonic </boisson> </bar> <nom> Le Frog’s </nom> <telephone> 01 43 40 70 71</telephone> <adresse> 25, cour Saint-Emilion Paris,</adresse> DONNEES SEMI-STRUCTUREES Structure arborescente Structure irrégulière données multi-valuées données manquantes données de types différents Structure implicite définie dans les données elles-mêmes Représentation XML, OEM Les données semi-structurées de par leur nature ne peuvent se « classer » de façon simple ; leur structure évolutive rend les mises à jour difficiles. Le schéma est partiellement défini par la donnée elle-même et encapsulé dans cette dernière, mais, il arrive aussi qu'un schéma complet soit fourni, il est utile de le prendre en compte. De plus, la structure arborescente des données semi-structurées rend la manipulation de ses données complexes. Tuyêt Trâm DANG NGOC - Université de Versailles

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 Tuyêt Trâm DANG NGOC - Université de Versailles