Langage de structuration des données: XML

Slides:



Advertisements
Présentations similaires
XML eXtensible Markup Language
Advertisements

Transformation de documents XML
Xavier Blanc Web Services Xavier Blanc
DTD Sylvain Salvati
eXtensible Markup Language
Internet : serveurs Web
Les espaces de nommage XML par Philippe Poulard 1
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
XML schema Objectifs Valider un doc. XML pour des contraintes syntaxiques Documenter un type de documents XML caractérisé par des contraintes Encadrer.
Données structurées et XML
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
Cours 1.2 : Introduction au langage XML
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.
TP 3-4 BD21.
Manipulation d’XML avec XSL
Web traditionnel
LES LANGAGES DE PROGRAMMATIONS JAVASCRIPTH.T.M.LP.H.PS.Q.L Reynald Maréchal DI045.
XML-Family Web Services Description Language W.S.D.L.
HTML.
Web Structurel
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.
<XML/> Bruno GRILHERES (EADS CASSIDIAN)
XML : concours d’acronymes ou futur standard ?
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
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.
1. 2 PLAN DE LA PRÉSENTATION - SECTION 1 : Code HTML - SECTION 2.1. : CSS (Méthode 1) - SECTION 2.2. : CSS (Méthode 2) - SECTION 3 : JavaScript - SECTION.
An Introduction to distributed applications and ecommerce 1 1 Les services Web, XML et les places de marchés.
DOCUMENT VALIDE 4 Obéir à une structure type prédéfini 4 Document valide = bien formé + obéir à une structure type définie dans une DTD 16 novembre 1999.
Initiation aux bases de données et à la programmation événementielle
Les feuilles de style CSS
8 - XML Cours XML.
1 Programmation Web II 2 ème année Licence Appliquée IAG Faculté des Sciences Economiques et de Gestion de Nableul Université 7 novembre à Carthage Années.
Le langage XHTML 420-S4W-GG Programmation Web Client
Le langage du Web CSS et HTML
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
LE HTML ISN Terminale S Un peu d’histoire …
Le langage XML.
Cours de programmation web
Internet : serveurs Web  Clients et serveurs : le navigateur  Sites Web et urls  Fichier source d’une page  Langage HTML 1.
Programmation Web : Introduction à XML
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
XHTML les fondamentaux M.DIENG Abdoulaye DTS 1 Réseaux & Données.
S'initier au HTML et aux feuilles de style CSS Cours 5.
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Introduction à XML Yves Bekkers. Plan Introduction - structurer l’information Les langages à balises - un peu d’histoire XML - concepts de base Outils.
PDF Un format universel?.
Soutenance du mémoire de synthèse
Initiation au JavaScript
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
XSD XML Schema Definition Année universitaire UP web.
Page 1 © Expert-IT s.a. - Développer des projets en XML Pratique.
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
eXtensible Markup Language. Généralités sur le XML.
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
Vers la modularisation des données du web XHTML. Qu'est-ce que XHTML ? ● XHTML est une famille de types de documents futurs et actuels et de modules :
Initiation aux bases de données et à la programmation événementielle
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
Dreamweaver Séance 1.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
INF2005– Programmation web– A. Obaid Variantes de HTML.
DTD - Y. Bekkers - IFSIC1 DTD Document Type Definition Yves Bekkers Mise à jour : 31 mai 2016.
Transcription de la présentation:

Langage de structuration des données: XML Adrien Vieilleribière vieille@lri.fr 2010.05.21

Qu’est-ce que XML? eXtended Markup Language Langage universel d’échange de données Méta-langage

Plan I) Introduction II) Langages d’arbres Historique Objectifs Document XML II) Langages d’arbres DTD XML Schéma XML III) Requêtes et manipulation Xpath XSL, XSLT DOM, SAX IV) Applications

Historique 1974 à 1986 Standard Generalized Markup Language Norme ANSI et ISO 8879 1998 eXtensible Markup Language W3C 1990 HyperText Markup Language CERN-W3C 2000 eXtensible HyperText Markup Language W3C

Introduction : Plan Historique XML SGML HTML Pourquoi ? Documents bien formés Syntaxe

