400 likes | 474 Views
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, ….
E N D
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
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
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 <PHOTOSource= "victor.gif"/> • Contenu textuel, éléments ou mixte
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>
Exemple XML <?xml version="1.0" Encoding= "ISO-8859-1" ? > <memolangue="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
Type de document (Doctype) • Permet de validerun 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"> ]>
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
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 ENTITIESentités externes non analysables
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:complexType> <xsd:sequence> <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:sequence> <xsd:attribute name="langue"type="xsd:string" use="optional" /> <xsd:attribute name="urgence"type="xsd:string" use="required" /> </xsd:complexType> </xsd:element>
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
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
localisation • Chemin relatif/absolu • /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 • …
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 • 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
XML et le Web (1) Doc XML Feuille XSLT IE Netscape Serveur web Servlet ou CGI Processeur XSLT Analyseur XML HTML
XML et le Web (2) 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) 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) Doc XML Feuille XSLT (Big) Browser 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èreCSS+XML • Nombreux schémas à succès MathML, SVG • Déjà beaucoup d’applications…
Interro 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 • XML • W3C • DTD • XSD • XPATH • XSLT • CSS • URI • XSL-FO • XLINK • XPOINTER • API • DOM • IDL