XML : concours d’acronymes ou futur standard ? Bilan de l’école Franco-Maghrébine IN2P3 Jean-Michel Gallone 7.12.2001
XML : la famille Né : fin 96 Père : W3C Petit-fils de SGML (ISO-1986) Cousin d’HTML Reconnu le : 10/02/98 – version 1.0 Descendance – XHMTL, MathML, …
X comme eXtensible HTML : nombre fini de balises XML : possibilité de définir les balises HTLM : balises pour formater XML : balises pour structurer DTD ou Schéma pour définir les balises Pas de guide des balises disponibles
M comme Markup Tous les éléments sont repérés au moyen de balises Les balises servent à structurer le document
L comme Language Langage de description de documents Règles à respecter Parsing…
Document XML Données binaires Données textuelles Norme Unicode Marques : Balises de début, de fin, références, commentaires, instructions de traitement Définition de Type de Document
Élément Composant de base Identifié par un nom Délimité par une balise ouvrante et une balise fermante <AUTEUR> Victor Hugo </AUTEUR> Ou élément vide <PHOTO Source= "victor.gif" /> Contenu textuel, éléments ou mixte Notion de base Un nom valide est compose de chiffres lettres, « - », «_», « : » et « . » Doit commencer par une lettre ou blanc souligné.
Les attributs Inclus dans la balise ouvrante d’un élément Composé d’un nom et d’une valeur <AUTEUR NE="1802" MORT="1885" > Victor Hugo </AUTEUR> Autre notion essentielle
Exemple XML <?xml version="1.0" Encoding= "ISO-8859-1" ? > <memo langue="fr" urgence= "maximale"> <to> Enfants Sages </to> <from> Père Noël </from> <date> 7/12/2001 </date> <body> Livraison confirmée <jour>25/12</jour> <heure>0h00</heure> <lieu> cheminée</lieu> </body> </memo>
…et aussi <!-- des commentaires --> Des entités externes/internes, analysables ou non & " > < <![CDATA [ …tout et n’importe quoi… …0x01265423deadbeef49653453462… ]]>
Règles syntaxiques Commencer par une déclaration XML Balisage sensible à la casse La valeur des attributs doit être quotée Balises non vides appariées <br></br> Balises vides fermées <br/> Les élèments ne doivent pas se chevaucher <jour> <mois> </jour> </mois> interdit Un élément doit encapsuler tous les autres Ne pas utiliser les caractères < et & seuls Déclaration Pas obligatoire mais conseillée
Type de document (Doctype) Permet de valider un document XML Grammaire Définir la DTD <!DOCTYPE … > Interne / externe <?xml version= "1.0" standalone = "yes" > Publique / privée
Exemple de DTD <?xml version="1.0" Encoding= "ISO-8859-1" ? > <!DOCTYPE memo [ <!ELEMENT memo (to, from, date, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT date (#PCDATA)> <!ELEMENT body (#PCDATA|jour|heure|lieu)> <!ELEMENT jour (#PCDATA)> <!ELEMENT heure (#PCDATA)> <!ELEMENT lieu (#PCDATA)> <!ATTLIST memo langue CDATA "Alsacien"> <!ATTLIST memo urgence CDATA "normal"> ]> Sert a definir les differents elements
Spécifications éléments (#PCDATA) Parsed Character DATA (ELT) 1 fois ELT (ELT1,ELT2) Séquence (ELT1|ELT2|…) Choix ELT? 0 ou 1 fois ELT ELT+ au moins 1 fois ELT ELT* 0 ou plusieurs fois ELT () groupe de sous éléments ANY n’importe quoi EMPTY rien Type des elements definis dans la DTD
Spécifications d’attributs CDATA données textuelles NMTOKEN nom XML valide NMTOKENS noms XML valides (val-1|val-2|…val-n) liste de valeurs ID identificateur unique IDREF valeur d’un ID IDREFS valeurs d’Ids ENTITY entité externe non analysable ENTITIES entités externes non analysables Types des attributs definis dans la DTD
Limites des DTD Syntaxe non XML Pas de type (entier/réel/chaînes…) Pas de notion d’espace de nom … Mai 2001, le W3C défini les Schémas XML Syntaxe XML types (entier/réel/chaînes…) Notion d’espace de nom
XSD « poupées russes » <?xml version="1.0" Encoding= "ISO-8859-1" ? > <xsd:element name="memo"> <xsd:complexType> <xsd:sequence> <xsd:element name="to" type="xsd:string" /> <xsd:element name="from" type="xsd:string" /> <xsd:element name="date" type="xsd:date" /> <xsd:element name="body" type="xsd:string" > <xsd:element name="jour" type="xsd:date" /> <xsd:element name="heure" type="xsd:time" /> <xsd:element name="lieu" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:attribute name="langue" type="xsd:string" use="optional" /> <xsd:attribute name="urgence" type="xsd:string" use="required" />
XSD « catalogue » Définition des éléments (classe) <xsd:element name="to" type="xsd:string" /> Référence à l’élément (instance) <xsd:element name="memo"> <xsd:complexType> <xsd:sequence> <xsd:element ref ="to"/> …etc Permet de factoriser
XSD « types nommés » Définir de nouveaux types Restrictions <xsd:simpleType name="TypeISBN"> <xsd:restriction base = "xsd:string" > <xsd:pattern value = "[0-9]{10}" /> </xsd:restriction> </xsd:simpleType> Union : autre type de dérivation Groupes : définir des types complexes
…vers l’orientation objet Groupe de substitution Éléments abstraits (classes abstraites) Dérivation de type (heritage) Restriction, extension (surcharge) Modularité des schémas Gestion des espaces de noms
http://www.xml.org DTD deja existantes…
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
Arbre de noël
localisation Chemin relatif/absolu Axe de localisation Test de nœuds /memo/body/lieu Axe de localisation self, child, desecendant, parent, ancestor, … Test de nœuds text(), comment(), … Prédicats last(), position(), count(), name(), … /memo//[lieu="cheminée"]
eXtensible Style Language Transformation XSL Processeur XSLT XML XML Ou texte Ou HTML
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 … Mécanisme très puissant mais assez technique…
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…)
CSS dans XML (ou HMTL) But : présentation vers browser Via instruction de traitement <?xml-stylesheet type = "text/css" href="styleCD.css" ?> href désigne l’URI de la feuille
XSL-FO (Formatting Objects) Langage XML pour formater Finalisé par W3C fin Octobre 2001 Similaire à HTML/CSS mais beaucoup plus puissant Outils permettant de générer PDF (FOP) Devrait plaire aux utilisateurs Latex…
Principe de XSL-FO Découpage par pages Notion de boites Pages maîtres 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 …
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…
XPointer But : adresser un fragment de ressource Même arbre que processeur XSL Utilisation de XPath En cours de stabilisation…
API SAX Application Programming 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++
API DOM - Document Object Model SAX simple mais parfois limité (modification de structure impossible) Analyse puis création d’une structure Adaptable (mais plutôt orienté objet…) Spécification en IDL (OMG) Implémentations en Java, javascript IDL = Interface definition language
XML et le Web (1) IE Netscape Servlet ou CGI Serveur web Doc XML Feuille XSLT IE Netscape Serveur web Servlet ou CGI Processeur XSLT Analyseur XML HTML
XML et le Web (2) IE Netscape Servlet ou CGI Serveur web Opera Doc XML Feuille XSLT IE Netscape Serveur web Servlet ou CGI Processeur XSLT Analyseur XML HTML Opera HTML +CSS Téléphones WAP WML
XML et le Web (3) IE Netscape Servlet ou CGI Serveur web Opera Doc XML Feuille XSLT IE Netscape Serveur web Feuille XSLFO Servlet ou CGI Processeur XSLT Analyseur XML HTML +PDF Processeur XSLFO Opera HTML +CSS Téléphones WAP WML
XML et le Web (4) (Big) Browser Serveur web Doc XML Feuille XSLT Processeur XSLT Serveur web Feuille XSLFO Processeur XSLFO XML XSLT XSLFO Analyseur XML
Futur standard ? Adopté par Microsoft et IBM… Interface avec nombreux logiciels Oracle servlet XSQL, IFS Serveur Apache cocoon Framemaker génère CSS+XML Nombreux schémas à succès MathML, SVG Déjà beaucoup d’applications…
Interro XML W3C DTD XSD XPATH XSLT CSS URI XSL-FO XLINK XPOINTER API DOM IDL eXtensible Markup Language World Wide Web Consortium Définition de Type de Document XML Schema Document XML Path eXtensible Style Language Transformation Cascading Style Sheet Universal Ressource Information eXtensible Style Language Formatting Objects XML Link XML Pointer Application Programming Interface Document Object Model Interface Definition Language