Structure de documents SGML Indépendance Conformité Problèmes Trop complexe pour la réalisation des navigateurs Structure de documents Représentation physique Mise en page Visualisation Indépendant

HTML : HyperText Markup Language Jeu fini de balises destiné à décrire des pages WEB dans une optique de présentation Propriétés Langage simple, facile à écrire Mise en œuvre rapide Permet la navigation au travers des pages d’information via les liens Intégration de médias (image figée, images animées, fichier audio)

Applications HTML portables sur tous les Environnements Station Unix Internet données Ordinateur portable Serveur Web Station Linux Quelque soit le type de demandeur de la page web, le serveur web lui renvoie une page web au format HTML

HTML : HyperText Markup Language Structure générale d’un document html <html> <head> section des informations non affichables <title> indique le titre non affichable du document </title> </head> <body> Indique la section des informations affichables </body> </html>

HTML: Exemple

Limites du HTML Pages statiques et n’interagissant pas avec l’utilisateur => DHTML Dynamic HTML portion de code en script s’exécutant dans le navigateur WEB Script client NON portable Ensemble prédéfini de balises avec attributs prédéfinis Description physique et structurelle mêlée

XML: Un standard Consortium W3C (World Wide Web Consortium) Sociétés impliquées dans la technologie WEB + éditeurs de logiciels Sociétés respectant XML : Netscape, IBM, Sun MicroSystem, Oracle, Microsoft, Hewlett Packard, Adobe System, etc… (XML) 1.0 (Fifth Edition) 1996 Première version de XML (Sous ensemble de SGML) 1998 projet XML est devenu un standard (XML) 1.0(First Edition) 2006 XML 1.1 (Second Edition) 2008 XML 1.0 (Fifth Edition)

XML: Objectifs Créer une technologie universelle pour structurer l’information Adapté à la diffusion et à l’échange d’information Langage extensible d’expressions standardisées Indépendant des plates-formes, et des systèmes d’exploitation Séparation du fond et de la forme

XML et HTML XML repose sur l’utilisation et la création des balises Gaston Lagaffe Date de naissance: 30/03/1976 Adresse: Journal Spirou 355 Paris Cedex 75116 France Taille: 180 Poids : 70 Représentation d’un auteur en HTML et XML ?

XML et HTML XML crée librement des balises pour marquer les éléments … <head><title>adresse Gaston</title></head> <body> <h2> Gaston Lagaffe </h2> <table><tr><td> <i> date de naissance</i> </td> <td> 30/03/1976</td> </tr> <tr><td> <i> adresse</i> </td> <td> Journal Spirou <br> bp 355 <br> F-75116 Paris Cedex </td> </tr> <tr><td> <i>taille :</i></td> <td> 180 </td></tr> <tr> <td> 70 kg :</td></tr> </table> </body> </html> … <auteur> <prenom>Gaston</prenom> <nom>Lagaffe</nom> <date_naissance>30/03/1976</date_naissance> <adresse> <compagnie>Journal Spirou</compagnie> <boite_postale>355</ boite_postale > <ville> Paris Cedex </ville> <code_postal>75116</ code_postal > <pays code="ISO-3166"/> </adresse> <taille unite="cm">180</taille> <poids unite="kg">70</ poids > </auteur> XML crée librement des balises pour marquer les éléments

XML : Les données Informations -> structure arborescente auto descriptive Deux éléments Structure des données Données auteur naissance adresse taille poids compagnie Boite-postale ville Code_postal pays

HTML: Description physique et structurelle mélée Balises physiques : représentation fixe quel que soit l’outil de génération de document h1, h2..h6 center b i small … Balise logique : signification sur le nature de leur contenu mais leur représentation dépend de l’outil de génération title, dl, blockquote… XML Balises structurelles et logiques : Représentation dépend de leur feuille de style associée

Document XML : syntaxe (1/3) Arbre d’éléments (balise de fin obligatoire) <unElement> <UnSousElement> </UnSousElement> … </unElement> Element vide <unElementVide/>

Document XML : syntaxe (2/3) Contenu <unElement> une donnée textuelle </unElement> Attributs et valeurs <unElement unAttribut=“uneValeur”></unElement> Sensibilité à la casse <unElement> </UNELEMENT> incorrect!

