650 likes | 806 Views
e X tended M arkup L angage. Par Nadah Hassan. L ’ univers XML. XML famille Avantage de XML Contexte et Application de XML Déclaration de DTD Déclaration d'éléments Déclaration d'attributs Déclaration d'entités générales Déclaration d'entités paramètres. XML : la famille.
E N D
eXtended Markup Langage Par Nadah Hassan
L’univers XML • XML famille • Avantage de XML • Contexte et Application de XML • Déclaration de DTD • Déclaration d'éléments • Déclaration d'attributs • Déclaration d'entités générales • Déclaration d'entités paramètres
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, SVG, XFORM, XSLT…
Exemple de document Ministère de L’intérieur Direction Du Budget Tel: 037133564 Fax: 0379765426 Le 30 Octobre 2004 Société XYZ, 12 rue Zair Rabat Objet: ben quoi?Exécution du marché 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 En-tête Logo Objet Date Salutation Destinataire Formule de politesse Corps Signature Pied de page
Représentation XML <lettre> <entete> <logo loc="logo-graph.gif"/> <adresse> &abrev-adresse; </adresse> </entete> <destinataire> <nom> Mr Alaoui </nom> <adresse> <rue> Avenue de la victoire </rue> <ville> Rabat </ville> </adresse> </destinataire> <objet>Marché</objet> … … <date> 30 oct 2004 </date> <salutation> Monsieur, </salutation> <corps> <para> Ici le premier paragraphe </para> <para> et là le deuxième </para> </corps> </lettre>
Avantages de XML Echange et partage d’information • En XML, une communauté d'auteurs invente librement les balises qui lui paraissent utiles pour représenter les informations qu’ils comptent échanger ou partager • Exemple: diverses façons de représenter une date • <date> 5 Janvier 2000 </date> • <date> • <a>2000</a><m>01</m><j>05</j> • </date> • <date format='ISO-8601'> 2000-01-05 </date> • Exemples • Commandes en commerce électronique ou toute transaction • Publication et recherche d’information dans un domaine industriel comme l’industrie des biotechnologies
Avantages de XML (suite) Interopérabilité des outils de traitement • Existence d’outils pour le traitement des données au format XML • Parseurs, éditeurs, browser… • Conséquences: • Un serveur de documents XML est susceptible de répondre à l'ensemble des besoins d'une organisation. • Un seul éditeur permet de traiter l'ensemble des données d'une organisation.
XML Context • XML : Représentation de données • DTD (Document Type Definition): Structure du document • XSD (XML Schema Definition) = DTD en XML • XLink (XML Linking Language): Liens étendus • XHTML = « HTML aux normes XML » • DOM (Document Object Model): Modèle de données • SAX (Simple API for XML): Parser • XPath: Structuration du parsing (parcours du DOM) • XSL (eXtended Stylesheet Language): Traitement • FO (Formatting Objects): Formattage de texte • XML Query Language: Requêtes (Quilt, XML-QL, XQL,etc) • …
XML Application • Traitement du XML
Elémentracine XML Bien Formé • <CIN> • <prénom>Jalil</prénom> • <nom>Rizk<nom> • <numéro>A11437398</numéro> • <Photo url="ar.gif"/> • </CIN> • Contient un ou plusieurs éléments • Non vide • Un seul point de départ • Racine • les valeurs d'attributs doivent être entre guillemets • Les balises de fermeture sont obligatoire Imbrication correcte (arbre) • Structure hiérarchique • Les balises ne doivent pas se chevaucher : • Un élément ne peut avoir des attributs vides <DL COMPACT> incorrecte <DL COMPACT=""> correcte
Structure d'un élément • Un élément est de la forme: <nom attr='valeur'> contenu </nom> • <nom> est la balise d'ouverture • </nom> est la balise de fermeture • [ éléments vides, indifféremment <nom> </nom> ou <nom/> ] • contenuest le contenu d'un élément • composé d’une liste (peut-être vide) de texte, d'autres éléments, d'instructions de traitement et de commentaires • 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é
XML en arbre Entête adresses personne personne type nom prenom adresse type nom prenom adresse
Exemple XML (annoté) Declaration Instructions de traitement <? xmlversion = "1.0" ?><? xml-stylesheethref = "http://high-Tech.edu.ma/XMLToHTML.xsl" type = "text/xsl" version = "1.0" ?><? cocoon-processtype = "xslt" ?><! DOCTYPEadresses SYSTEM "http:// high-Tech.edu.ma/ Adr.dtd"> <!--Ceci est un commentaire--> < adresses> <personne id= « C254898 " > <type classe= "enseignant" rang="MA"/> <nom>Miloudi</nom> <prenom>Jamal</prenom> <adresse>Agdal, Ecole High-Tech</adresse> </personne> </adresses > Entête du document ou prologue Type de document Commentaire Racine du document Attribut Element vide Corps du document Element non-vide Balise d'ouverture Balise de fermeture
Définition de type de document DéclarationdeDTD Exemple de document XML : Une DTD simple <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!ELEMENT Personne (Nom, Profession*)> <!ELEMENT Nom (Prenom, Nom_Famille)> <!ELEMENT Prenom(#PCDATA)> <!ELEMENT Nom_Famille(#PCDATA)> <!ELEMENT Profession (#PCDATA)> <Personne> <Nom> < Prenom>Mohamed</ Prenom> < Nom_Famille>Ali</ Nom_Famille> </Nom> <Profession>Boxeur</Profession> </Personne>
Contrainte sur les noms (détail) • Un nom d'élément ou d’attribut 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 (:) 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".
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. • <rapport langue='fr' dern-modif='08/07/99'> • <annuaire generator='SQL2XML V2.0' update='07.08.99'> • La valeur d'un attribut est une chaîne encadrée par des guillemets (") ou des apostrophes simples ('). Une valeur d'attribut ne doit pas contenir les caractères ^, % et &. • Un élément a un ensemble d ’attributs (ordre n’a pas de sémantique pour les attributs)
Définition de type de document DéclarationdeDTD Déclaration interne Déclaration d'éléments Exemple: Déclaration interne de la DTD "Person" <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE Personne [ <!ELEMENT Prenom(#PCDATA)> … ]> <Personne> … </Personne>
Définition de type de document Déclaration externe • Déclaration de DTD Exemple: Déclaration externe de la DTD "Person" <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> <!DOCTYPE Personne SYSTEM "personne.dtd"> <Personne> <Nom> <Prenom>Karim</Prenom> <Nom_Famille>Najoui</Nom_Famille> </Nom> </Personne>
Définition de type de document Déclarationd'éléments <!ELEMENTnom_élément (modèle_contenu)> #PCDATA Sous-éléments Séquences Nombres de sous-éléments Choix Parenthèses Contenu mixte Eléments vides ANY
Définition De Type De Document • Déclaration d'éléments #PCDATA <!ELEMENTPrénom (#PCDATA)> Sous-éléments <!ELEMENTFax (Tel)> L'élément Fax doit et ne peut contenir qu'un et un seul élément Tel Séquences <!ELEMENTNom (Prénom, Nom_Famille)> • Prénom et Nom_Famille sont obligatoire • Leur ordre d'apparition est défini et ne peut être inversé • Aucun élément supplémentaire n'est toléré
Définition De Type De Document • Nombredesous-éléments <!ELEMENTNom (Prénom, SurNom?, Nom_Famille)> • ? Autorise zéro ou un élément • * Autorise zéro ou un ou plusieurs éléments • + Autorise un ou plusieurs éléments Choix <!ELEMENTNom (Nom_Famille | Dénomination)> Contenu mixte <!ELEMENTParagraphe (#PCDATA | Paragraphe)*>
Définition De Type De Document Parenthèses <!ELEMENTCercle (Centre, (Rayon | Diamètre))> Exemple : < Cercle > < Centre ><x>12</x><y>0</y></ Centre > < Diamètre >3</ Diamètre > </ Cercle >
Définition De Type De Document Déclarationd'éléments Eléments vides <!ELEMENTImage (Empty)> Exemple : la balise image HTML <Image source="moto.jpg" width="200" height="100"/> ANY <!ELEMENTDocument (ANY)> A éviter !!!
Définition De Type De Document Déclarationd'attributs • <!ATTLIST Nom_Element Nom Type Defaut Nom Type Defaut ... > CDATA ID IDREF IDREFS ENTITY ENTITIES NMTOKEN NMTOKENS énumération #REQUIRED #IMPLIED #FIXED <?xml version="1.0" standalone="yes"?> <!DOCTYPE gestionnaire [ <!ELEMENT gestionnaire (répertoire)> <!ELEMENT répertoire (#PCDATA)> <!ATTLIST répertoire fichier NMTOKEN #REQUIRED>]>
Définition De Type De Document • Déclaration d'attributs Types d'attributs • CDATA Peut contenir n'importe quelle chaîne de caractères possibles dans la valeur d'un attribut XML bien formé. C'est le type d'attribut le plus général. • NMTOKEN NMTOKEN est une unité lexicale nominale XML. • NMTOKENS Un attribut de type NMTOKENS contient une ou plusieurs unités lexicales nominales séparées par des blancs.
Définition De Type De Document • Déclaration d'attributs Types d'attributs • Enumération <!ATTLIST Date Jour (Lundi | Mardi | Mercredi | Jeudi | Vendredi | Samedi | Dimanche)> • ID Doit contenir un nom XML (non une unité lexicale nominale) qui est unique dans le document. Ex: <Employé No_Cin=" A17705"> • IDREF Fait référence à un attribut de type ID.
Définition De Type De Document • Déclaration d'attributs • IDREFS Types d'attributs <?xml version="1.0" standalone="yes"?> <!DOCTYPE site [ <!ENTITY fichier SYSTEM "fichier.zip"> <!ELEMENT téléchargement (#PCDATA)> <!ATTLIST téléchargement source ENTITY #REQUIRED> <!ELEMENT site (téléchargement)> ]> <site> <téléchargement source="fichier"> Cliquez ici pour télécharger le fichier </téléchargement> </site> Contient une liste d'ID. • ENTITY Contient le nom d'une entitée non-parsée déclarée n'importe où dans la DTD. • ENTITIES Contient une liste d'entités (séparées par un blancs) non-analysées déclarées n'importe où dans la DTD. • NOTATION Contient le nom d'une notation déclarée dans la DTD. <?xml version="1.0" standalone="no"?> <!DOCTYPE vidéothèque [ <!ELEMENT vidéothèque (vidéo)> <!ELEMENT vidéo EMPTY> <!ATTLIST vidéo source ENTITY #REQUIRED> <!NOTATION avi SYSTEM "video/avi"> <!ENTITY vacance SYSTEM "mes_vacances.avi" NDATA avi>]><vidéothèque> <vidéo source="&vacance;"/> <vidéothèque>
Définition De Type De Document • Déclaration d'attributs Attribut par défaut • #IMPLIED L'attribut est optionnel. • #REQUIRED L'attribut est obligatoire. • #FIXED La valeur de l'attribut est fixe et non modifiable. Ex: <!ATTLIST biography xlmns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"> • Littéral La valeur par défaut en tant que chaîne entre guillemets. Ex: <!ATTLIST Réseau Protocole NMTOKEN "http">
Attributs Prédéfinis • Il existe des noms d'attributs prédéfinis: • xml:lang • déclare la langue utilisé dans le contenu de l ’élement et prend des valeurs de type code de langue (p.ex. en ou fr-CH) <!ATTLIST fichier xml:lang NMTOKEN #FIXED 'fr'><!ATTLIST file xml:lang NMTOKEN #FIXED 'en-GB'> • Xml:space • permet de préserver les espaces pour la présentation de l ’élement <!ATTLIST fichier xml:space (default|preserve) ’preserve'> • La déclaration des attributs d'un élément utilisant un de ces attributs prédéfinis doit explicitement mentionner l'attribut prédéfini. Par exemple: <!ATTLIST UnElement xml:lang NMTOKEN 'en-US'> <!ATTLIST pre xml:space (preserve) #FIXED ’preserve’>
Les sections CDATA • Les sections CDATA permettent de ne pas traiter les blocs de texte comportant des caractères qui seraient normalement identifiés comme du balisage. Les sections CDATA commencent par la chaîne "<![CDATA[" et se terminent par la chaîne "]]>". La chaîne ']]>' ne doit pas figurer à l'intérieur d'une section CDATA. Section CDATA : <exemple> <![CDATA[ <aaa>bb&cc<<<]]> </exemple>Une section CDATA ne doit pas comporter la chaîne de caractères ']]>' : <exemple> <![CDATA[ <aaa>bb ]]>cc<<<]]> </exemple> Pose problème à l’analyseur
Définition De Type De Document • Déclaration des entités • Entité générale interne • uniquement utilisé dans le document sous la forme &titre; • <!ENTITY titre "Langage XML"> • Entité paramêtre interne • uniquement dans la DTD • <!ENTITY %attname "name ID #REQUIRED"> • Entité paramêtre externe • uniquement dans la DTD • <!ENTITY %nouveau SYSTEM "nouveau.txt"> • Entité générale externe • uniquement dans la DTD • <!ENTITY arch PUBLIC "archive.z" NDATA gzip> • Entité générale préféfinies • < & > " &apos
Définition De Type De Document • Déclaration d'entités paramètres • Servent à définir des symboles qui seront utilisés ailleurs dans la DTD. • Partout où une entité est mentionnée, elle peut être remplacée par la chaîne de caractères qui lui est associée. <!ENTITY % heading "H1|H2|H3|H4|H5|H6"> Toute occurence de %heading; doit être remplacée par H1|H2|H3|H4|H5|H6 Exemple: Déclaration d'une entité paramètre <!ENTITY % list "UL | OL"><!ENTITY % preformatted "PRE"><!ENTITY % block"P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
Les instructions de traitements Les instructions de traitements sont destinées aux applications qui traiteront le document <?application instruction+ ?> Exemple avec les feuilles de style : <?xml-stylesheet type="text/xsl" href="article2xhtml.xsl"?> <?xml-stylesheet type="text/css" href="article.css"?>
Exemples <?xml version="1.0" standalone="yes"?> <!DOCTYPE magasin [ <!ELEMENT magasin (service+)> <!ELEMENT service (produit*)> <!ATTLIST service code ID #REQUIRED> <!ELEMENT produit (#PCDATA)> <!ATTLIST produit code ID #REQUIRED> ]> <magasin> <service code="A001"> <produit code="4DE205"> Soupe </produit> <produit code="2TM206"> Condiment </produit> <produit code="3KJ227"> Conserve </produit> </service> <service code="A003"> <produit code="1OU152"> Lessive </produit> <produit code="8AH070"> Essui-tout </produit> </service> </magasin>
Exemples <?xml version="1.0" standalone="yes"?> <!DOCTYPE société [ <!ATTLIST société codes_services IDREFS #IMPLIED> <!ELEMENT société (service+)> <!ELEMENT service (employé*)> <!ATTLIST service code ID #REQUIRED> <!ELEMENT employé (#PCDATA)> <!ATTLIST employé code ID #REQUIRED> <!ATTLIST employé code_service IDREF #REQUIRED>]> <société codes_services="A001 A003"> <service code="A001"> <employé code="E205" code_service="A001"> Jean Dupont </employé> <employé code="E206" code_service="A001"> Frédéric Marc </employé> <employé code="E207" code_service="A001"> Fabrice Detterne </employé> <employé code="H107" code_service="A003"> Angélique Millet </employé> </service> <service code="A003"> <employé code="A115" code_service="A003"> Isabelle Mascot </employé> </service> </société>
Exemples <?xml version="1.0" standalone="yes"?> <!DOCTYPE site [ <!ENTITY fichier SYSTEM "fichier.zip"> <!ELEMENT téléchargement (#PCDATA)> <!ATTLIST téléchargement source ENTITY #REQUIRED> <!ELEMENT site (téléchargement)> ]> <site> <téléchargement source="fichier"> Cliquez ici pour télécharger le fichier </téléchargement> </site> ___________________________________________________________________________ <?xml version="1.0" standalone="yes"?> <!DOCTYPE collection [ <!ENTITY image SYSTEM "http://www.monsite.com/image.gif"> <!ENTITY image2 SYSTEM "http://www.monsite.com/image2.gif"> <!ENTITY image3 SYSTEM "http://www.monsite.com/image3.gif"> <!ENTITY image4 SYSTEM "http://www.monsite.com/image4.gif"> <!ENTITY imageN SYSTEM "http://www.monsite.com/imageN.gif"> <!ELEMENT album EMPTY> <!ATTLIST album source ENTITIES #REQUIRED> <!ELEMENT collection (album)>]> <collection> <album source="image image2 image3 image4 imageN"/> </collection>
Les espaces de nommage • Les espaces de nommage sont particulièrement importants quand les noms d'éléments ou d'attributs provenant de domaines différents se contredisent. • Ce n'est que par la référence à un espace de nommage qu'il devient clair comment l'élément doit être interprété. Supposons qu'il y ait deux fois, dans un document XML un élément nomméPilote. Une fois, il se réfère au domaine informatique et l’autre fois au domaine aéronautique<pilote>Mr Mohamed Be Ali</pilote><pilote>carte réseau</pilote> <pilote xmlns:aero = "http://aeronautique.org/RAM" >Mr Mohamed Be Ali</pilote><pilote xmlns:inf = "http://Computer.org/HP" >carte réseau</pilote>
Limites des DTD • Les DTD ne sont pas écrites en XML, ce qui signifie que les technologies existantes pour manipuler des documents XML telles que DOM ou SAX ne peuvent être utilisées pour « parser » des schémas de documents. • Les DTD ne supportent pas les espaces de nom ce qui rend impossible l'import de schémas externes afin de réutiliser du code existant. • Les DTD n'offrent qu'un typage très limité des données.
Forme sérialisée et forme arborescente des document XML • Il existe deux représentations d’un document XML. • Forme sérialisée : c’est la forme courante, où le contenu est marqué par des balises. • Forme arborescente : elle met en évidence la structure du document. • Il est plus facile de raisonner sur la forme arborescente pour concevoir des traitements • Un typage simplifié par rapport à celui de DOM
Un document sous forme sérialisée • Cette représentation permet le stockage et l’échange de documents. <? xml version=" 1.0" encoding=" ISO- 8859- 1"?> <CINEMA> <NOM>Epée de Bois</ NOM> <ADRESSE>100, rue Mouffetard</ ADRESSE> <METRO>Censier- Daubenton</ METRO> </ CINEMA>
Le même, sous forme arborescente • La structure des arbres XML est définie par le Document Object Model (DOM), qui analyse le document et crée et une représentation arborescente avec des nœuds typé : • le noeud racine est de type Document, les catégories syntaxiques (commentaires,balises, texte) se traduisent par différents types de noeuds (Element ,Text, Attribut,ProcessingInstruction, Comment, CDataSection) • les noeuds constituent un arbre qui reflète l’imbrication des éléments dans la forme sérialisée CINEMA METRO Nom ADRESSE Censier- Daubenton Épée de bois 100, rue Mouffetard
En pratique • On utilise la forme sérialisée : Pour stocker un document dans un fichier et pour échanger des documents • La forme arborescente : Permet de spécifier des manipulations de données XML; utilisée par certaines applications qui gèrent l’ensemble du document en mémoire (exemple : éditeurs XML) <?xml version="1.0" encoding="ISO-8859-1"?> <!-- Commentaire --> <A>Le texte de A <B>Le texte de B</B> <D attr1="1" attr2="azerty"> <C/> </D> <![CDATA[2x < y]]> </A>
API XML • DOM pour manipuler un document XML depuis un langage de programmation VB, Java, JavaScript, Jscript, ... • SAX (Simple API for XML) orienté événement au cours de l ’ analyse, le parseur appelle des fonctions de callback quand il rencontre le début/ fin du document et des éléments
MSXML Document Object Model (DOM) Microsoft XML Parser (MSXML.DLL) qui vient avec Internet Explorer 5 expose un ensemble d’interfaces accessible au Visual Basic Private Sub test() Dim xmlDoc As New DOMDocument Dim strXMLContent As String, success As Boolean strXMLContent = "<cd><title>Showbiz</title><band>Muse</band></cd>" success = xmlDoc.loadXML(strXMLContent) If success = True Then MsgBox xmlDoc.xml Else MsgBox "impossible de charger le contenu XML " & strXMLContent End If End Sub Pour utiliser les objet DOM il faut référencer le composant Microsoft XML dans le projet
API DOM Le modèle d'objet spécifié par le W3C défini 12 types de noeuds différents. Le modèle d'objet de document fourni tout une panoplie d'outils destinés à construire et manipuler un document XML. Pour cela, le DOM met à disposition des interfaces, des méthodes et des propriétés permettant de gérer l'ensemble des composants présents dans un document XML. Le DOM spécifie diverses méthodes et propriétés permettant notamment, de créer (createNode…), modifier (replaceChild…), supprimer (remove…) ou d'extraire des données (get…) de n'importe quel élément ou contenu d'un document XML. De même, le DOM définit les types de relation entre chaque noeud, et des directions de déplacement dans une arborescence XML. Les propriétés parentNode, childNodes, firstChild, lastChild, previousSibling et nextSibling permettent de retourner respectivement le père, les enfants, le premier enfant, le dernier enfant, le frère précédent et le frère suivant du nœud courant. Le modèle d'objet de document offre donc au programmeur les moyens de traiter un document XML dans sa totalité