D.U Introduction à XML Université Paris II & LRI Michel de Rougemont 1.Introduction à XML 2.DTD 3.XSL : style généralisant CSS 4.XSLT : transformations darbres 5.Propriétés régulières et automates darbres
D.U XML eXtensible Markup Language "successeur" de HTML héritier de SGML Standard déchange (EDI) Documents structurés Principe de base. Séparer –Structure d un document: DTD –Contenu: arbre déléments –Affichage de ce que lon souhaite XSL,XSLT, XQuery
D.U Le monde XML Historique –"successeur" de HTML –héritier de SGML Structure DTD –Espaces Nominaux Contenu du document XSL: style daffichage –XSLT –XPATH Permet de rechercher une information en utilisant la structure. Valeur du document?
Exemple de document Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: Fax: Objet: ben quoi? Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Veuillez agréer patati patata vachement sincères. signature Pied de page Logo Date Destinataire Corps Pied de page En-tête Objet Salutation Formule de politesse Signature
Représentation XML … 30 Nivose 2004 Monsieur, Premier paragraphe et là le deuxième &abrev-adresse; Mr Schnock rue des églantiers Saint Glin bla bla …
D.U Points importants La représentation de cette lettre en XML ne comporte aucune indication sur sa mise en page. De nombreuses propriétés graphiques ou typographiques sont absentes du source XML. Ces propriétés seront définies par l'intermédiaire d'une feuille de style. Une feuille de style est un ensemble de règles pour spécifier la réalisation concrète d'un document sur un média particulier.
D.U Exemples de documents XML Bonjour! Bonjour! Bonjour!
D.U Structure dun document Un document XML se compose –dun prologue, éventuellement vide –dun arbre déléments –de commentaires et dinstructions de traitement, facultatifs Bonjour!
D.U Prologue Une déclaration XML, facultative –de la forme: –indique au processeur qui va traiter le document: la version du langage XML utilisée le codage de caractères utilisé l'existence de déclarations extérieures au document Une déclaration de type de document, facultative –de la forme –indique la structure particulière à laquelle doit se conformer un document
D.U Structure d'une DTD Une DTD peut comprendre deux parties –une partie externe la partie externe est définie en dehors du document. Elle est référencée par une référence DTD, le plus souvent un URL. Ce mécanisme permet d'assurer une réutilisation de DTDs souvent utilisées. –une partie interne utilisée pour spécialiser une DTD externe générique ou redéfinir certains types d'éléments
D.U Structure d'un élément (1) Un élément est de la forme: contenu est la balise d'ouverture est la balise de fermeture. Sa présence est obligatoire, à l'exception très particulière des éléments vides, notés indifféremment ou. contenu est le contenu d'un élément. Il peut s'agir: attr='valeur' représente un ensemble éventuellement vide d'attributs, c'est à dire de paires (nom,valeur). Un élément ne peut posséder qu'un seul attribut de nom donné. – de vide – de texte – d'autres éléments – d'une imbrication de texte et d'éléments – d'instructions de traitement – de commentaires
D.U Structure d'un élément (2) Un nom d'élément est une suite non vide de caractères pris parmi –les caractères alphanumériques –le tiret-souligné (undescore) –le signe moins –le point –le caractère deux-points (:) est utilisable, mais il a un sens particulier qui doit satisfaire les contraintes suivantes –le premier caractère doit être alphabétique ou un tiret- souligné –les trois premiers caractères ne doivent pas former une chaîne dont la représentation en lettres minuscules est "xml". Exemples de noms d'éléments correctsincorrects _ toto Nom_société xsl:rule X catalogue XmlSpécififica tion nom société
D.U Syntaxe des attributs Un attribut est une paire nom='valeur' qui permet de caractériser un élément. Un élément peut avoir plusieurs attributs. Dans ce cas, les paires nom='valeur' seront séparées par un espace. Exemples – Le nom d'un attribut obéit aux mêmes règles que le nom d'un élément La valeur d'un attribut est une chaîne encadrée par des guillemets ( " ) ou des apostrophes simples ( ' ).
D.U Arbre d'éléments Dire qu'un document XML contient un arbre d'éléments, c'est imposer les contraintes suivantes: –Il existe dans un document un et un seul élément père qui contient tous les autres. C'est l'élément racine du document. –Tout élément distinct de la racine est totalement inclus dans son père. Il ne peut donc y avoir recouvrement partiel. Ainsi: bla bla bla n'est pas une structure XML.
D.U Documents bien formés Un document est dit bien formé si: –son prologue ne contient pas de déclaration de type de document –il contient un arbre d'éléments –Exemple Bonjour!
D.U Documents valides Un document est dit valide si: –son prologue contient une déclaration de type de document –son arbre d'éléments respecte la structure définie par la déclaration de type <!DOCTYPE document [ ]> Bonjour!
D.U Notion de DTD Un document valide doit contenir une Déclaration de Type de Document ou DTD. Cette déclaration peut faire référence, par l'intermédiaire d'une URL à un fichier externe. Bonjour!
D.U Contenu d'une DTD Une DTD peut contenir des déclarations –d'éléments –de listes d'attributs –d'entités générales –d'entités paramètres –de notations ainsi que des commentaires
D.U Déclaration d'élément Une déclaration d'élément est de la forme –ELEMENT est un mot-clef et s'écrit impérativement en majuscules –nom est un nom valide d'un élément –modèle est le modèle de contenu de cet élément. On distingue cinq modèles de contenu éléments données mixte libre vide
D.U Modèle de contenu éléments (1/2) Séquence d'éléments fils (..,..,..) –Exemple Un élément chapitre doit contenir, impérativement et dans cet ordre, un sous-élément titre, intro et section. Alternative (..|..|..) –Exemple Indicateurs d'occurrence *, +, ? Un nom d'élément apparaissant dans le modèle d'un élément père peut-être suffixé par un indicateur d'occurrence. p* : p peut apparaître zéro, une ou plusieurs fois dans le contenu d'une instance p+ : p peut apparaître une ou plusieurs fois p? : p peut apparaître zéro ou une fois
D.U Exemple simple Livre.dtd. <!ELEMENT auteur (#PCDATA) s1.xml <!DOCTYPE livre SYSTEM 'livre.dtd' [ ]> &ionesco; s1.xsl
D.U Modèle de contenu éléments (2/2) Exemples <!ELEMENT chapitre ( titre, intro?, section+ ) > <!ELEMENT section ( titre-section, texte-section ) >
D.U Modèle de contenu données La présence de données dans le contenu d'un élément est spécifiée par le mot-clé #PCDATA Exemple
D.U Modèle de contenu mixte Ce modèle permet de définir des modèles de contenu autorisant de mêler données et éléments Forme du modèle (#PCDATA | nom 1 | …|nom n )* Exemples de déclarations <!ELEMENT p (#PCDATA | em | exposant | indice | renvoi)* > Exemple d'utilisation un paragraphe peut contenir du texte mis en évidence ou en exposant
D.U Modèle de contenu libre (1/2) Un élément peut être défini comme ayant un contenu quelconque, sous réserve que ce contenu respecte les règles générales du langage XML. Exemple Pour que le contenu d'un élément de modèle de contenu libre soit valide, il faut que, s'il contient des éléments, ceux-ci soient déclarés dans la DTD
D.U Modèle de contenu libre (2/2) Utilité: ce modèle de contenu est particulièrement utile lors de la création d'un DTD complexe Exemple
Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: Fax: Objet: ben quoi? Monsieur, Bla bla bli, bli blo bla, kkkk vhlg vckjdhklbg fdskjbvhv feje slc ifehfe fhckh c jeflccj n khef iheznf jùkvbc lkhdklvn v Veuillez agréer patati patata vachement sincères. signature Pied de page Si lettre alors enfants Si entete alors … Si corps alors enfants para Si para alors Police new roman, taille 12, décaler première ligne Si … alors … Principe de fonctionnement des feuilles de style
D.U CSS et XSL <!-- A:link{ COLOR: #B90000;TEXT-DECORATION: none} A:visited{COLOR: #B90000; TEXT-DECORATION: none} A:active{COLOR: #B90000;TEXT-DECORATION: none}.textredcenter { FONT-FAMILY: Verdana, Helvetica, arial, Geneva, SansSerif;FONT-SIZE: 11px;LINE-HEIGHT: 14px;TEXT- ALIGN: center;COLOR: #B90000;font-style: normal; font-weight: normal} #layerinfo { position:absolute; height:235px; left:10px;top: 80px; z-index:10 } AUTEUR { FONT-FAMILY: Verdana, Helvetica, arial, Geneva, SansSerif;FONT-SIZE: 11px;. XSL, règles: (extrait de s3.xsl ) <xsl:template mode='sommaire' match='chapitre'> -
D.U XML généralise de HTML HTML Hypertext Markup Language. Un ensemble prédéfini et limité de balises, défini par une norme (HTML 2.0, 3.2, 4.0). Ces balises ont des sémantiques variées: –h1,.., h6, title, address, … donnent des indications structurelles –center, hr, b, i, big, small,… ne servent qu'à décrire une mise en page. XSL permet de modifier lordre daffichage
D.U Transformation de documents Le Web présente de multiples cas de transformation –Formatage –Réutilisation de document –Adaptation aux appareils de présentation –Conversion de format, par exemple XML vers HTML Trois approches –Des programmes utilisant le DOM –Les feuilles de transformation XSLT –Le langage de requêtes XQuery
D.U XSLT Langage de transformation « le Perl de XML » Une feuille de transformation XSLT contient un ensemble de règles pattern/template Pattern –Contexte structurel dans l'arbre source –Expression XPath Template –Un fragment du résultat à produire pour le pattern correspondant Principe –Quand le pattern est reconnu dans le document source, le template correspondant est engendré dans le document résultat
D.U XQuery « le SQL de XML » Un modèle de données pour les documents XML Un ensemble d'opérateurs sur ce modèle (algèbre) Un langage de requête fondé sur ces opérateurs (syntaxe) Les requêtes XQuery –Peuvent sélectionner des documents entiers ou des sous-arbres qui répondent à la requête –Peuvent construire des documents nouveaux fondés sur ce qui est sélectionné
D.U Tree-automata Logical definability on trees Tree grammar Regular expression A DTD is a special tree regular expression. A parser (Xerces for example) is a special tree automaton. A query language is a formal language on classes of structured trees. Monadic Second-Order Logic captures the regular trees. Open problem: robustness, typing (schemas) ….. Foundations of XML
D.U Tree-automata Logical definability on trees Tree grammar Regular expression Tree properties r(a,b(a,b(a,b(a,b(a,b(a,b)....)r(a(a,b(a,b(a(a,b),b)....),b)
D.U (q0, q0) q1 (q0,q1) q1 Tree automata q0 q1 q0 q1 q2 (q1,q1) q2 (q1,q0) q2 (q2,-) q2 (-,q2) q2
D.U Logical definability on a class K of trees Tree properties Equivalence of : Automata definable Monadic Second-order Regular
D.U Conclusion XML : standard pour les documents WEB Manipulation darbres réguliers –DTD=Automate=Expression régulière. Arbres: –Les arbres réguliers sont testables –On peut les corriger et fonder une notion de valeur relative.