Document XML : syntaxe (3/3) Section CDATA <![CDATA[ < < ceci est du texte: ]]> Commentaires <!-- ce commentaire finit ici --> Caractères Jeu de caractères international UNICODE Exemple d’encodage UTF-8 ou UTF-16

eXtensible HyperText Markup Language Evolutions eXtensible HyperText Markup Language Le XHTML est un langage identique au langage HTML mais respectant la syntaxe définie par XML. HTML5 Vocabulaire et API associées pour HTML et XHTML http://www.w3.org/TR/html5/

II) Langages d’arbres : plan Validité DTD Syntaxe Entités Schéma XML

Document XML valide Conforme à définissent un type de structure une DTD (Document Type Definition) à un schéma XML à un schéma REALAX NG définissent un type de structure Une DTD XML est associée à une DTD SGML conforme Passerelles existantes entre formalismes (Trang, XSD to RelaxNG, NekoDTD…)

DTD & Schémas : Avantages Validité assurée Intégration facilitée Aide à la rédaction Normalisation

XML valide <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>

XML valide incluant une DTD <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne [ <!ELEMENT personne (prenom, nom)> <!ELEMENT prenom (#PCDATA)> <!ELEMENT nom (#PCDATA)> ]> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>

XML valide pour une dtd (privée) distante <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne SYSTEM "http://adrien-v.com/teaching/M2-dauphine/dtd/personne.dtd"> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne>

XML valide pour une dtd publique <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE personne PUBLIC "adrien:adrien-v com//persone v1.0//fr" "http://adrien-v.com/teaching/M2-dauphine/dtd/personne.dtd"> <personne> <prenom>Gaston</prenom> <nom>Lagaffe</nom> </personne> Premier argument : Informatif Par convention identifiant:proprietaire//description//langue

DTD : Règles de nommage des identifiants Au moins une lettre : a à z ou A à Z Peut commencer par _ ou : La 1ère lettre peut être suivie par une ou plusieurs lettres, chiffres, tirets, underscores, points, et l'ensemble des caractères Unicode. http://www.w3.org/XML/REC-xml Pas d'espaces ni de tabulations Seuls signes de ponctuation autorisés : tiret et point

DTD : Déclaration d’éléments Contenu vide <!ELEMENT ident EMPTY> Contenu quelconque <!ELEMENT ident ANY> Contenu sous-éléments <!ELEMENT ident ((fils1,fils2)*|fils3?,fils4+)> Contient des éléments Utilisation d’expression régulière Contenu mixte <!ELEMENT ident (#PCDATA|fils1*)>

DTD : Expressions régulières Séquence , Choix | 0 à N * 1 à N + 0 à 1 ?

DTD : Déclaration d’attributs Syntaxe <! ATTLIST Element Attribut Type > Type représente le type de donnée de l'attribut : littéral: il permet d'affecter une chaîne de caractères à un attribut. <!ATTLIST dossier chemin CDATA #IMPLIED> l'énumération: permet de définir une liste de valeurs possibles pour un attribut donné, afin de limiter le choix de l'utilisateur. <! ATTLIST Element Attribut (Valeur1|Valeur2|…) > Pour définir une valeur par défaut il suffit de faire suivre l'énumération par la valeur désirée entre guillemets : <! ATTLIST Elément Attribut (Valeur1 | Valeur2 ) "valeur2" >

DTD : Déclaration d’attributs Syntaxe <! ATTLIST Element Attribut Type > atomique: il permet de définir un identifiant unique pour chaque élément grâce au mot clé ID. <!ATTLIST dossier reference ID #REQUIRED> IDREF, IDREFS : type prédéfini pour lister la ou les références associées à un document <!ATTLIST fichier dossier IDREF #REQUIRED>

DTD : Déclaration d’attributs Chacun de ces types d'attributs peut être suivi d'un mot clé particulier permettant de spécifier le niveau de nécessité de l'attribut : #IMPLIED signifie que l'attribut est optionnel, c'est-à-dire non obligatoire #REQUIRED signifie que l'attribut est obligatoire #FIXED signifie que l'attribut sera affecté d'une valeur par défaut s'il n'est pas défini. Il doit être immédiatement suivi de la valeur entre guillemets Ainsi on pourra avoir une déclaration d'attribut du type  <! ATTLIST disque IDdisk ID #REQUIRED type(K7|MiniDisc|Vinyl|CD)"CD">

DTD : Déclaration d’entités Entité générale interne <!ENTITY titre "XML in a nutschell"> (appel d’entité dans le document &titre; ) Entité paramètre (uniquement dans la DTD) : interne <!ENTITY %NomAtt "name ID #REQUIRED"> externe <!ENTITY %NomAtt SYSTEM "nomAtt.txt"> générale externe <!ENTITY %arch PUBLIC "archive.gz" NDATA gzip>

DTD : exemple d’entités paramètre <!-- Compact Disk: DTD --> <!ENTITY %basiccontent "(#PCDATA)"> <!ENTITY bestever "The Beatles"> <!ELEMENT cd title, band, track+)> <!ATTLIST cd type (single | regular) #REQUIRED> <!ELEMENT title %basiccontent;> <!ELEMENT band %basiccontent;> <!ELEMENT track (song, time?)> <!ELEMENT song %basiccontent;> <!ELEMENT time %basiccontent;> <!ATTLIST song author CDATA "Paul"> Entité générale références cd3.dtd

Exemple d’entités (2) cd3.xml <?xml version="1.0"?> <!DOCTYPE cd SYSTEM "cd3.dtd" [ <!ENTITY favourite "For No One"> ] > <cd type="single"> <title>Revolver, top two</title> <band>&bestever;</band> <track> <song>Eleanor Rigby</song> <time>2:45</time> </track> <song author="Paul and John"> &favourite; </song> </cd> Entité locale référence référence cd3.xml

XML NameSpaces Collection d’identificateurs (élément ou attribut) Identifié par un préfixe et une URI Déclaration <element xmlns:prefixe=URI> Exemple <html xmlns=‘http://www.w3.org/TR/REC-html40’ xmlns:order=‘http://www.mycomp.om/order-spec’> Le premier namespace (html) est celui par défaut.

Schémas XML Recommandation du W3C (mai 2001) Types de données prédéfinis ou définis par l’utilisateur Supporte espace de noms, XPath Contraintes sur les éléments et attributs Contrôle sur les occurrences Héritage et extension Restriction sur des patterns

Schéma XML : exemple <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace=http://www.supelec.fr/TNS  xmlns=http://www.supelec.fr/TNS  elementFormDefault="qualified"> <xsd:element name="APPLI"> <xsd:complexType> <xsd:sequence> <xsd:element ref=“ENTETE" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“LISTE_FORM" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="ENTETE"> <xsd:element ref=“UID" minOccurs="1" maxOccurs="1"/> <xsd:element ref=“TITRE" minOccurs="1" maxOccurs="1"/> <xsd:element name="LISTE_FORM"> <xsd:element ref="FORMULAIRE" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element>

Schéma XML : exemple (suite) <xsd:element name="FORMULAIRE"> <xsd:complexType> <xsd:sequence> <xsd:element ref="NOM_TABLE" minOccurs="1" maxOccurs= "1"/> <xsd:element ref= "MODE" minOccurs= "1" maxOccurs= "1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name= "MODE"> <xsd:attribute ref="valeur" type="typeVmode" use="required" value="NOR"> <xsd:element ref="ATTRIBUT" minOccurs="0" maxOccurrs="unbounded"/> <xsd:simpleType name="typeVmode" base="xsd:string"> <xsd:enumeration value="NOR"/> <xsd:enumeration value="INS"/> <xsd:enumeration value="QBE"/> </xsd:simpleType> <xsd:element name="TITRE" type="xsd:string"/> <xsd:element name="UID" type="xsd:string"/> <xsd:element name="NOM_TABLE" type="xsd:string"/> <xsd:element name="ATRIBUT" type="xsd:string"/> </xsd:schema>

Référencer un schéma : exemple <?xml version="1.0"?> <APPLI xmlns ="http://www.supelec.fr/TNS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.supelec.fr/TNS/genappli.xsd"> <ENTETE> <TITRE>Mon titre</TITRE> <UID>toto@titi</UID> </ENTETE> <LISTE_FORM> <FORMULAIRE><NOM_TABLE>ESSAI</NOM_TABLE> <MODE valeur="NOR"><ATTRIBUT>A1</ATTRIBUT> <ATTRIBUT>A2</ATTRIBUT> </MODE> </FORMULAIRE> </LISTE_FORM> ... </APPLI>

Référencer un schéma Adresse.xml Adresse-schema.xsd <?xml version="1.0" Encoding = "ISO-8859-1" ?> <nomComplet>Corto Maltese</nomComplet> Adresse-schema.xsd <?xml version="1.0" Encoding = "ISO-8859-1" ? > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="nomComplet" xs:type= "string"/> </xs:schema> Adresse.xml avec la référence au schéma <nomComplet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNameSpaceschemaLocation="Adresse-schema.xsd"> Corto Maltese </nomComplet>

Schémas XML : Types simples anyURI base64Binary boolean byte (valeur entre -128 et 127) dateTime (date+heure), duration(en année, mois…) types d’attributs XML .0 (ID, IDREF,…) integer language name (nom XML) string (chaîne UNICODE), normalizeString (+fin de ligne…) token (pas d’espace avant et après) <xs:element name="nomComplet" xs:type="string"/>

Schémas XML : Attributs Pour rajouter des attributs à cet élément : type complexe <xs:element name="nomComplet"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="color" type="xs:string" default="blue" /> <xs:attribute name="langue" type="xs:language"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element

Schémas XML : Goupes d'attributs <xs:element name="nomComplet"> … <xs:extension type="xs:string"> <xs:attributeGroup ref="Nationalité"> </xs:attributeGroup> </xs:extension> </xs:element> <xs:attributeGroup name ="Nationalité"> <xs:attribute name="langue" type="xs:language"/>

Schémas XML : sequence, choice <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="typePersonne"> <xs:sequence> <xs:element name="nom" type="xs:string"/> <xs:element name="prénom" type="xs:string"/> <xs:element name="dateDeNaissance" type="xs:date"/> <xs:choice> <xs:element name="adresse" type="xs:string"/> <xs:element name="adresseElectronique" type="xs:string"/> </xs:choice> <xs:element name="téléphone" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="numeroDeTelephone" type= "xs:string"></xs:element> </xs:schema>

Schémas XML : all <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="typePersonne"> <xs:all> <xs:element name="nom" type="xs:string"/> <xs:element name="prénom" type="xs:string"/> <xs:element name="dateDeNaissance" type="xs:date"/> <xs:element name="adresse" type="xs:string"/> <xs:element name="adresseElectronique" type="xs:string"/> <xs:element name="téléphone" type="xs:string"/> </xs:all> </xs:complexType> </xs:schema> chaque élément enfant peut apparaître 0 ou 1 fois (équivalent de ? dans une DTD) ordre des éléments indifférent

Schémas XML : Indicateurs d'occurrence <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="TITRE"></xs:element> <xs:element name="SUBENTRY"></xs:element> <xs:element name="ENTETE"> <xs:complexType> <xs:sequence> <xs:element ref="TITRE" minOccurs="1" maxOccurs="2"/> <xs:element ref="SUBENTRY" minOccurs="0" maxOccurs="unbounded"> </xs:element> </xs:sequence> </xs:complexType> </xs:schema>

Les Schémas XML permettent Les imports De définir de nouveaux types simples La création de type complexe à partir de type simple La restriction (par facettes, unicité…) La création de type par dérivation, de groupe de substitution …

Schémas XML : Pour approfondir http://www.w3.org/XML/Schema

III) Requêtes et manipulation XPATH XSLT DOM et SAX Et aussi XLink, XPointer, XQuery, XQL

1) Xpath Un langage utilisé par XSLT pour localiser des éléments et/ou attributs dans un document XML http://www.w3.org/TR/xpath

