XML Les documents semi-structurésst XML - extensible Markup Language g XSL(T) - extensible Stylesheet Language XSD XML Schema DTD Document Type Definition Ivan Madjarov, IUT-R&T, 2006-2008
XML extensible Markup Language g XML dérive d'un langage développé dans les années 80, le SGML. SGML est très complexe à apprendre et à utiliser quotidiennement. Une version allégée du SGML, le HTML a été développée les années 90; Le HTML malgré de nombreuses adaptations, ti ne pouvait pas être étendu à l'infini, avec l'augmentation des besoins des développeurs. C'est alors ao que fut créé le XML. IvMad, 2008 2
XML extensible Markup Language g XML - langage extensible de balisage Standardisé par W3C 1.0 du 10 février 1998 1.1 février 2004 mise à jour pour utiliser Unicode 3 format public métalangage - un langage qui permet de définir d'autres langages sous-ensemble de SGML pour une utilisation sur le Web IvMad, 2008 3
XML extensible Markup Language g XML permet de concevoir votre langage de balisage personnalisé pour un ensemble de classes de documents un langage défini par XML est appelé vocabulaire XML ou application XML le langage de balisage créé est défini par une définition de type de document (DTD) ou XML Schema. XML est utilisé pour échanger des données entre applications, stocker les préférences d'applications, créer des documents pour le Web IvMad, 2008 4
XML extensible Markup Language g Le web est confronté à deux problèmes: HTML n'est pas extensible, il ne peut pas répondre aux besoins spécifiques de tous les domaines (mathématiques, chimie, musique, astronomie...) et ne définit plus le contenu du document SGML qui permettrait de définir de nouveaux langages de balisage spécifiques est très complexe IvMad, 2008 5
XML extensible Markup Language g Les applications XML IvMad, 2008 6
La galaxie de standards XSchema Schémas de documents XSL Feuilles de styles SAX API de programmation événementielle DOM API de programmation objet SOAP Protocole Web Services RDF Description de ressources Web ebxml Standards de e-commerce Xxx Standards par métiers Xxx ebxml XSchema RDF XSL XML XQuery DOM SAX SOAP IvMad, 2008 7
XML extensible Markup Language g XML permet de séparer le fond de la forme. Par exemple: pour produire un document HTML à partir de données en utilisant le format XML, il est nécessaire d'écrire au moins deux fichiers, le premier contenant les données à mettre en forme, le second les informations nécessaires à cette mise en forme. IvMad, 2008 8
XML extensible Markup Language g Un document XML peut ainsi prévoir plusieurs cibles: l'écran d'un téléphone portable, l'écran d'un ordinateur de bureau, Collection dans une base de données, Une application logicielle Échange d'informations sur le Web, etc. Effectuer des sélections par tri, Générations automatiques de tables des matières et bien d'autres fonctions. IvMad, 2008 9
XML extensible Markup Language g L'environnement technologique XML est composé de trois fichiers: un fichier pour définir les balises auxquelles le document XML pourra avoir recours (DTD ou Schema). Le document contenant les données elles- mêmes, c'est-à-dire le document XML. Le document contenant les informations de mise en forme, permettant de produire un fichier dans le format de sortie voulu: une feuille XSLT (extensive Stylesheet Language g Transformations). ) IvMad, 2008 10
XML extensible Markup Language g XML est destiné à décrire le contenu du document, pas son affichage (les feuilles de style CSS et XSL gèrent l'affichage). XML est flexible, on peut définir ses balises, et les utiliser dans un ou plusieurs documents. le XML document ne sera affiché que s'il est bien formé et validé par une DTD ou XML Schema. IvMad, 2008 11
XML extensible Markup Language g IvMad, 2008 12
XML extensible Markup Language g Les technologies XML CSS, permet de définir l'affichage d'un document XML. XSL 3 parties : XSLT, langage évolué pour transformer des documents XML en des documents sous différents formats de sortie XPath, langage pour désigner des parties d'un document XSL-FO, langage pour produire un document imprimable et en format PDF Xlink pour créer des liens entre fichiers XML XPointer pour pointer sur des parties d'un document XML. XML Base pour définir l'url de base d'un document. IvMad, 2008 13
XML extensible Markup Language g DOM (Document Object Model), définit des interfaces pour manipuler des documents XML structurés. namespaces (domaines de noms) pour distinguer les noms utilisés dans les documents XML. XForms pour décrire des formulaires Web. XQuery, langage pour extraire des données de documents XML ou de collections de fichiers XML comme on interroge des bases de données. Schema, alternatives aux DTD qui permettent de décrire un document de manière plus détaillée (types de données pour les dates, les entiers,..., possibilité de donner des bornes aux valeurs). IvMad, 2008 14
XML extensible Markup Language g MathML (Mathematical Markup Language) notation mathématique sur le web CML (Chemical Markup Language) pour la publication Internet des formules chimiques, de molécules, des équations. SVG (Scalable Vector Graphics) langage de balisage d'information graphique vectorielle. SMIL (Synchronized Multimedia Integration Language) pour la création multimédia, il spécifie comment et quand des éléments multimédia peuvent apparaître dans une page web. Par exemple on peut dire que sur la page le texte apparaît suivi d'une série d'images qui sont accompagnées d'une musique. WML (Wireless Markup Language) le langage de balisage pour l'internet mobile. IvMad, 2008 15
XML extensible Markup Language g Un document XML est composé d'éléments ou blocs qui représentent t la structure logique du document. Ces éé éléments peuvent être: non vides : une balise ouvrante, un contenu, et/ou d'autres éléments et se terminent par une balise fermante. <titre>mort sur le Nil</titre> vides : ils ne contiennent rien, aucun texte, aucun élément. En XML ils s'écrivent avec un / à la fin de la balise ouvrante ou sous la forme d'une paire de balises vide :<HR/>, <BR/> IvMad, 2008 16
XML extensible Markup Language g Chaque élément présente des caractéristiques appelées attributs : <titre type="policier"> p Mort sur le Nil </titre> <PRODUIT NOM="T-shirt" TAILLE="XL" COULEUR="BLANC" /> IvMad, 2008 17
XML extensible Markup Language g DTD (Document Type Definition) définissent les éléments et les règles d'utilisation (noms des éléments, attributs possibles pour un éé élément, imbrications). Cependant des documents XML peuvent ne pas avoir de DTD. Si un document a une DTD associée et qu'il se conforme à cette DTD, il est dit valide. S'il n'a pas de DTD et qu'il suit les règles définies par XML (par exemple : ses éléments sont correctement t imbriqués) i il est bien formé. IvMad, 2008 18
XML extensible Markup Language g <?xml version="1.0" encoding="iso-8859-1"?> <!-- La ligne ci-dessus est le prologue --> <!-- Élément racine --> <biblio> <!-- Premier enfant --> <livre> <!-- Élément enfant titre --> <titre>les Misérables</titre> <auteur>victor Hugo</auteur> <nb_tomes>3</nb_tomes> </livre> <livre> <titre>l'assomoir</titre> <auteur>émile Zola</auteur> </livre> <livre lang="en"> <titre>david Copperfield</titre> <auteur>charles Dickens</auteur> <nb_tomes>3</nb_tomes> </livre> </biblio> IvMad, 2008 19
XML extensible Markup Language IvMad, 2008 20
XML extensible Markup Language g <?xml version="1.0"?> <bibliotheque> <livre> <titre>n ou M</titre> <auteur> <nom>christie</nom> <prenom>agatha</prenom> </auteur> <ref>policier-c-15</ref> </livre> <livre> <titre>le chien des Baskerville</titre> <auteur> <nom>conan Doyle</nom> <prenom>arthur</prenom> </auteur> <ref>policier-d-3</ref> </livre> </bibliotheque> IvMad, 2008 21
XML extensible Markup Language IvMad, 2008 22
XML extensible Markup Language Un document bien formé (sans DTD) est affiché par le navigateur en visualisant sa structure. Visualisation avec une feuille de style CSS où est définie l interprétation des éléments du document XML. <?xml version="1.0"?> <?xml-stylesheet type="text/css" href="biblio.css"?> <bibliotheque>... </bibliotheque> IvMad, 2008 23
XML extensible Markup Language La feuille de style pour le document livre { } display: block; position: relative; left: 50; top:100; margin-left:10pt; margin-bottom: 5pt; font-family: "Verdana"; font-size: 12pt titre { margin-right:10pt; color:blue; font-family: "Verdana"; } auteur { margin-right:10pt; font-family: "Verdana"; } ref { color:red; font-family: "Verdana"; } IvMad, 2008 24
XML extensible Markup Language IvMad, 2008 25
Structure d'une feuille de style Visualisation avec une feuille de style XSL <?xml version="1.0"?> <?xml-stylesheet type="application/xml" href="biblio.xsl"?> <bibliotheque>... </bibliotheque> IvMad, 2008 26
XML extensible Markup Language <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html"/> html <xsl:template match="/"> <html> <head> <title>ma bibliotheque</title> <style type="text/css"> th {background-color:silver;} td {border-style:solid; border-width:1px;} </style> </head> <body> <H2>Bibliotheque</H2> <table> <tr> <th>titre</th> <th>auteur</th> <th>ref.</th> </tr> <xsl:for-each select="bibliothèque/livre"> <tr> <td><xsl:value-of select="titre"/></td> <td><xsl:value-of select="concat(auteur/nom, ' ', auteur/prénom)"/></td> <td><xsl:value-of select="ref"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet> IvMad, 2008 27
XML extensible Markup Language IvMad, 2008 28
XML extensible Markup Language IvMad, 2008 29
Structure d'une feuille de style XSL est une application XML, une feuille de style XSL est donc un document XML. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/ XSL/Transform"> Modèles </xsl:stylesheet> L'élément racine contient des modèles (templates) pour l'affichage du document XML IvMad, 2008 30
Structure d'une feuille de style Le modèle est appliqué au nœud spécifié par l'attribut match de l'élément lélément template <xsl:template match="noeud_ cible"> action </xsl:template> IvMad, 2008 31
Structure d'une feuille de style Un modèle contient deux types d'éléments des éléments XML bien formés pour représenter les éléments html des éléments XSL xsl:value-of qui permet d'accéder au contenu des éléments du document XML l'attribut select indique le nom de l'élément XML xsl:for-each permet de parcourir tous les éléments qui portent le nom défini dans select xsl:sort permet de définir i l'ordre dans lequel l les éléments seront affichés <xsl:for-each select="bibliotheque/livre"> <xsl:sort select="auteur/nom" order="descending"/> <xsl:sort select="titre" order="ascending"/> IvMad, 2008 32
Structure d'une feuille de style Il est possible de n'extraire qu'une partie du document XML. Dans le select il faut utiliser [expression]. L'expression peut comporter des opérateurs, des fonctions, des chemins d'éléments. Extraire les livres dont le nom de l'auteur est différent de Christie i : <xsl:for-each select="bibliotheque/livre[auteur/nom /!= 'Christie']"> IvMad, 2008 33
Structure d'une feuille de style Il est possible d'utiliser des fonctions XPath pour filtrer starts-with(chaine1, chaine2) : retourne vrai si chaine1 commence par chaine2, ends-with(chaine1, chaine2) : retourne vrai si chaine1 se termine par chaine2, contains(chaine1, chaine2) : retourne vrai si chaine1 contient chaine2, <xsl:for-each select="bibliotheque/livre[contains(titre, 'Le') or contains(titre, 'un')]"> <xsl:for-each select="bibliotheque/livre[@type='policier']"> IvMad, 2008 34
Exercice IvMad, 2008 35
Exercice <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet type="text/xsl" text/xsl href="catalog.xslt"?> <catalogue xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="catalog.xsd"> <PRODUIT NOM="T T-shirt shirt" TAILLE="XL" COULEUR="BLANC" QUANTITE="2" PRIX="56,43" SOLDE="75%" /> <PRODUIT NOM="T-shirt" TAILLE="L" COULEUR="ROUGE" QUANTITE="3" PRIX="12,45" SOLDE="50%"/> <PRODUIT NOM="Chemise" TAILLE="40" COULEUR="JAUNE" QUANTITE="1" PRIX="20,10" SOLDE="25%"/> <PRODUIT NOM="Chemise" TAILLE="42" COULEUR="BLEUE" QUANTITE="2" PRIX="12,55" SOLDE="50%"/> <PRODUIT NOM="Chemise" TAILLE="40" COULEUR="JAUNE" QUANTITE="4" PRIX="14,99" SOLDE="75%"/> <PRODUIT NOM="Chemise" TAILLE="40" COULEUR="JAUNE" QUANTITE="1" PRIX="15,50" SOLDE="50%"/> <PRODUIT NOM="Blouson" TAILLE="50" COULEUR="MARRON" QUANTITE="1" PRIX="156,50" SOLDE="25%"/> </catalogue> IvMad, 2008 36
Exercice Grammaire XSD (XML Schema) <?xml version="1.0" encoding="utf-8"?> <xsd:schema targetnamespace = "http://localhost/perso/monexemple" xmlns:xsd = "http://www.w3.org/2001/xmlschema"> /2001/XMLS h " <xsd:element name="produit"> <xsd:complextype> <xsd:all> <xsd:attribut name="taille" type="xsd:string" /> <xsd:attribut name="couleur" type="xsd:string" /> <xsd:attribut name="quantite" type="xsd:string" /> <xsd:attribut name="prix" type="xsd:string" /> <xsd:attribut name="solde" type="xsd:string" /> </xsd:all> </xsd:complextype> </xsd:element> </xsd:schema> IvMad, 2008 37
Exercice <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="html"/><xsl:template match="catalogue"> <html><head></head><body> <H2>Liste des articles</h2><table BORDER="1" CELLPADDING="5"> <THEAD><TH>Nom</TH><TH>Taille</TH><TH>Couleur</TH> <TH>Quantite</TH><TH>Prix</TH><TH>Solde</TH></THEAD> <xsl:for-each select="produit"><tr ALIGN="CENTER"> <TD><xsl:value-of select="@nom" /></TD>/ <TD><xsl:value-of select="@taille" /></TD> <TD><xsl:value-of select="@couleur" /></TD> <TD><xsl:value-of l select="@quantite" /></TD> <TD><xsl:value-of select="@prix" /> </TD> <TD><xsl:value-of select="@solde" /></TD> </TR></xsl:for-each></TABLE></body></html></xsl:template> </xsl:stylesheet> IvMad, 2008 38
XML Schema Un schéma d'un document définit: les éléments possibles dans le document les attributs associés à ces éléments la structure t du document et les types de données Le schéma est spécifié en XML pas de nouveau langage balisage de déclaration domaine spécifique xsd: Présente de nombreux avantages structures de données avec types de données extensibilité par héritage et ouverture analysable par un parseur XML standard d IvMad, 2008 39
Objectifs des schémas Reprendre les acquis des DTD Plus riche et complet que les DTD Permettre de typer les données Eléments simples et complexes Attributs simples Permettre de définir des contraintes Existence, obligatoire, optionnel Domaines, cardinalités, références Patterns,... S'intégrer à la galaxie XML Espace de noms Infoset (structure d'arbre logique) IvMad, 2008 40
Le modèle des schémas Déclaration des éléments et attributs Nom Typage similaire à l'objet Spécification de types simples Grande variété de types Génération de types complexes Séquence (Sequence) Choix (Choice) Tas (All) IvMad, 2008 41
Les types simples (1) string integer Confirm this is electric -126789, -1, 0, 1, 126789 normalizedstring positiveinteger Confirm this is electric 1, 126789 token negativeinteger Confirm this is electric -126789, -1 byte nonnegativeinteger -1, 126 0, 1, 126789 unsignedbyte nonpositiveinteger 0, 126-126789, -1, 0 base64binary int GpM7-1, 126789675 hexbinary unsignedint 0FB7 0, 1267896754 IvMad, 2008 42
Les types simples (2) long -1, 12678967543233 unsignedlong 0, 12678967543233 short -1, 12678 unsignedshort 0, 12678 decimal -1.23, 0, 123.4, 1000.00 float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN double -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN boolean true, false 1, 0 time 13:20:00.000, 13:20:00.000-05:00 datetime 1999-05-31T13:20:00 31T13:20:00.000-05:00 duration P1Y2M3DT10H30M12.3S date 1999-05-31 gmonth --05-- gyear 1999 IvMad, 2008 43
Les types simples gyearmonth 1999-02 gday ---31 gmonthday --05-31 Name shipto QName po:usaddress NCName USAddress anyuri http://www.example.com/, / http://www.example.com/do c.html#id5 language en-gb, en-us, fr ID "A212" IDREF "A212" IDREFS "A212" "B213" ENTITY ENTITIES NOTATION NMTOKEN, NMTOKENS US Brésil Canada Mexique IvMad, 2008 44
Commandes de base xsd: element : association d'un type à une balise attributs name, type, ref, minoccurs, maxoccurs,... attribute t : association d'un type à un attribut t attributs name, type type simple : les multiples types de base entier, réel, string, time, date, ID, IDREF,, extensibles par des contraintes type complexe : une composition de types définit une agrégation d'éléments typés IvMad, 2008 45
Les types complexes Définition d'objets complexes <sequence> : collection ordonnée d'éléments typés <all> : collection non ordonnée d'éléments typés <choice>: choix entre éléments typés Exemple <xsd:complextype name="fraddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" "t t"t type="xsd:string"/> t "/ <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute te name="country" ntr " type="xsd:nmtoken" fixed="fr"/> </xsd:complextype> IvMad, 2008 46
Héritage de types Définition de sous- Exemple : types par héritage Par extension : ajout d'informations i Par restriction : ajout de contraintes Possibilité de contraindre la dérivation <complextype name="adressepays"> <complexcontent> <extension base="adresse"> <sequence> <element name="pays" type="string"/> </sequence> </extension> </complexcontent> t </complextype> IvMad, 2008 47
Les patterns Contraintes sur type simple prédéfini Utilisation d'expression régulières Similaires à celles de Perl Exemple <xsd:simpletype name="sku"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[a-z]{2}"/> </xsd:restriction> </xsd:simpletype> IvMad, 2008 48
Le langage XPATH Syntaxe et sémantique partagées par d autres outils (XSLT, Xpointer ) But : adresser les différentes parties d un document XML Représentation en forme d arbre Type de nœuds : Racine, éléments, texte, attributs, espace de noms, instruction de traitement, commentaires Adressage type système de fichiers IvMad, 2008 49
extensible Style Language g Transformation XSL XML Processeur XSLT XML Ou texte Ou HTML IvMad, 2008 50
Feuille de style XSLT Transformer un arbre Feuille de style = ensemble de règles Association motif / modèles Objectif : Production de texte Personnalisation d un document Réorganisation IvMad, 2008 51
Feuille de style CSS Cascading Style Sheet Langage très simple (non XML) CSS1 : décembre 96 CSS2 : mars 98 Encore mal supporté par les browsers (sauf Opera 4.02) Liste de règles qui décrit les éléments Pour chaque élément Couleurs et image Polices de caractère Textes Boites Classification (style de listes, affichage par bloc ) IvMad, 2008 52
XSL-FO (Formatting Objects) Langage g XML pour formater Finalisé par W3C fin Octobre 2001 Similaire à HTML/CSS mais beaucoup plus puissant Outils permettant de générer PDF (FOP) IvMad, 2008 53
Principe de XSL-FO Découpage par pages Notion de boites Contenu (texte, espace, images, objets ) Type (région, bloc, ligne, boite en-ligne, ) Hiérarchie Caractéristiques (position, fontes ) Pages maîtres Séquences de pages Numérotation IvMad, 2008 54
XLINK Lien externe vers autre document Lien simple HREF classique Lien étendu Personnaliser les liens Localisation des ressources distantes Mécanisme de traversée Texte facilitant l emploi Ressources locales associées En cours de stabilisation IvMad, 2008 55
XPointer But : adresser un fragment de ressource Même arbre que processeur XSL Utilisation de XPath En cours de stabilisation IvMad, 2008 56
API SAX Application Programming g Interface Mécanismes standardisés de manipulation de documents XML API événementielle Processeur analysant le document Association d un gestionnaire de document Activation des méthodes durant l analyse Simple et efficace Implémentations JAVA (Xerces), C, C++ IvMad, 2008 57
API DOM SAX simple mais parfois limité (modification de structure impossible) Analyse puis création d une structure t Adaptable (mais plutôt orienté objet ) Spécification en IDL (OMG) Implémentations en Java, javascript IvMad, 2008 58
XML et le Web Doc XML Feuille XSLT IE Netscape Opera Téléphones WAP HTML +PDF HTML +CSS WML Processeur XSLT Analyseur XML Processeur XSLFO Servlet ou CGI Serveur web Feuille XSLFO IvMad, 2008 59