1 / 38

XML eXtensible Markup Language

XML eXtensible Markup Language. Benjamin SACLIER (MFI) Sources : Georges Gardarin, Jean-Pierre Fournier. XML est issu de la Gestion de Documents (GED) Séparation du fond de la forme . Forme = présentation à partir de la structure (style) Fond = structure + données (contenu)

lahela
Télécharger la présentation

XML eXtensible Markup Language

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. XMLeXtensible Markup Language Benjamin SACLIER (MFI) Sources : Georges Gardarin, Jean-Pierre Fournier

  2. XML est issu de la Gestion de Documents (GED) • Séparation du fond de la forme. • Forme = présentation à partir de la structure (style) • Fond = structure + données (contenu) • Langage à balises • encadrement des champs par des balises début et fin • Multiples précurseurs dont les plus connues : • SGML pour la structuration • HTML pour la présentation

  3. XML= un nouveau langage d'échange basé sur le balisage • XML= plus simple que SGML • XML= plus ouvert que HTML • XML = développé par XML Working Group dirigé par le W3C (depuis 1996) • XML 1.0 = recommandation officielle du W3C depuis le 10 février 1998

  4. XML • Langage portable, échangeable, universel • lisible • présentable (navigateurs Web) • Avec garantie possible de cohérence des données • sans SGBD mais compatible avec tous les SGBD (import-export)

  5. XML standardise la manière dont l'information est: • échangée • présentée • archivée • retrouvée • transformée • cryptée • ...

  6. XML c’est quoi ? • un langage de balises, héritier de html, sgml… • un métalangage : l’utilisateur définit lui-même ses balises exemple xml : <coucou>Un texte</coucou>

  7. XML exemple simple <?xml version="1.0" encoding="UTF-8"?> <listePersonnes> <personne statut ="etudiant" > <nom>Dupont</nom> <prenom>Arthur</prenom> <adresse pays="France"> <numero>10</numero> <rue>rue des Alouettes</rue> <codePostal>91400</codePostal> <ville>Orsay</ville> </adresse> </personne> </listePersonnes> Encodage par défaut Balises ouvrantes et fermantes Balise avec attributs

  8. Exemple complet

  9. Modèle arborescent @Type Français *** @Catégorie Nom Le Moulin de Mougin Restaurant Manager Dupuis 7 No Des Vignes Adresse Rue Ville Mougin

  10. Au point où nous en sommes • Au point où nous en sommes :un document XML est identique à un fichier textuel, mais : • il est un peu plus portable (indication de l’encodage employé) • chaque information est associée à une « étiquette », sa balise, donc plus facilement identifiable et contrôlable • la qualité de sa structure est facile à vérifier • pour l’instant, la cohérence de ses informations n’est pas garantie…

  11. Incohérences sémantique • Exemple d’un fichier XML de structure correcte avec des incohérences sémantiques: <?xml version="1.0" encoding="UTF-8"?> <!-- commentaire xml --> <listePersonnes> <personne statut="etudiant"> <nom>Dupont</nom> <prenom>12342</prenom> <numero>10</numero> <adresse pays="France"> <rue>rue des Alouettes</rue> <codePostal>Le Guichet</codePostal> <ville>Orsay</ville> </adresse> </personne> </listePersonnes> Prénom numérique numéro mal placé, adresse incomplète…

  12. Contrôle du xml • XML n’est vraiment puissant que si la cohérence est contrôlée pour cela, deux technologies au choix: • le DTD • rudimentaire mais suffisant dans la plupart des cas • syntaxe différente • le XML-Schéma • puissant (données plus fortement typées) • syntaxe de style xml • DTD ou/et schéma permettent de définir son propre langage basé sur XML • Vocabulaire (balises) • Grammaire (imbrications) • les données de contrôle peuvent être dans le fichier xml lui-même, dans un fichier annexe, sur le Web

  13. DTD • Une DTD décrit les balises autorisées dans un document xml, l’ordre dans lequel elles doivent être imbriquées, leurs éventuels attributs, les types des informations qu’elles encapsulent <!ELEMENT listePersonnes (personne+) > <!ELEMENT personne (nom, prenom?, adresse)> <!ATTLIST personne statut CDATA #REQUIRED > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT adresse (numero?, rue, codePostal, ville)> <!ATTLIST adresse pays NMTOKENS #IMPLIED> <!ELEMENT numero (#PCDATA) > <!ELEMENT rue (#PCDATA) > <!ELEMENT codePostal (#PCDATA) > <!ELEMENT ville (#PCDATA) >

  14. Lien xml DTD séparée <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE listePersonnes SYSTEM 'listePersonnes.dtd' > <listePersonnes> <personne statut ="etudiant" > <nom>Dupont</nom> <prenom>12342</prenom> <adresse pays="France"> <numero>10</numero> <rue>rue des Alouettes</rue> <codePostal>Le Guichet</codePostal> <ville>Orsay</ville> </adresse> </personne> </listePersonnes>

  15. XML / DTD 1 seul fichier <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <!DOCTYPE listePersonnes [ <!ELEMENT listePersonnes (personne+) > <!ELEMENT personne (nom, prenom?, adresse)> <!ATTLIST personne statut CDATA #REQUIRED > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > <!ELEMENT adresse (numero?, rue, codePostal, ville)> <!ATTLIST adresse pays NMTOKENS #IMPLIED> <!ELEMENT numero (#PCDATA) > <!ELEMENT rue (#PCDATA) > <!ELEMENT codePostal (#PCDATA) > <!ELEMENT ville (#PCDATA) >]> <listePersonnes> <personne> <statut libellé="etudiant" /> <nom>Dupont</nom> <prenom>12342</prenom> <adresse pays="France"> <numero>10</numero> <rue>rue des Alouettes</rue> <codePostal>Le Guichet</codePostal> <ville>Orsay</ville> </adresse> </personne> </listePersonnes>

  16. Lien DTD web <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <!DO'ChTtYtPpE: /l/ilsotceaPlehrossotn/nleisstSeYPSeTrEsMo nnes.dtd' > <listePersonnes> <personne statut ="etudiant" > <nom>Dupont</nom> <prenom>12342</prenom> <adresse pays="France"> <numero>10</numero> <rue>rue des Alouettes</rue> <codePostal>Le Guichet</codePostal> <ville>Orsay</ville> </adresse> </personne> </listePersonnes>

  17. Déclaration d'élément simple • <! ELEMENT balise (définition) > • Le paramètre définition représente soit un type de donnée prédéfini, soit un élément de données composé, constitué lui même d'éléments • Types prédéfinis • ANY : L'élément peut contenir tout type de donnée • EMPTY : L'élément ne contient pas de données spécifiques • #PCDATA : L'élément doit contenir une chaîne de caractère

  18. Déclaration d'élément composé • Définit une séquence ou un choix d'éléments • Syntaxe spécifique avec opérateurs de composition d'éléments : <! ELEMENT balise (composition) >

  19. Déclaration d’attributs • <! ATTLIST balise Attribut Type Mode > • balise spécifie l'élément auquel est attaché l'attribut • Attribut est le nom de l'attribut déclaré • Type définit le type de donnée de l'attribut choisi parmi: • CDATA • Chaînes de caractères entre guillemets ("aa") non analysées • Enumération • Liste de valeurs séparées par | • <! ATTLIST balise Attribut (Valeur1 | Valeur2 | ... ) > • ID et IDREF • Clé et référence à clé • Mode précise le caractère obligatoire ou non de l'attribut • #REQUIRED, #IMPLIED ou #FIXED

  20. Exemple d’une DTD <!ELEMENT listePersonnes (personne+) > <!ELEMENT personne (nom, prenom?, adresse)> <!ATTLIST personne statut CDATA #REQUIRED > <!ELEMENT nom (#PCDATA) > <!ELEMENT prenom (#PCDATA) > • 􀂆 une balise « listePersonnes » contient au moins 1 balise personne • 􀂆 une balise « personne » contient une balise nom, une éventuelle balise prenom, une balise adresse, le tout dans l’ordre indiqué • 􀂆 la balise « personne » contient un attribut « statut » obligatoire • 􀂆 + signifie « au moins une » • 􀂆 * signifie « au moins zéro » • 􀂆 ? signifie « 0 ou 1 » • 􀂆 xxx | yyy signifie une de ces deux balises au choix • 􀂆 #PCDATA « parsed character data » • 􀂆 #REQUIRED = obligatoire, #IMPLIED = facultatif

  21. XML Schéma • Limite des DTD • Description limitée dans des documents structurés • Problème de typage (PCDATA) • Exprimé dans un langage autre que XML • Pas les mêmes parseurs • Objectif de XML Schéma • Amélioration du typage • Amélioration de la structure • Nombre borné d’éléments inclus … • Remplace de plus en plus la DTD car exprimé en syntaxe XML et extensible

  22. XML Schéma • Comme une DTD, le Schéma (xsd) permet de garantir la cohérence des données xml, mais : • sa syntaxe est de style xml • le niveau de précision est beaucoup plus élevé • Dans le document xml : <listePersonnes xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:noNamespaceSchemaLocation="listePersonnes.xsd">

  23. XML Schéma • 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)

  24. Les types simples • string • Confirm this is electric • byte • -1, 126 • hexBinary • 0FB7 • boolean • true, false 1, 0 • time • 13:20:00.000, 13:20:00.000-05:00 • dateTime • 1999-05-31T13:20:00.000-05:00 • duration • P1Y2M3DT10H30M12.3S • float • -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN • integer • -126789, -1, 0, 1, 126789 • positiveInteger • 1, 126789 • negativeInteger • -126789, -1 • nonNegativeInteger • 0, 1, 126789 • nonPositiveInteger • -126789, -1, 0 • int • -1, 126789675 • unsignedInt • 0, 1267896754 • anyURI • http://www.example.com/,

  25. 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="AddresseFR"> <xsd:sequence> <xsd:element name="nom" type="xsd:string"/> <xsd:element name="rue" type="xsd:string"/> <xsd:element name="ville" type="xsd:string"/> <xsd:element name="codep" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="pays" type="xsd:NMTOKEN" fixed="FR"/> </xsd:complexType>

  26. Les Patterns • Contraintes sur type simple prédéfini • Utilisation d'expression régulières • Similaires à celles de Perl • Exemple <xsd:simpleType name="NumItem"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType>

  27. XML Schema:exemple (1) <xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <xsd:element name="commande" type="CommandeType"/> <xsd:element name="commentaire" type="xsd:string"/> <xsd:complexType name="CommandeType"> <xsd:sequence> <xsd:element name="livrer" type="Adresse"/> <xsd:element name="facturer" type="Adresse"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="produits" type="ProduitType"/> </xsd:sequence> <xsd:attribute name="date_com" type="xsd:date"/> </xsd:complexType>

  28. XML Schema : exemple (2) <xsd:complexType name="ProduitType"> <xsd:sequence> <xsd:element name="produit" minOccurs="0" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="nom_prod" type="xsd:string"/> <xsd:element name="quantite"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="prix" type="xsd:decimal"/> <xsd:element ref="commentaire" minOccurs="0"/> <xsd:element name="date_livraison" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="num_prod" type="xsd:positiveInteger" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:schema>

  29. Feuille de style

  30. Feuille de style • La représentation de cette lettre en XML ne comporte aucune indication sur sa mise en page • Les aspects graphiques ou typographiques sont absents du source XML • Ces aspects seront définis 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 • On ajoute dans le début du fichier xml un lien vers la feuille de style, fichier xsl • <?xml-stylesheet type="text/xsl« href="transformateur.xsl"?> • Ce fichier peut être local ou accédé via une URL

  31. Conception de DTD/Schéma • Possible à partir d’une modélisation ULM

  32. Quelques outils de travail

  33. Exemple DTD • Convertisseur TAC vers XML (metaf2xml) <!ENTITY % cloudType 'AC|ACC|ACSL|AS|CB|CBMAM|CC|CCSL|CI|CS|CU|CF|CUFRA|NS|SAC|SC|SCSL|ST|SF|STFRA|TCU'> <!ENTITY % colourCodes 'BLUplus|BLU|WHT|GRN|YLO|YLO1|YLO2|AMB|RED|FCSTCANCEL'> <!ENTITY % cloudCover 'FEW|SCT|BKN|OVC'> <!ENTITY % cloudFamily '0|1|2|3|4|5|6|7|8|9'> <!ENTITY % phenomDescr 'isFrequent|isOccasional|isIntermittent|isContinuous|isThick|isPrettyThick|isVeryThick|isThin|isPrettyThin|isVeryThin|isFeeble|isPrettyFeeble|isVeryFeeble|isLight|isPrettyLight|isVeryLight|isModerate|isLow|isLower|isIsolated|isConvective|isDissipated|inPastHour|baseBelowStation|isAloft|isAround|isFreezing|isPatchy'> <!ENTITY % unitRadiation 'kJmm|Jcmcm'> <!ENTITY % unitSpeed 'KT|MPS|KMH'> <!ENTITY % period '1d|24h|1h|n'> <!ENTITY % compassDir 'N|NNE|NE|ENE|E|ESE|SE|SSE|S|SSW|SW|WSW|W|WNW|NW|NNW'>

  34. Exemple DTD <!ELEMENT taf (ERROR?, WARNING?, obsStation?, issueTime?, fcstPeriod?, reportModifier?, fcstNotAvbl?, sfcWind?, (CAVOK | (visPrev?, weatherList?, cloudList?, visVert?)), (turbulence | icing | windShearLvl | QNH)*, trendList?, (tempAt | tempMaxAt | tempMinAt | correctedAt | amendedAt | limMetwatch | autoMetwatch | amendment)*, tafRemarkList?)> <!ATTLIST taf s CDATA #REQUIRED>

  35. Exemple xml <precipInd s="1"> <precipIndVal v="1" /> </precipInd> <wxInd s="1"> <wxIndVal v="1" /> </wxInd> <baseLowestCloud s="4"> <from v="300" u="M" /> <to v="600" u="M" /> </baseLowestCloud> <visPrev s="59"> <distance v="9" u="KM" /> </visPrev> <totalCloudCover s="3"> <oktas v="3" /> </totalCloudCover> <sfcWind s="0714"> <wind> <dir v="70" /> <speed v="14" u="KT" /> </wind> </sfcWind> <temperature s="10147 20136"> <air> <temp v="14.7" u="C" /></air> <?xml version="1.0" encoding="UTF-8"?> <data> <options><format v="xml" /> <lang v="en" /> <mode v="latest" /> <msg_metaf v="" /> <msg_synop v="AAXX 09004 08495 11459 30714 10147 20136 30151 40159 58005 60001 70511 83500 92350 " /> <src_metaf v="noaa" /> <src_synop v="nws_land" /> <type_metaf v="metar" /> <type_synop v="synop" /> </options> <reports> <synop s="AAXX 09004 08495 11459 30714 10147 20136 30151 40159 58005 60001 70511 83500 92350"> <obsStationType s="AAXX"> <stationType v="AAXX" /> </obsStationType> <obsTime s="0900"> <day v="09" /> <hour v="00" /> <minute v="00" /> </obsTime> <windIndicator s="4"><windUnit v="KT" /> </windIndicator> <stationId s="08495"> <id v="08495" /> <region v="VI" />

  36. Exemple Interface WEB

  37. WIS XML/BUFR

More Related