XPath XPath est un langage non-XML d’expression utilisé pour Identifier des parties (chemin de localisation) de documents XML Tester des conditions booléennes Manipuler les chaînes de caractères Effectuer des calculs numériques. Communément utilisé dans les attributs match et select des éléments XSLT : <xsl:template match="/name/first"> … </xsl:template>

Chemin de localisation Les chemins de localisation sont interprétés par rapport à un contexte Ou plus simplement le nœud de l'arbre à partir duquel l'expression est évaluée. L'évaluation de l'expression définit l'ensemble des nœuds qui correspondent à la condition Cela peut être l'ensemble vide s'il n'y a pas de correspondance Un chemin de localisation consiste en une suite de localisation séparée par / ou // Un chemin peut être relatif ou absolu.

Chemins de localisation simples Le nœud racine Le slash / dénote le nœud racine <xsl:template match="/"> <!-- sélectionne le nœud racine --> </xsl:template> L'ensemble des nœuds enfants Le joker * permet de sélectionner l'ensemble des éléments nœuds du contexte courant <xsl:template match="*"> <!-- sélectionne tous les nœuds enfants -->

Sélection d'un élément Le point (.) indique le nœud courant <xsl:template match="."> <!– sélectionne le nœud courant --> </xsl:template> Le double point (..) indique le parent du nœud courant

