Introduction au XML

... et ses amis !

Avant tout : installation

  • Aller sur ftp://ftp.zlatkovic.com/libxml/64bit/
  • Télécharger libxml
  • Télécharger iconv
  • Télécharger libxslt
  • Télécharger mingwrt
  • Télécharger zlib
  • Extraire le tout dans un dossier et mettre à jour la variable d'environnement PATH
  • Tester en tapant "xmllint" et "xsltproc" dans votre console

Prêts à travailler !

xmllint --dtdvalid ma.dtd mon.xml --noout

Le XML

Le XML (eXtensible Markup Language) fut créé afin de stocker et de transporter des données.

 

Incorpore d'autres technologies : DTD, XSL, XML Schemas

Avantages

  • Texte plein
  • Interopérabilité
  • Lisible par humains et ordinateurs
  • Extensible
  • Transformable

Inconvénients

  • Verbosité
  • Lourdeur

Le même code en XML

 <article xmlns="http://docbook.org/ns/docbook">
    <title>Extensible Markup Language</title>
    <para>
      <acronym>XML</acronym> (Extensible Markup Language, « langage de balisage extensible »)...
    </para>
  </article>

En RTF

 {\rtf
 {\f2\fs36\b Extensible Markup Language}\par
 {\b XML} (Extensible Markup Language,  
 « langage de balisage extensible »)...
 \par
 }

En TeX

 \documentclass[a4paper, 11pt]{article}
  \title{Extensible Markup Language}
  \begin{document}
    \maketitle
  \end{document}

Au format Wiki

 =={{lang|en|Extensible Markup Language}}==

  '''XML''' ({{lang|en|Extensible Markup Language}}, 
  « langage de balisage extensible »)…

Caractéristiques

Un document XML est un arbre et ne contient qu'une seule racine.

 

Les balises sont appelés éléments de l'arbre ou noeuds de l'arbre.

Les éléments

Les éléments (ou noeuds) peuvent être :

  • hiérarchisés 
  • mélangeables (on peut mélanger du texte et des éléments)
  • répétables
  • ordonnés

Document bien formé

Un document XML bien formé est un document dont les éléments ne se mélangent pas et dont la hiérarchie est bien respectée

Document XML valide

Un document valide est un document bien formé et qui respecte une DTD (Document Type Definition, voir plus loin)

Autres informations utiles

  • Elément : <nomElement>Contenu</nomElement>
  • Attributs : <element attr1="valeur" attr2="valeur">Contenu</element>
  • Commentaire : <!-- commentaire XML non pris en compte par les processeurs -->
  • Instructions de traitement : <?xml... ?>
    • <?xml version="1.0" encoding="UTF-8" ?>
    • <?xml-stylesheet href="adresse" type="text/xsl" ?>
  • Sections d'échappement : <![CDATA[contenu non pris en compte]]>

Les espaces de noms

XML incorpore une logique d'espaces de noms qui permettent de préciser de quelle norme font partie certains éléments du document afin d'éviter les conflits de noms.

 

On peut donc mixer deux normes XML différentes au sein d'un même document sans risquer de conflits.

Les espaces de noms

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>
<root>

    <h:table xmlns:h="http://www.w3.org/TR/html4/">
      <h:tr>
        <h:td>Apples</h:td>
        <h:td>Bananas</h:td>
      </h:tr>
    </h:table>
    
    <f:table xmlns:f="http://www.w3schools.com/furniture">
      <f:name>African Coffee Table</f:name>
      <f:width>80</f:width>
      <f:length>120</f:length>
    </f:table>

</root>

Les espaces de noms

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>
<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>
<root 
    xmlns:h="http://www.w3.org/TR/html4/"
    xmlns:f="http://www.w3schools.com/furniture">
    
    <h:table>
      <h:tr>
        <h:td>Apples</h:td>
        <h:td>Bananas</h:td>
      </h:tr>
    </h:table>
    
    <f:table>
      <f:name>African Coffee Table</f:name>
      <f:width>80</f:width>
      <f:length>120</f:length>
    </f:table>

</root>

Validation XML :

Les DTD

Validation

Le propre d'un document XML est de pouvoir répondre à une norme précise.

 

XML incorpore un langage de validation hérité du SGML : Le Document Type Definition

Les DTD

Une (ou un ?) DTD permet de décrire la façon dont doit se composer un arbre XML qui doit s'y conformer afin d'être valide.

 

On y définit les éléments, leurs contenus, leurs attributs et les types de données

Syntaxe de DTD

  • Lier un XML et une DTD : <!DOCTYPE cv SYSTEM "cv.dtd">
  • Définition d'un élément : <!ELEMENT nom (typeDeDonnee)>
  • Type de donnée texte : (#PCDATA)
  • Type de donnée énum : (option1|option2|option3)
  • Quantificateur 0 ou plus : *
  • Quantificateur 1 ou plus : +
  • Quantificateur 0 ou 1 : ?
  • Définition d'entité : <!ENTITY nom "contenu">

Syntaxe de DTD

  • Définition d'attributs :
    <!ATTLIST element attr1 TYPE #REQUIRED|#IMPLIED
                                     attr2 TYPE #REQUIRED|#IMPLIED>
  • Attribut obligatoire : #REQUIRED
  • Attribut optionnel : #IMPLIED
  • Attribut obligatoire et fixe : #FIXED
  • Type de donnée Texte : CDATA
  • Type de donnée Nom : NMTOKEN et NMTOKENS
  • Type de donnée Identifiant : ID
  • Type de donnée référence : IDREF et IDREFS

Exemple de DTD

<!ELEMENT liste_livres (livre+)>
<!ELEMENT livre (titre,auteur+,éditeur,description?,prix)>
<!ELEMENT titre (#PCDATA)>
<!ELEMENT auteur (#PCDATA)>
<!ELEMENT éditeur (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT prix (#PCDATA)>
<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
<!DOCTYPE liste_livres SYSTEM "livres.dtd">
<liste_livres>
    <livre>
        <titre>Comprendre XSLT</titre>
        <auteur>Bernd Amann</auteur>
        <auteur>Philippe Rigaux</auteur>
        <éditeur>O'Reilly</éditeur>
        <description>
            Le livre suit une double démarche de présentation ...
        </description>
        <prix>33 euros</prix>
    </livre>
    <livre>
        <titre>Learning XML</titre>
        <auteur>Erik T. Ray</auteur>
        <éditeur>O'Reilly</éditeur>
        <prix>40 dollars</prix>
    </livre>
</liste_livres>

Au prochain épisode

Transformation XML via XSLT et Validation via XML Schemas

Merci !

Initiation au XML

By Lior CHAMLA

Initiation au XML

Ce cours donne une petite initiation au XML

  • 1,125