1 / 37

Introduction à XML

Introduction à XML. Introduction à XML DTD XSL : style généralisant CSS XSLT : transformations d’arbres Propriétés régulières et automates d’arbres. Université Paris II & LRI Michel de Rougemont mdr@lri.fr http://www.lri.fr/~mdr. XML. e X tensible M arkup L anguage

Download Presentation

Introduction à XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction à XML • Introduction à XML • DTD • XSL : style généralisant CSS • XSLT : transformations d’arbres • Propriétés régulières et automates d’arbres Université Paris II & LRI Michel de Rougemont mdr@lri.fr http://www.lri.fr/~mdr

  2. 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 l’on souhaite • XSL,XSLT, XQuery

  3. Le monde XML • Historique • "successeur" de HTML • héritier de SGML • Structure DTD • Espaces Nominaux • Contenu du document • XSL: style d’affichage • XSLT • XPATH • Permet de rechercher une information en utilisant la structure. • Valeur du document?

  4. WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: 012133564 Fax: 879765426 Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis 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 Exemple de document En-tête Logo Objet Date Salutation Destinataire Formule de politesse Corps Signature Pied de page

  5. Représentation XML <lettre> <entete> <logo loc="logo-graph.vml"/> <adresse> &abrev-adresse; </adresse> </entete> <destinataire> <nom> Mr Schnock </nom> <adresse> <rue> rue des églantiers </rue> <ville> Saint Glin </ville> </adresse> </destinataire> <objet> bla bla </objet> … … <date> 30 Nivose 2004 </date> <salutation> Monsieur, </salutation> <corps> <para> Premier paragraphe </para> <para> et là le deuxième </para> </corps> </lettre>

  6. 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.

  7. Exemples de documents XML <d/> <document> </document> <document> Bonjour! </document> <document> <salutation> Bonjour! </salutation> </document> <?xml version="1.0" standalone="yes" ?> <document> <salutation> Bonjour! </salutation> </document>

  8. Structure d’un document • Un document XML se compose • d’un prologue, éventuellement vide • d’un arbre d’éléments • de commentaires et d’instructions de traitement, facultatifs <?xml version="1.0" standalone="yes" ?> <document> <salutation> Bonjour! </salutation> </document>

  9. Prologue • Une déclaration XML, facultative • de la forme: <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"> • 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 <!DOCTYPE exemple SYSTEM "exemple.dtd" [ déclarations ]> • indique la structure particulière à laquelle doit se conformer un document

  10. 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

  11. Structure d'un élément (1) • Un élément est de la forme: <nom attr='valeur'> contenu </nom> • <nom> est la balise d'ouverture • </nom> est la balise de fermeture. Sa présence est obligatoire, à l'exception très particulière des éléments vides, notés indifféremment <nom> </nom> ou <nom/> . • contenuest 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é.

  12. 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".

  13. 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 • <rapport langue='fr' dern-modif='08/07/99'> • <annuaire generator='SQL2XML V2.0' last-update="07.08.99"> • 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 (').

  14. 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: <p> <b> bla bla </p> bla </b> n'est pas une structure XML.

  15. 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 <?xml version="1.0" standalone="yes" ?> <document> <salutation> Bonjour! </salutation> </document>

  16. 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 <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <!DOCTYPE document [ <!ELEMENT document (salutation)> <!ELEMENT salutation (#PCDATA)> ]> <document> <salutation> Bonjour! </salutation> </document>

  17. 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. <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <!DOCTYPE document SYSTEM "accueil.dtd"> <document> <salutation> Bonjour! </salutation> </document> <!–- fichier accueil.dtd. Exemple de DTD simple --> <!–- Auteur: --> <!–- Date: --> <!–- la déclaration XML n'est pas obligatoire dans une DTD --> <!–- permet de s'assurer que les documents qui la référence --> <!–- utilisent la même version de XML --> <?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?> <!–- Définition de l'élément racine --> <!ELEMENT document (salutation)> <!–- Un élément salutation ne contient que du texte --> <!ELEMENT salutation (#PCDATA)>

  18. 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

  19. Déclaration d'élément • Une déclaration d'élément est de la forme <!ELEMENT nom modèle> • 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

  20. Modèle de contenu éléments (1/2) • Séquence d'éléments fils ( .., .., ..) • Exemple <!ELEMENT chapitre (titre,intro,section)> • Un élément chapitre doit contenir, impérativement et dans cet ordre, un sous-élément titre, intro et section. • Alternative ( ..| ..| ..) • Exemple <!ELEMENT chapitre (titre,intro,(section|sections))> • 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

  21. Exemple simple Livre.dtd.<?xml version='1.0' ?> <!ELEMENT livre (chapitre*,titre,auteur)> <!ELEMENT chapitre (titre,para*)> <!ELEMENT titre (#PCDATA)> <!ELEMENT para (#PCDATA)> <!ELEMENT auteur (#PCDATA) s1.xml<?xml version='1.0' ?> <!DOCTYPE livre SYSTEM 'livre.dtd' [ <!ENTITY ionesco SYSTEM 'ionesco.xml'> ]> <?xml:stylesheet type="text/xsl" href="s1.xsl"?> <livre>&ionesco;</livre> s1.xsl <?xml version='1.0' ?> <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'version='1.0'> <xsl:template match='/'> <xsl:apply-templates/> </xsl:template> <xsl:template match='chapitre/titre'> <h1><xsl:value-of select='.'/></h1> </xsl:template></xsl:stylesheet>

  22. Modèle de contenu éléments (2/2) • Exemples <!ELEMENT chapitre ( titre, intro?, section+ ) > <!ELEMENT section ( titre-section, texte-section ) > <!ELEMENT texte-section (p|a)* >

  23. 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 <!ELEMENT p (#PCDATA) >

  24. 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 | nom1 | …|nomn)* • Exemples de déclarations <!ELEMENT p (#PCDATA | em | exposant | indice | renvoi)* > <!ELEMENT em (#PCDATA|exposant|indice)* > <!ELEMENT exposant (#PCDATA) > <!ELEMENT indice (#PCDATA) > • Exemple d'utilisation <p> un paragraphe peut contenir du texte <em> mis en évidence </em> ou en <exposant> exposant </exposant></p>

  25. 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 <!ELEMENT foo ANY> • 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

  26. 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 <!ELEMENT rapport ANY> <!ELEMENT chapitre ANY> <!ELEMENT section ANY> <!ELEMENT titre-section ANY> <!ELEMENT illustration ANY> <!ELEMENT bibliographie ANY> <!ELEMENT table-matieres ANY> <!ELEMENT index ANY> <!ELEMENT p ANY> <!ELEMENT em (#PCDATA)> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (prenom+,nom)> <!ELEMENT nom (#PCDATA)> <!ELEMENT prenom (#PCDATA)>

  27. <lettre> <entete> . . . </entete> <corps> . . . </corps> </lettre> 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 … WindStar 2000 Les rosières en buget AB562 Saint Pétaouchnoque Tel: 012133564 Fax: 879765426 Saint Pétaouchnoque, Le 30 nivose 2004 Editions Duschmol, 12 rue Schmurz YT123 Rapis 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 Principe de fonctionnement desfeuilles de style

  28. CSS et XSL <style type="text/css"> <!-- 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'> <h2> <xsl:number/> - <xsl:value-of select="titre" /> </h2> </xsl:template>

  29. 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 l’ordre d’affichage

  30. 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

  31. 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

  32. 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é

  33. Foundations of XML • 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) …..

  34. Tree properties • Tree-automata • Logical definability on trees • Tree grammar • Regular expression r(a,b(a,b(a,b(a,b(a,b(a,b)....) r(a(a,b(a,b(a(a,b),b)....),b)

  35. Tree automata (q1,q1)q2 (q1,q0)q2 (q2,-) q2 (-,q2) q2 • (q0, q0)  q1 • (q0,q1)  q1 q1 q1 q0 q1 q0 q2 q1 q0 q1 q1 q0 q0 q0 q0 q0 q0

  36. Tree properties • Logical definability on a class K of trees • Equivalence of : • Automata definable • Monadic Second-order • Regular

  37. Conclusion • XML : standard pour les documents WEB • Manipulation d’arbres 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.

More Related