Autres Axes de selection

Composition de chemins Utiliser / pour séparer des éléments hiérarchiques Utiliser // pour indiquer qu'un ou plusieurs éléments peuvent exister entre les slashs <xsl:template match="/catalogue/*/constructeur"> <!-- sélectionne tous les éléments contructeur --> <!-- ayant catalogue pour grand-père --> </xsl:template> <xsl:template match="profession//informatique"> <!– sélectionne tous les éléments informatique --> <!– ayant un élément ancêtre profession --> </xsl:template

Filtres Utiliser […] comme prédicat pour sélectionner un contexte de nœud particulier. Le prédicat est évalué comme une expression booléenne. Si le résultat est vrai, le nœud est sélectionné. <xsl:template match="auteur/nom[particule]"> <!-- sélectionne tous les éléments nom ayant --> <!-- auteur pour parent, et particule pour fils --> </xsl:template> <xsl:template match="/COLONNE/LIGNE[1]"> <!– sélectionne le premier élément LIGNE ayant --> <!– pour parent COLONNE à partir de la racine -->

Filtre par attributs Utiliser le signe @ suivi d'un nom d'attribut pour sélectionner un nœud particulier <xsl:template match="commande[@discount]"> <!-- sélectionne tous les éléments commande --> <!-- ayant discount pour attribut --> </xsl:template> <xsl:template match="catalogue/item[@id='210']"> <!-- sélectionne tous les éléments item --> <!-- ayant catalogue pour père et l'attribut --> <!-- id avec la valeur 210 -->

