Developpez.com - XML
X

Choisissez d'abord la catégorieensuite la rubrique :


Le XML : une norme, des langages, un ensemble de technologies

06/01/05

Par erwan amoureux (homepage)
eric

Une rapide synthèse du monde XML, ce qu'est cette norme, son rôle, ce qui en dérive ...


1. La norme XML
1. Sa genèse
2. Son rôle
3. Sa forme
1. Les processings instructions(PI):
2. Les balises
3. Les attributs
4. Les commentaires
5. les CDATA Sections
6. Les namespaces
7. La racine
4. Ses outils de lecture:les parseurs
1. SAX (Simple Api for Xml)
2. DOM (Document Object Model)
5. Son développement
2. Les technologies XML
1. Les outils des fichiers XML
1. Les outils syntaxiques
. Les DTD
2. Les XML Schéma
2. les outils de "requêtage"
1. Xpath 1.0
2. Xquery 1.0
3. Xpath 2.0
3. les outils de transformations
1. XSLT
2. DOM
4. les outils de présentations
1. XHTML
2. XSL (XSL-FO)
2. les technologies issues de xml
1. les langages de présentations
1. XHTML
2. XSL (XSL-FO)
2. les langages spécialisés normés XML
1. SVG : langage de représentation graphique
2. MathML : les calculs scientifiques
3. les technologies basées sur ce format
1. protocole d'échange: SOAP
2. les web services
3. Bases de données XML
3. Conclusion


1. La norme XML


1. Sa genèse

XML signifie eXtensible mark up language, c'est en quelque sorte une norme née de l'expérience acquise grâce au HTML.Comme lui en effet, il appartient à la famille SGTML, les langages de balises.
Les "dérives" du HTML, balises propriétaires, usages détournés des balises et autres, ont montré l'importance qu'il y avait à séparer la présentation et les données. Rien n'est en effet plus difficile que d'extraire les données d'une feuilles HTMLpour les reutiliser dans une autres par exemple. XML est donc né de ces constats et du travil du World Wide Web Consortium (W3C) . XML est un format public : aucune société n'est propriétaire de son développement,c'est un groupe de collaborateurs et d'expert recrutés par cooptation, issus de divers domaines, qui commentent et modifie . La spécification v0 a été entérinée par le W3C (recommandation du 10 février 1998). mail à lucasr@microsoft.com


2. Son rôle

XML est un langage de spécification de balisage, de description de données.Il n'a donc rien à voir avec des lagages comme C, C++, Java etc.... qui sont des langages de programmations, aptent à effectuer calculs, actions.... XML est donc un langage qui ne fait rien par lui même mais qui permet le stockage ou la transmission de données ou qui peut être lui même utilisé par un autre langage. Le succès d'XML vient donc en premir lieu d'avoir posé une norme, non propriétaire, pour l'encapsulation de donnée, ainsi que des outils simples et universelle pour sa lecture, permettant à des clients divers, ne se connaissant pas forcemment, d'echanger simplement des informations. Xml est aussi un méta-langage, ont peut donc écrire d'autre langages grâce à celui-ci.C'est même la tout l'intèrêt du noyau de langage qui s'et constitué autour de lui. Ces mêmes langages qui le manipulent, étant eux même du XML, peuvent interragir entre eux voir sur eux mêmes.


3. Sa forme

Les fichiers XML sont des fichiers textes qui, à l'aide de balises, structure les données sous formes d'arbres. Ils respectent une syntaxes strictes. Ils sont composés de six types d'éléments:

  • les processing instructions(instructions pour le processeur)
  • <?NOM_DE_LA_PROCESSING-INSTRUCTION LISTE_DES_ATTRIBUTS?>
  • les balises
  • <truc>....</truc>
  • les attributs
  • <truc attribut1="1" attribut2="2">...</truc>
  • les commentaires
  • <!--Ceci est un commentaire -->
  • les CDATA Sections
  • <![CDATA[ceci est une cdata section ]]>
  • les namespaces

1. Les processings instructions(PI):

Un fichier XML commence "presque" obligatoirement par la processing instruction:

exemple
<?xml version="1.0"?>

La liste des attributs de cette PI:

  • version: la version de xml utilisé.
  • encoding: le codage ISO des caractères utilisé par le fichier .
  • standalone: valeurs yes ou no, indique si des ressources externes sont utilisées(si oui standalone est à no).

