UP PREVIOUS NEXT   Technologies Internet et Education, © TECFA
  2. Le langage XML

2. Le langage XML

Définition un peu plus formelle:

2.1 Les notions de "well-formed" et de "valid"

A. "Well-formed" XML documents (pages correctement formées)

<?xml version="1.0"?>

<?xml version="1.0" encoding="ISO-8859-1"?>

http://truc.unige.ch/programme?bla&machin

devient

http://truc.unige.ch/programme?bla&amp;machin

B. "Valid XML documents"

C. DTD (Document Type Definition)

Une DTD est:

  • Une grammaire (ou jeu de règles) qui :
    • définit le jeux de balises utilisables ainsi que leurs attributs,
    • et qui spécifie leur possible imbrication (relation).
    • La DTD peut être référencée par un URI ou inclue directement dans le document XML
  • Ils existent d'autres types de grammaires comme XML Schema (XSD), Relax NG, etc.
    • Leur puissance sémantique est plus élevée (c.à.d que l'on peut exprimer plus de contraintes)
    • Relax NG offre le meilleur rapport puissance/facilité.
    • DTD est la plus répandue
    • XML Schema est utilisé par ex. pour formaliser des langages "webservices", par ex. SOAP
    • XML Schema et Relax ne seront pas abordés dans ce document.
    • Pas mal d'experts XML détestent XML Schema et militent pour Relax NG ...

2.2 Exemples XML de sensibilisation

Exemple 2-1: Bonjour en XML

Données XML

    • On a un document de type <page>
<page>
 <title>Hello friend</title>
 <content>
      Here is some content :)
 </content> 
 <comment>
      Written by DKS/Tecfa, adapted from S.M./the Cocoon samples
 </comment>
</page>

La DTD (à titre d'indication) qui validerait ce document pourrait être:

<!ELEMENT page  (title, content, comment?)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT content (#PCDATA)>
<!ELEMENT comment (#PCDATA)>
 

Exemple 2-2: Une recette en XML

Source: Introduction to XML by Jay Greenspan,

http://www.hotwired.com/webmonkey/98/41index1a_page5.html?tw=html

<?xml version="1.0"?> 
<list>
 <recipe>
   <author>Carol Schmidt</author>
   <recipe_name>Chocolate Chip Bars</recipe_name>
   <meal>Dinner
     <course>Dessert</course>
   </meal>
   <ingredients>
     <item>2/3 C butter</item>      <item>2 C brown sugar</item>
     <item>1 tsp vanilla</item>     <item>1 3/4 C unsifted all-purpose flour</item>
     <item>1 1/2 tsp baking powder</item>
     <item>1/2 tsp salt</item>      <item>3 eggs</item>
     <item>1/2 C chopped nuts</item>
     <item>2 cups (12-oz pkg.) semi-sweet choc. chips</item>
   </ingredients>
   <directions>
 Preheat oven to 350 degrees. Melt butter; combine with brown sugar and vanilla in large mixing bowl.Set aside to cool.  Combine flour, baking powder, and salt; set aside. Add eggs to cooled sugar mixture; beat well.  Stir in reserved dry  ingredients, nuts, and chips.
 Spread in greased 13-by-9-inch pan. Bake for 25 to 30 minutes until  golden brown; cool.  Cut into squares.
   </directions>
 </recipe>
</list>

Exemple 2-3: RSS

<?xml version="1.0" encoding="ISO-8859-1" ?>
 
<!DOCTYPE rss SYSTEM "rss-0.91.dtd">
<rss version="0.91">
  <channel>
    <title>Vivians island</title>
    <description>Project-Based e-Learning</description>
    <link>http://tecfa.unige.ch/perso/vivian/</link>
    <item>
      <title>Vive les poissons1</title>
      <description>blabla bla bla ...</description>
      <link>http://tecfa.unige.ch/perso/vivian/</link>
    </item>
    <item>
      <title>Vive les poissons3</title>
      <description>blabla bla bla ...</description>
      <link>http://tecfa.unige.ch/perso/vivian/</link>
    </item>
  </channel>
</rss>

Exemple 2-4: Une grammmaire (simple) de récit

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<?xml-stylesheet href="recit.css" type="text/css" ?>
<!DOCTYPE RECIT SYSTEM "recit.dtd">
 
<RECIT
 xmlns:xlink="http://www.w3.org/1999/xlink">
 <Titre>
Le garçon webmestre</Titre>
 <Contexte>
Il était une fois un garçon ni joli ni moche, ni bête ni intelligent,           ni drôle ni ennuyeux.
 </Contexte>
 <Probleme>Il était assez heureux dans sa vie de webmaster pour l'office de la promotion des technologies anciennes. Toutefois, il lui manquait une amie.
 </Probleme>
 <But>Il fallait que cela change ! </But>
 <FIL>
  <EPISODE>
   <SousBut>Un jour il s'est dit qu'il doit agir coûte que coûte.</SousBut>
   <TENTATIVE>
    <Action>Il s'est rendu au pub du coin. Arrivé au bar il voit un ancien camarade de classe accompagné de deux filles. Ils commencent à discuter et quand il raconta qu'il était WebMaster, une des filles lui demande ce qu'il faisait. Alors il expliqua fièrement qu'il faisait des pages HTML avec Frontier. Et avec un élan de courage il demanda à la fille s'il pouvait lui offrir un verre.</Action>
  </TENTATIVE>
........ </RECIT>

2.3 Les "espaces de noms" (name spaces)

Exemple d'utilisation de SVG

<svg xmlns="http://www.w3.org/2000/svg">
   <rect x="50" y="50" rx="5" ry="5" width="200" height="100" ....
<html xmlns:svg="http://www.w3.org/2000/svg">
   <svg:rect x="50" y="50" rx="5" ry="5" width="200" height="100" ....

Exemple d'utilisation de XLink (qui est une grammaire pour définir des liens):

<RECIT xmlns:xlink
="http://www.w3.org/1999/xlink">
<INFOS>
  <Date>30 octobre 2003 - </Date><Auteur>DKS - </Auteur>
  <A xlink:href="http://jigsaw.w3.org/css-validator/check/referer"
    xlink:type="simple">CSS Validator</A>
 </INFOS>

UP PREVIOUS NEXT -- TIE