<= => > < = ! = Opérateurs logiques Utilisation des opérateurs de comparaison <= => > < = ! = Utilisation des opérateurs and et or et la fonction not(). Attention : remplacer < et > par < et > dans les documents XML ! "//profession[.='musicien']" sélectionne les éléments profession dont le contenu est musicien "//personne[@naissance<1985]" localise les éléments personne ayant un attribut naissance dont la valeur est inférieure à 1985. "//nom[prénom='Richard' and not(particule='M')]" sélectionne les éléments nom ayant un sous-élément prénom de valeur Richard mais pas de sous-élément particule de valeur M.

Prédicats numériques Opérateurs +, -, *, div, mod Fonctions round(), etc.. "round(6+1.1)" retourne 7. "(@naissance –(@naissance mod 100)) div 100)" détermine le siècle dans lequel une personne est née, avec naissance est un attribut numérique contenant la date de naissance

2) XLST : eXtensible Stylesheet Language Transformation

Processeur XSLT Effectue des transformations d’arbres sur un source XML <xsl:template select=‘exercices’> <ul> <xsl:apply-template/> </ul> </xsl:template> …. <sheet style="TD"> <exercices> <exercice title="hello world"> <text> Le but de cet exercice ... </text> … </exercice> </exercices> </sheet> <html> <body> <ul> <li>Le but de …</li> </ul> </body> </html> Processeur XSLT Fichier XML Fichier XML/XHTML

Structure d'une feuille XSLT Prologue <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSLT/Transform> Corps : suite de règles (templates) de transformation Epilogue : </xsl:stylesheet>

