La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

XML eXtensible Markup Language

Présentations similaires


Présentation au sujet: "XML eXtensible Markup Language"— Transcription de la présentation:

1 XML eXtensible 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 @Catégorie Nom Restaurant Manager No Adresse
Français *** @Catégorie Nom Le Moulin de Mougin Restaurant Manager Dupuis No 7 Adresse Des Vignes 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 " 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 " 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 Objectif de XML Schéma
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 byte hexBinary integer positiveInteger
Confirm this is electric byte -1, 126 hexBinary 0FB7 boolean true, false 1, 0 time 13:20:00.000, 13:20: :00 dateTime T13:20: :00 duration P1Y2M3DT10H30M12.3S float -INF, -1E4, -0, 0, 12.78E-2, 12, INF, NaN integer , -1, 0, 1, positiveInteger 1, negativeInteger , -1 nonNegativeInteger 0, 1, nonPositiveInteger , -1, 0 int -1, unsignedInt 0, anyURI

25 Les types complexes Définition d'objets complexes Exemple
<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: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:sequence> </xsd:complexType> </xsd:schema>

29 Feuille de style

30

31 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

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

33 Quelques outils de travail
Editeur Outil Support Tibco Turbo XML DTD, XSL Schéma Altova XMLSpy DTD, Schéma XSL, Xquery SyncRO Ltd. Oxygen Data Junction XML Junction Insight Soft. XMLMate DTD, Schéma, XSL, XPath XML Mind XMLMind Editor

34 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'>

35 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>

36 Exemple xml <?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 " /> <src_metaf v="noaa" /> <src_synop v="nws_land" /> <type_metaf v="metar" /> <type_synop v="synop" /> </options> <reports> <synop s="AAXX "> <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" /> <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=" "> <air> <temp v="14.7" u="C" /></air>

37 Exemple Interface WEB

38 WIS XML/BUFR


Télécharger ppt "XML eXtensible Markup Language"

Présentations similaires


Annonces Google