Quelques exemples où standalone sera à NO :

  • Si un attribut a une valeur par défaut, et que celui-ci apparait sans les specifications...
  • Si on utilise des entities autre que amp, lt, gt, apos, quot, il faut référencé.

Il existe un grand nombre d'autres PI:

<?xml-stylesheet type="text/xsl" href="truc.xslt"?>

Celle-ci par exemple lie le fichier xml avec le fichier truc.xslt .


2. Les balises

Quelques règles de syntaxe :
-Le nom d'une balise ne peut être composé que:

  • - de lettres majuscules ou minuscules
  • - des caractères '.' , '-' , '_' , ':'
  • - le premier caractère doit être une lettre ou '_' ou ':'
  • - les espaces sont considérés comme des séparateurs

Attention xml est case sensitive.

-Toute balise ouverte ( <un_nom>) doit être fermée ( </un_nom>). -Si une balise (fille) est déclarée à l'intérieur d'une autre (père), la premiére doit se refermer avant sa balise "père" -une balise vide s'écrit : <un_nom/> -le caractère < est interdit entre des balises, il sera codé &lt;

exemple
<essai,1>test</essai,1> <!--mal formé,le nom n'est pas valide--> <essai 1>test</essai 1> <!--mal formé,le nom n'est pas valide--> <essai-1>test</essai-1> <!--bien formé--> <essai-1><essai-2>test</essai-1></essai-2> <!--mal formé,essai-2 doit se refermer avant--> <essai-1><essai-2>test</essai-2></essai-1> <!--bien formé--> <essai-3>test</Essai-3> <!--mal formé,balise ouvrante différente de la balise fermante se rappeler que xml est case sensitive--> <essai-3>test</essai-3> <!--bien formé--> <essai-4>test < caractere</essai-4> <!--mal formé,< interdit--> <essai-4>test &lt; caractere</essai-4> <!--bien formé-->

3. Les attributs

Quelques règles de syntaxe :
-Le nom d'un attribut ne peut être composé que:

  • - de lettres majuscules ou minuscules
  • - des caractères '.' , '-' , '_' , ':'
  • - le premier caractère doit être une lettre ou '_' ou ':'
  • - les espaces sont considérés comme des séparateurs

Attention xml est case sensitive.
-le caractère < est interdit dans la valeur, il sera codé &lt; -Il ne peut y avoir qu'une seule occurrence d'un même attribut dans une balise
-La valeur de l'attribut doit être encadré par une paire de '' ou de ""
-Un attribut doit avoir une valeur, même nulle ( ="")

exemple
<essai *exemple="test"> <!--mal formé,caractères interdit dans le nom--> <essai exemple="test"> <!--bien formé--> <essai exemple="test < caractere"> <!--mal formé,caractères interdit dans la valeur--> <essai exemple="test &lt; caractere"> <!--bien formé--> <essai exemple="test1" exemple="test2"> <!--mal formé,occurence interdite--> <essai exemple="test1" exemple2="test2"> <!--bien formé--> <essai exemple='test"> <!--mal formé,paire de quote non valide--> <essai exemple="test"> <!--bien formé--> <essai exemple='test'> <!--bien formé--> <essai exemple> <!--mal formé,un attribut doit avoir une valeur--> <essai exemple=""> <!--bien formé-->

4. Les commentaires

Les commentaires peuvent apparaître n'importe ou dans le document SAUF à l'intérieur d'une balise. Les commentaires ne font pas parties des données xml du document.

exemple
<essai <!--test--> > </essai > <!--mal formé--> <essai ><!--test--> </essai > <!--bien formé-->

5. les CDATA Sections