Template XSLT Chaque règle (template) possède deux parties: Un motif (XPath) qui identifie le/les noeud(s) XML du document qui est/sont concerné(s) par la règle et sur le(s) quel(s) il faut appliquer une action Une action qui effectue la transformation et/ou spécifie les caractéristiques de la présentation <xs:template match="un motif"> [action] </xsl:template>

Template XSLT : exemple

Pseudo élément racine Le processeur XSLT considère que l'élément de plus haut niveau du document XML a un parent désigné par "/" <?xml version="1.0"?> <top> <a/> <b/> </top>

Templates <xsl:apply-templates/> Cause le traitement successif de chacun des nœuds enfants de l'élément courant par le template approprié L'ordre des enfants est respecté <xsl:value-of select="expression"/> Extrait une chaîne de caractère du document, habituellement dans l'élément courant select="." retourne la valeur textuelle de l'élément courant select="@attrib" retourne la valeur d'un attribut de l'élément courant.

Production de texte On génère un nœud texte dynamiquement dans l'arbre résultant avec l'instruction<xsl:value-of select="expression"/> select : expression XPath de type chaîne qui produit la valeur du nœud texte <person given-name="Paul" family-name="Pierre"/> <xsl:template match="person"> <p> <xsl:value-of select="@given-name"/> <xsl:text> </xsl:text> <xsl:value-of select="@family-name"/> </p> </xsl:template> <p>Paul Pierre</p>

<xsl:apply-templates select="expression"/> Fait traiter certains enfants spécifiques (répondant au critère de sélection). Cas simple : expression=identifiant élément. Permet de faire un "réarrangement" des sous éléments

Autres Commandes XSLT <xsl:for-each>, définir un traitement itératif <xsl:if>, définir un traitement conditionnel <xsl:choose>, définir un choix <xsl:template>, <xsl:call-template>, <xsl:param> Déclarer et appeler des fonctions avec paramètres <xsl:element>, générer un élément <xsl:attribute>, générer un attribut <xsl:sort>, permet de trier

Condition(s) de branchement L’instruction xsl:if permet d'exécuter ou non certaines parties du code <xsl:if test="@nom = 'Paul’"> <xsl:text> Le spécialiste XML</xsl:text> </xsl:if> L'instruction xsl:choose permet d'exécuter différents code selon des conditions <xsl:choose> <xsl:when test="@nom='Paul'"> </xsl:when> <xsl:when test="@nom='Pierre'">L'infographiste</xsl:when> <xsl:otherwise><xsl:text>Un inconnu</xsl:text> </xsl:otherwise> </xsl:choose>

Tri Instruction xsl:sort <xsl:sort select = string-Expression lang = { nmtoken } data-type = { "text" | "number"} order = { "ascending" | "descending" } case-order = { "upper-first" | "lower-first" } />

Variable globale <xsl:variable name="Nom" select="Expression" /> Nom : nom de la variable Expression : valeur calculée de la variable <xsl:variable name="siecle" select="21"> Pour utiliser la variable dans la partie expression d'un template, la précéder d'un $ <xls:value-of select="$siecle*100 +@annee">

Exemple Xml (1/3) <?xml version= "1.1" encoding= "ISO-8859-1"?> <personnes> <personne naissance="1912" mort="1954" > <nom> <prenom>Alan </prenom> <famille>Turing</famille> </nom> <profession>informaticien</profession> <profession>cryptographe</profession> </personne> <personne naissance="1957"> <prenom> Gaston </prenom> <famille> Lagaffe </famille> <profession>archiviste </profession> </personnes>

Exemple Xslt (2/3) <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="/" > <html> <head><title>Liste de personne</title></head> <body> <xsl:apply-templates select="personnes"/> </body> </html> </xsl:template> <xsl:template match="personnes"> <table border="1"> <xsl:apply-templates select="personne"/> </table> </xsl:template><xsl:template match="personne"> <tr> <td><xsl:value-of select ="nom"/></td> <td><xsl:value-of select ="@naissance"/></td> <td><xsl:value-of select ="@mort"/></td> </tr> </xsl:stylesheet>

Exemple Résultat (3/3) <html><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Liste de personne</title> </head> <body><table border="1"><tr><td> Alan Turing </td><td>1912</td><td>1954</td> </tr> <tr><td> Gaston Lagaffe </td><td>1957</td><td></td> </table> </body> </html>

3) DOM et SAX Modèles de traitement Modèle événementiel (Event-based model) – Standard de facto : SAX (Simple API for XML) (http://www.saxproject.org) Modèle arborescent (Tree-based model) – W3C standard : DOM (Document Object Model) (http://www.w3.org/DOM) Les processeurs SAX et DOM existent pour presque tous les langages de programmation: – Java , C , C++ , Perl , TCL Tk , VB , Prolog, …

SAX : Modèle événementiel Start of Document <cv> … <infos> <email>vieille@lri.fr</email> </infos> </cv> Start of Element Événements Text Element End of Element End of Document

Arbre DOM DOC Document Node A Element Parent B C Child B1 B2 Text 3 Sibling Text 1 Text 2

Comparaison SAX et DOM Inconvénients DOM Avantages SAX construction d ’ un arbre en mémoire • multitude de petits objets (efficacité des new et du GC en Java) • très grand documents tous les éléments sont représentés le traitement du document par le programme se fait après l’analyse Avantages DOM navigation dans un arbre d’éléments Avantages SAX le traitement du document par le programme se fait en cours d’analyse (efficacité) seuls les éléments pertinents sont traités Inconvénients SAX écriture plus complexe des fonctions de callback pour traiter des structures imbriquées

IV) Applications Exemple Parseurs et interfaces de programmation Langages de représentation Langages de programmation Protocoles d'échanges

XSLT XML xml InDesign InDesign Papier ou pdf ebook Xslfo/pdf site web xhtml microsite XSLT xslfo/pdf reader d’ebook XML Epub, mobipocket télé phone Txt/mp3 Tout support de lecture mp3 XML TEI/Docbook Entrée systèmes informatiques Moteur de transformation Source Format cible Support cible © LIGARAN 2010

Parseurs et interfaces de programmation (API) MSXML - Microsoft Core XML Services, le parseur XML Microsoft, 2000-2006, intégré au système d'exploitation Windows, accessible aux langages Microsoft, notamment en JavaScript sur le navigateur Internet Explorer. libxml2 - Le processeur XML libre du système d'exploitation linux, accessible en C , Python, PHP, et en Ruby Xerces - XML Java Parser, le parseur XML par défaut d'une machine virtuelle Java, accessible en Java Expat - Le parseur XML de James Clark, notamment embarqué par les navigateurs mozilla (firefox). VTD-XML

Langages de représentation OpenDocument - tous les documents bureautiques, OpenOffice.org, 2001. Word - le format natif de Microsoft Word est en XML depuis sa version 2003. XSL-FO - eXtensible Stylesheet Language - Formatting Objects, langage extensible de stylage - formatage d'objets, W3C, 2001. SVG - Scalable Vector Graphics, graphiques vectoriels 2D, W3C, 2003. MathML - formules mathématiques, W3C, 1999, 2001, 2003. SMIL - Synchronized Multimedia Integration Language, Intégration multimédia, W3C, 1998, 2005. X3D - 3D multimédia, consortium Web3D.de documents XML côté serveur.

Langages de programmation XQuery - requête et transformation XML, W3C, 2005. MXML, Flex - définition d'interface, Macromedia. Apache XSP - eXtensible Server Pages - génération de documents XML côté serveur. XUL - XML-based User interface Language, définition d'interface, Mozilla, 2000. ANT - scripts de compilation, ASF. Servlet - serveur d'application Java, configuration et logique fonctionnelle, Sun Microsystems. Log4j - log for Java, configuration d'une bibliothèque d'historique, 1996, © 1999-2006, ASF. UIML - User Interface Markup Language, définition d'interface, OASIS, 1997. XAML - définition d'interface, Windows Vista, 2006.

Protocoles d'échanges XForms - formulaires web (W3C) OAI - Open Archive Initiative Protocole Archives ouvertes, 2000, 2002 (OAI) SOAP - RPC par HTTP (W3C) WSDL - Services web (W3C) WebDAV - Lecture/Écriture distante par HTTP (IETF) Jabber/XMPP - Messagerie instantanée et présence, multimédia (IETF)