Les CDATA Sections servent à transformer des balises en simple texte.Ils peuvent se trouver partout ou une valeur texte peut être requise(comme valeur d'attribut ou de balise)Ainsi dans

<![CDATA[ <html><body>hello world!</body></html>]]>

le texte <html><body>hello world!</body></html> ne sera pas interpété par un parseur xml comme des balises, mais comme du texte. Cela n'a rien voir avec les commentaires, une CDATA Section fait bien partie des données du document.


6. Les namespaces

C'est cet élément qui permet à XML d'être un méta-langage.En effet le namespace permettent de renvoyé les sens de balises "préfixés" à une url ou une uri.Cela permet de les identifier, voir de les traiter, differemment d'une simple balises xml. Tous les langages de norme xml possèdent leur propre namespace.


7. La racine

La dernière règle de forme d'un fichier XML, est qu'il doit contenir une balise, dite racine(aucun nom n'est imposé), qui contient toutes les autres, elle se situe juste en dessous des PI.

exemple
<?xml version="0"?> <exemple>test1</exemple> <exemple>test2</exemple> <!--mal formé--> <?xml version="0"?> <r> <exemple>test1</exemple> <exemple>test2</exemple> </r> <!--bien formé-->

4. Ses outils de lecture:les parseurs

Un parseur est outil logiciel, un analyseur syntaxique, qui permet de valider un document XML et de le lire, voir de le modifier. On considère esssentiellement deux types de parseur:

  • les parseurs hiérarchiques (DOM est le plus connus pour XML)
  • les parseurs événementiels (SAX)

1. SAX (Simple Api for Xml)

SAX est une API basée sur un modèle événementiel, SAX transforme donc un document XML en un flux d’évènements syntaxiques (balise ouvrante, balise fermante, etc.). Le modèle est un peu calqué sur celui des interfaces graphiques, l'application devenant un "écouteur d'événement". SAX à comme avantage, grâce à son fonctionnement, de ne lire le code que par portions , cequi lui évite de le charger en mémoire.Il est donc très intéressant pour la lecture des gros documents. Attention néanmoins, il ne possède aucune "mémoire" et ne permet que la lecture. Un exemple avec ce fichier XML :

<?xml version="1.0"?> <root> <phrase>Ceci est un exemple</phrase> </root>

Une interface événementielle telle que l'API SAX permet de créer des événements à partir de la lecture du document ci-dessus. Les événements générés seront :

  • start document
  • start element:root
  • start element: phrase
  • characters: Ceci est un exemple
  • end element: phrase
  • end element: personne
  • end document

L'API SAX L'API SAX définit les quatre interfaces suivantes : DocumentHandler possèdant des méthodes renvoyant des événements relatifs au document :

  • startDocument() événement d'ouverture du document
  • startElement() événement de rencontre d'un nouvel élément
  • characters() caractères rencontrés
  • endElement() événement de fin d'un élément
  • endDocument() événement de fermeture du document

ErrorHandler Les méthodes renvoyant des événements relatifs aux erreurs,en particuliers celles de validations.

DTDHandler Traite événements relatifs à la lecture de la DTD du document XML .

EntityResolver gestion du remplacement des entités externes (renvoie une URL quand une URI est trouvée).


DefaultHandler implante les quatre interfaces


2. DOM (Document Object Model)

Il est basé sur le principe d'un arbre hiérarchique, le fichier xml, après avoir été totalement chargé en memoire, prenant cette forme.Son approche diffère donc totaement de SAX ,même s'il peut être construit au dessus de ce dernier; un ContentHandler spécifique transforme le flux d’évènements en un arbre.Il est lui aussi une recommendation du W3C:Level 1 : 1 octobre 98, Level 2 (XML) : 13 novembre 2000,tous les éléments du level 3 ne sont pas encore des recommendations à ce jour.Sa forme:

  • un fichier normé XML est transformé en un objet Document
  • un Document a quelques fils possible:
    • un Element : la racine du document(obligatoire)
    • des éléments hors données : commentaires, processing
    • instructions et DTD (pour l’accès aux entités)
  • la structure d’arbre est finalisée grâce à Element, car un Element possède éventuellement un ou plusieurs: :
    • fils Element
    • fils Text
    • attributs (Attr)

Le chargement en mémoire de la totalité des données, s'il le rend plus couteux, procure un gros avantage à DOM, celui de pouvoir modifier ce XML(contrairement à SAX).Néanmoins la difficulté d'utilisation de cet outils a fait que d'autre, inspiré de son système, sont apparus comme JDOM pour Java


5. Son développement

Le developpement de la norme XML continue, ne serait ce qu' caue de l'évolution d'autre norme. En effet, les codes unicodes, lors de la première recommendation d'XML en 1998 était à la version 0, fin 2004 nous en sommes à la version 4.0. Les règles de nommages étant défini par une grammaire utilisant les codes Unicodes, ces modifications ont donnée lieu à une recommendation du W3C du 04 fevrier 2004: XML 1 .


2. Les technologies XML


1. Les outils des fichiers XML

Autour de la norme XML, c'est greffé tout une pléiade de langages ou d'outils logiciel visant à travailler/modifier/utiliser des fichiers xml;que ce soit analyse lexicale, extraction de donnée, transformation ..... La grande différence avec le point développés après : "les technologies issues de xml", vient qu'on peut les considérer comme faisant partie du "noyau d'XML". Ces outils visent à des travaux sur des fichiers normés XML, que ceux ci aient l'extension .xml ou une autre (.svg,.xslt,.xsd...).


1. Les outils syntaxiques

Dans "3 Sa forme", nous avons vu ce qui fait qu'un document est bien formé mais cela reste insuffisant pour l'échange ou la validation de données. Pour ceci, le format d'un fichier xml, l'ordonnancement de ces balises,attributs, doit être connu et exprimable. Deux langages essentiellement le permettent via un parcours dit "validant" d'un parseur XML (SAX/DOM).La structure du fichier XML sera comparé à la grammaire exprimée dans l'un des langaes ci dessous, et considéré valide en cas de succès de l'opération.


. Les DTD

Ce langage est plus ancien que la norme XML, cette même norme a d'ailleurs été exprimé grâce au DTD.


2. Les XML Schéma

Ils sont en quelques sortes les descendands des dtd.Ce langage d'implémentation syntaxique, à pour but : d'être plus complet que les DTD(certains cas ne pouvant s'exprimer) d'être lui-même au format xml.Ce qui permet à un fichier xsd de subir exactement les même lecture/transformation voir analyse lexicale que n'importe quel autre fichier xml.


2. les outils de "requêtage"


1. Xpath 1.0

C'est le langage de base


2. Xquery 1.0


3. Xpath 2.0

une évolution


3. les outils de transformations


1. XSLT


2. DOM


4. les outils de présentations

L'un des buts d'XML étant de la séparation des données et de la présentation, et comme aucun des langages sus-cités ne manipulant directement des données XML(XSLT sera généralement l'intermédiaire qui permettra d'inclure les données dans le code), on eput considérer comme un abus de les qualifiés d'outils XML. Néanmoins l'affichage d'une donnée étant essentielle, sovent le centre de toute demande, il nous à paru importer de conserver ce lien.


1. XHTML

XML est né en grande partie des insuffisances et des problèmes lié au développement de HTML, après l'apparition de ce dernier des tentatives de normalisation d'HTML ont été conduites. Leurs buts: produire une norme qui serait déja supporté par la majorité des navigateurs précédents(suppression de touts les balises propriétaires) normé XML le HTML (obligation de fermer les balises,présence de valeur pour les attributs etc....)


2. XSL (XSL-FO)


2. les technologies issues de xml


1. les langages de présentations

L'un des buts d'XML étant de la séparation des données et de la présentation, et comme aucun des langages sus-cités ne manipulant directement des données XML(XSLT sera généralement l'intermédiaire qui permettra d'inclure les données dans le code), on peut considérer comme un abus de les qualifiés d'outils XML. C'est pourquoi, malgré le rapprochement généralement fait entre xsl(-fo) et xslt, ces technologies n'ont pas été rangées avec les outils XML.Elles ne font pas parties du "noyau" commun de xml.


1. XHTML

XML est né en grande partie des insuffisances et des problèmes lié au développement de HTML, après l'apparition de ce dernier des tentatives de normalisation d'HTML ont été conduites. Leurs buts: produire une norme qui serait déja supporté par la majorité des navigateurs précédents(suppression de touts les balises propriétaires) normé XML le HTML (obligation de fermer les balises,présence de valeur pour les attributs etc....)


2. XSL (XSL-FO)


2. les langages spécialisés normés XML


1. SVG : langage de représentation graphique


2. MathML : les calculs scientifiques


3. les technologies basées sur ce format


1. protocole d'échange: SOAP


2. les web services


3. Bases de données XML


3. Conclusion



Copyright © 2004 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Responsable bénévole de la rubrique XML : Didier Mouronval -