Transcript
Page 1: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

CHAPITRE 6

INTRODUCTION A XML

Page 2: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

Plan

•Historique

•XML•Exo 1

•DTD•Exo 2

•XSL•Exo 3

•SAX

•DOM

Page 3: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

Les TP

•Exo 1 : Ecrire un document XML valide

•Exo 2 : Ecrire la DTD

•Exo 3 : Ecrire une feuille de style XSL

Page 4: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Historique

•XML signifie Extensible Markup Language

•C ’est standard reconnu par le W3C depuis février 1998,

•Il est dérive du SGML dont il représente un sous ensemble,

•Il avait pour intérêt initial de faciliter l ’échange de données informatique en remplaçant l ’EDI.

•La version 1.0 est disponible depuis 1998

Page 5: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Historique Le SGML à l’origine du XML !

SGML (Standard Generalized Markup Language) (ISO 8879) est lelangage de référence en GED.

SGML est devenu une norme internationale en 1986.

SGML dissocie la structure d'un texte de sa présentation physique.

La typographique, elle est laissée à l’outil de mise en page qui endonne une forme physique.

SGML permet de distinguer la structure d'un texte de son contenu.

Page 6: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Comparer HTML & XML : Les forces de HTML

•Standard sur les navigateurs du marché,

•Filtre générant du HTML dans la plupart des outils Bureautique,

•Portable d ’un environnement à l ’autre : UNIX, WINDOWS, APPLE,..

•Facile d ’utilisation & à comprendre,

•Existence d ’une gamme importante d ’outils sur le marché,

•Editable & modifiable avec un simple éditeur de textes.

•Documents souvent peu volumineux.

Page 7: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Comparer HTML & XML : Les lacunes de HTML

•HTML ne permet pas de distinguer la partie présentation, de la partie données.

•Une page HTML est difficilement exploitable pour extraire l’information et la retraiter :

•Exemple : constituer une base de données de recette en exploitant les nombreux sites disponibles sur Internet ..!

•Effectuer une recherche dans un ensemble de fichiers HTML donne des résultats approximatif.

•Exemple : Une recherche dans un moteur de recherche fournit un nombre important de référence sans rapport avec la requête lancée.

•Impossible de présenter de façons différentes les données d ’une page HTML.

•Exemple : références croisées.

•Difficile de compléter les données d ’une page HTML statique.

•HTML ne permet pas de compléter les balises en fonction des besoins.•Evolution des balises soumises au W3C

Page 8: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Comparer HTML & XML : Les Avantages de XML

•XML est un langage de spécification

•Permet la création de balises : Les balises et leurs contenus représentent un structure de données.

•Séparation du contenu et de la représentation : Les feuilles de styles XSL permettent de formater les données.

•La définition des Balises est contenu dans un dictionnaire appelé Document Type Definition (DTD) optionnel permettant de créer un dialecte XML.

Exemple : Mathematical Markup Language (MathML)

Utilisation de XML pour les équations mathématiques

Chemical Markup Language (CML)Utilisation de XML pour les objets chimiqies

•La rédaction d ’un document XML est soumise à des règles strictes, évitant ainsi toute ambiguïté.

Page 9: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

1. Généralités - Comparer HTML & XML : Les Inconvénients de XML

•On ne peut pas aujourd’hui architecturer entièrement un système d’information en XML.

•XML n’est qu’un élément d’une architecture plus complexe.

•Les outils de conception actuels sont encore incomplets.

•Seul IE 5 reconnaît actuellement XML. Navigator à partir de la version 6 interprétera également ce langage.

•La plupart des navigateurs utilisés aujourd’hui n’interprète pas le XML.

•Les parseurs disponibles donnent des résultats quelques fois différents. Principalement dans l’interprétation des feuilles de styles.

Page 10: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Spécifications de XML

XML développé par le XML Working Group formé par le W3C en 1996.

Les objectifs de conception de XML sont les suivants :

1. XML sera utilisable sans difficulté sur Internet ; 2. XML soutiendra une grande variété d'applications ; 3. XML sera compatible avec SGML ; 4. Il sera facile d'écrire des programmes traitant les documents

XML ; 5. Le nombre d'options dans XML doit être réduit au minimum,

idéalement à aucune ; 6. Les documents XML devraient être lisibles par l'homme et

raisonnablement clairs ; 7. La conception de XML devrait être préparée rapidement ; 8. La conception de XML sera formelle et concise ; 9. Il sera facile de créer des documents XML ; 10. La concision dans le balisage de XML est de peu d'importance.

Page 11: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Structure d ’un fichier XML

Un document XML peut être représenté sous la forme d’un Arbre.

Il possède une racine et chaque Elément représente un nœud.

<Document><Intro/><Chapitre_1>

<Titre_1><Titre_1-1/><Titre_1-2/><Titre_1-3/>

</Titre_1><Titre_2/><Titre_3/>

<Chapitre_1><Chapitre_2/><Chapitre_3/><Conclusion/>

</Document>

Racineex :

Document

Chapitre_1 Chapitre_2 Chapitre_3Intro Conclusion

Titre_1 Titre_2 Titre_3

Titre_1-1 Titre_1-2 Titre_1-3

Page 12: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Définition

Déclaration :• En première ligne dans un document XML• Facultative mais recommandée par le W3C

Racine :• Elément UNIQUE

Eléments :• Définissent le contenu d ’une balise XML• Peuvent contenir d ’autres éléments• Peuvent être vides• Peuvent contenir du texte.

Attributs :• Ajoutent des données à un éléments

Entités :• Raccourcis • Similaires aux constantes

Page 13: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

Le XML permet de créer ses propres balises.

Exemple de document structuré en XML :

<?xml version version="1.0"?><MOTEURS><MOTEUR marque = ‘Peugeot’>        <PUISSANCE>5</PUISSANCE>        <CYLINDREE>1.2</CYLINDREE>        <CARBURATION>Essence</CARBURATION ></MOTEUR>

<MOTEUR marque = ‘Renault’>        <PUISSANCE>4</PUISSANCE>        <CYLINDREE>1.3</CYLINDREE>        <CARBURATION>Diesel &amp Diesel</ CARBURATION ></MOTEUR> </MOTEURS>

2. Le XML - Exemple

Déclaration

Attribut

Racine

Elément

Entité

Page 14: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Type d ’encodage

XML utilise les jeux de caractères de la norme ISO 10646 ou Unicode.Standard contrôlé par le W3C, permet de supporter les caractères de tous les

langages.Ainsi tous les caractères internationaux peuvent être référencés en utilisant leur

représentation Unicode :

Ex pour Ä utiliser &#196

Les caractères sont codés sur 4 octets pour réduire la taille des chaînes un différents types de codage peut être utilisé :

Les plus fréquemment utilisés sont :

· UTF-16 : codage des caractères sur 16 bits

· UTF-8 : codage des caractères sur 8 bits

. UTF-7 : codage des caractères sur 7 bits

· ISO-8859-1

<?xml version='1.0' encoding='UTF-8'?>

Page 15: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Document XML Bien Formé

Un document XML doit répondre aux critères suivants:

·les valeurs d'attributs doivent être entre en guillemets " "

·les noms des attributs doivent tous être en minuscules

·toute balise ouverte doit être fermée ex : <p>.......</p>

·les balises uniques doivent être de la forme <balise/>,

·les caractères < et & écrits &lt; et &amp;

·un document commence par la déclaration suivante :<?xml version="1.0" standalone="yes"?>(yes, s'il est seul et no s'il est accompagné d'une DTD)

Page 16: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

2. Le XML - Eléments ou Attributs ???

Aucune règle existe.

Eléments :• Pour les informations faisant partie de l ’objet ex Titre

d ’un livre.• Pour les informations répétées.• Pour les informations pouvant être regroupées en unitié

logique.

Attributs :• Les identifiants.• Pour éviter des arborescences profondes.• Pour limiter les valeurs.

Donner toujours la préférence aux ElémentsPour des raisons de performances :• Chargement plus rapide• Indexation plus rapide (implique une recherche plus

rapide)

Page 17: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Définition

DTD (Document Type Definition) est l'acronyme Définition de type de document.

Elle va permettre de définir la structure interne d’un document XML,

Son l'utilisation est facultative. Un document répondant à une DTD est dit VALIDE.

La Validation processus de vérification d ’un document XML :

• Les données sont dans le bonne ordre,

• Les données sont dans le bon format,

• Les champs obligatoires sont présents,….

Un document BIEN FORME n’est pas forcément VALIDE

Page 18: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Interne ou Externe

La DTD peut prendre deux formes :

·soit interne, incluse dans une feuille XML ·soit externe, dans un fichier spécifique permettant sa réutilisation.

Document avec DTD externe :<?xml version="1.0" standalone =  "no" ?><!DOCTYPE accueil SYSTEM    "racine.dtd">

<racine>Bonjour!</racine>

Document avec DTD interne :<?xml version="1.0" encoding="UTF-8"  standalone =  "yes"  ? ><!DOCTYPE racine [  <!ELEMENT  racine  (#PCDATA)>]>

<racine >Bonjour!</racine >

Ces documents s ’auto décrivent.

La DTD doit avoir le même nom que la racine.

Page 19: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Types d’éléments

La déclaration de type d'élément

La déclaration de type d'un élément spécifie le contenu de cet élément.

La notation est la suivante : <!ELEMENT NomElément TypeElément>Les différents types

EMPTY : pour les éléments sans contenu. Ex <BR/>ANY : pour les éléments dont on ignore le contenu

#PCDATA: pour les données textuelles

Exemples <!ELEMENT br EMPTY><!ELEMENT titre (Chapitre|Introduction|Conclusion)><!ELEMENT auteur (#PCDATA)>

Page 20: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Répétitions

Déclaration de l'élément racine :

<!ELEMENT documents(document)>

Déclaration des éléments fils de la racine :

<!ELEMENT document(titre,auteur,texte)>

<!ELEMENT titre (#PCDATA)>

<!ELEMENT auteur (#PCDATA)>

<!ELEMENT texte (introduction?,chapitre+,conclusion?)>

Répétition :

• Par défaut répété une seule fois,

• ? optionnel,

• * plusieurs fois ou pas du tout,

• + au moins une fois.

Page 21: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Attributs

L’instruction ATTLIST

Cette instruction associe des attributs à un élément :<!ATTLIST document

prix CDATA #REQUIRED, // valeur donnée

promotion (oui|non)   "non" // Liste de valeurs possibles

>

Les types d ’attributs :

#REQUIRED : obligatoire

#IMPLIED : facultatif

#FIXED : valeur par défaut spécifiée

Exemple :

<!ATTLIST element          attribut    (valeur1| valeur2 | valeur3)  "valeur1">>

Page 22: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Schémas

Sous l’impulsion de Microsoft, la notion de schéma a été introduite dans XML.

Lacune de la DTD :

La DTD ne permet pas de spécifier le type d’un élément (string, date, ..)

Le Schéma devrait remplacer à terme la DTD. Plus complète elle introduit les notions :

•De contrainte sur le contenu du modèle. Ordre et séquence des Eléments.

•De contrainte sur les types de données. Valeurs valides pour une données.

Néanmoins, l’absence de spécification, est un frein au développement des Schémas.

Les principales propositions sont :

•XML Data/XML Data Reduced

•Document Content Description (DCD) : Typage Fort des Données, Limite des valeurs, Héritage.

Page 23: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Schémas<?xml version version="1.0"?>

<MOTEURS>

<MOTEUR marque = ‘Peugeot’>

        <PUISSANCE>5</PUISSANCE>        <CYLINDREE>1.2</CYLINDREE>        <CARBURATION>Essence</CARBURATION ></MOTEUR>

<MOTEUR marque = ‘Renault’>

        <PUISSANCE>4</PUISSANCE>        <CYLINDREE>1.3</CYLINDREE>        <CARBURATION>Diesel &amp Diesel</ CARBURATION ></MOTEUR>

</MOTEURS>

Page 24: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

3. La DTD - Les Schémas

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" elementFormDefault="qualified">

<xsd:element name="MOTEURS">

<xsd:complexType>

<xsd:sequence>

<xsd:element ref="MOTEUR" maxOccurs="unbounded"/>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="MOTEUR">

<xsd:complexType>

<xsd:sequence maxOccurs="1">

<xsd:element ref="CARBURATION"/>

<xsd:element ref="CYLINDREE"/>

<xsd:element ref="PUISSANCE"/>

</xsd:sequence>

<xsd:attribute name="marque" use="required">

<xsd:simpleType>

<xsd:restriction base="xsd:NMTOKEN">

<xsd:enumeration value="Peugeot"/>

<xsd:enumeration value="Renault"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:attribute>

</xsd:complexType>

</xsd:element>

Page 25: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

<xsd:element name="CARBURATION" type="xsd:string"/>

<xsd:element name="CYLINDREE">

<xsd:simpleType>

<xsd:restriction base="xsd:decimal">

<xsd:enumeration value="1.2"/>

<xsd:enumeration value="1.3"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

<xsd:element name="PUISSANCE">

<xsd:simpleType>

<xsd:restriction base="xsd:byte">

<xsd:enumeration value="4"/>

<xsd:enumeration value="5"/>

</xsd:restriction>

</xsd:simpleType>

</xsd:element>

</xsd:schema>

3. La DTD - Les Schémas

Page 26: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

4. Les NAMES SPACES

Ils correspondent à une recommandation du W3C datant de janvier 1999.

•Ils permettent d’identifier de manière unique les balises utilisées dans un document XML.

Les espaces de nom sont utilisés afin de bien dissocier les différentes syntaxes que l'on peut trouver dans un document XML.

Déclaration :

<xsl:stylesheet xmlns:"http//www.w3.org/1999/XSL/Tranform" version= "1.0">

Plusieurs names spaces peuvent être utilisé dans la rédaction d ’un document XML.xmlns:name1="http//…../nspaces/name1.dtd"

xmlns:name2="http//…../nspaces/name2.dtd"

Dans le Document les éléments seront alors préfixés de nom correspondant à leur names spaces.<name1:element>

<name2:element/>

</name1:element>

Page 27: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Définition

Langage de mise en forme de feuille de Style :

•Il permet la transformation d’une feuille XML.

•Il permet la manipulation d’un arbre ou chaque élément XML représente un nœud.

•Il en résulte un nouvel arbre.

•XSL fournit la plupart des structures de contrôle d’un langage classique.

•XSL permet de générer des arbres sous différents formats (XML, HTML,..).

La transformation XSL :

•Le résultat s ’obtient en appariant les structures (Pattern matching). Ceci permet donc de sélectionner le nœud, l ’attribut sur lequel doit s ’appliquer une transformation.

•Un modèle (template) permet d ’indiquer les actions à réaliser lors de l ’appariement.

•Il est composé de règles de mise en forme.

Page 28: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Rôle

XSL est utiliser pour transformer un page XML en HTML en WML ...

•Une page XML est une source de données.

•Les pages XSL sont des représentations différentes des données :

•Références croisées, cumuls, tris, traitements divers sur les données,…

•Une page XSL est un document XML bien formé.

•Attention la DTD de l ’arbre destination peut-être différente de l ’arbre d ’origine.

•On compare souvent CSS à XSL. CSS ne dispose pas de structure de contrôle, il ne permet que la mise en forme.

Page 29: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Exemple page XML

<?xml version="1.0"?

<?xsl:stylesheet type="text/xsl" href="exemple.xsl"?>

<documents>

<article>

<auteur> Dupond </auteur>

<date> 01 janvier 2001 </date>

<titre> Le XSL </titre>

</article>

<article>

<auteur> Martin </auteur>

<date> 10 janvier 2001 </date>

<titre> Le XML </titre>

</article>

</documents>

Déclaration Lien XSL

Racine XML

Page 30: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Exemple page XSL

<?xml version="1.0"?>

<xsl:stylesheet xmlns:"http//www.w3.org/1999/XSL/Tranform" version= "1.0">

<xsl:output method="html"/>

<xsl:template match="/">

<html>

<BODY>    <xsl:apply-templates select=“article”/> </BODY>

</html> </xsl:template>

<xsl:template match="article">

...

</xsl:template>

Déclaration Names Spaces

Template racine

Type de sortie

HTML Application d’un modèle aux noeuds fils

Template article

Page 31: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Le matching

<xsl:template match="…"> </xsl:template>

* correspond à n'importe quel élément

element1 | element2 trouve tous les élément element1 et element2

element1 / element2 trouve tous les éléments elemen2 ayant element1 comme parent

element1 // element2 correspond à n'importe quel élément element2 dont un ancêtre est element1

/ correspond au noeud racine

text() correspond à n'importe quel noeud textuel

processing-instruction() correspond à n'importe quel instruction de traitement

node() correspond à n'importe quel noeud autre qu'un noeud attribut et que le noeud racine

element1 [1] correspond au premier des éléments element1 d'un parent

element1 [last()=1] correspond à n'importe quel élément element1 qui est l'unique élément element1 de son élément parent

element1 / element2[position()>1] correspond à tous les éléments element2, autres que le premier, et dont le parent est element1

@class correspond à tous les attributs class

@* correspond à n'importe quel attribut

Page 32: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Structures de contrôles

Création de variables

<xsl:variable  name = variable select = expression> </xsl:variable>

Création d'éléments :

<xsl:element name = element>

</xsl:element>

Création d’attributs :

<xsl:attribute name = attribut>

</xsl:attribute>

Création d’un text :

<xsl:text> blabla </xsl:text>

Page 33: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Structures de contrôles

Insertion de la valeur d’un élément :

<xsl:value-of select="."/> <xsl:value-of select="nom"/>

Boucle :

<xsl:for-each select="element"/> … </xsl:for-each>

Tri :

<xsl:sort select="element" order="descending"/>

Alternative :

<xsl:if test="expression"/> … </xsl:if>

Exemple :

<xsl:if test= "position()=last()"/> … </xsl:if>

<xsl:choose>

<xsl:when test="expression"/> … </xsl:when>

<xsl:when test="expression"/> … </xsl:when>

<xsl:otherwise> … </xsl:otherwise>

</xsl:choose>

Page 34: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Exemple

<xsl:template match = "personnel">

<center> Liste Employe</center>

<xsl:for-each select="employe[position()mod 2 = 1]">

<xsl:sort select="nom"/>

<xsl:call-template name="employeCall">

<xsl:with-param name="nom">

<xsl:value-of select="nom"/>

</xsl:with-param>

</xsl:call-template>

<xsl:element name="br"/>

</xsl:for-each>

</xsl:template>

Règle modèle

Boucle

Appel d'une règle

Paramètre

Création d'unElement

Page 35: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

5. Feuilles de Style XSL - Exemple

<xsl:template name="employeCall">

<xsl:param name="nom"/>

<b>

<xsl:if test="position() mod 2 = 1">

<xsl:value-of select="$nom"/>

</xsl:if>

</b>

</xsl:template>

z

Récupération du Paramètre

Conditionnelle

Affichage d'une variable

Règle modèle

Page 36: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

6. Les API - SAX

Interface Simple API for XML (SAX).

Ces API sont orientées événements.

Le gestionnaire d ’événement est similaire à celui de Windows pour gérer les IHM.

Le moteur SAX déclenche un événement lorsqu’il détecte une balise de début ou une balise de fin.

Implémenté en JAVA, Python, PHP.

Avantage :

Ne charge pas globalement le fichier XML en mémoire avant de commencer le traitement.

Inconvénient :

Pas de construction d’arbre

Fonction PHP3 :

int xml_set_element_handler(int parser, string startElement, string endElement);

parser : pointeur sur un objet parseur

startElement : fonction déclenchée lorsqu’une balise de début est rencontrée.

endElement : fonction déclenchée lorsqu’une balise de fin est rencontrée.

Page 37: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

6. Les API - SAX Exemple en PHP$file = "data.xml"; $depth = array();

function startElement($parser, $name, $attrs){ ... }

function endElement($parser, $name){ ... }

$xml_parser = xml_parser_create();

xml_set_element_handler($xml_parser, "startElement", "endElement");

if (!($fp = fopen($file, "r"))) { die("could not open XML input");}

while ($data = fread($fp, 4096)) { if (!xml_parse($xml_parser, $data, feof($fp))) { die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); }}xml_parser_free($xml_parser);

Fonction exécutée pour traiter le début d’un élément

Fonction exécutée pour traiter la fin d’un élémentObjet Parser

Associe les Evts

Traite le fichier

Gestion des Erreurs

Page 38: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

6. Les API – Appariage en PHP 4

<?php

$xslData = '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:template match="article"> <h2><xsl:value-of select="title"></h2> <h3><xsl:value-of select="author"></h3></xsl:template></xsl:stylesheet>';

$xmlData = '<?xml version="1.0"><article> <title>Learning German</title> <author>Sterling Hughes</author></article>';

if (xslt_process($xslData, $xmlData, $result)){//OK

} else {// Erreur

}

?>

Chaine XSL

Chaine XML

Appariage

Page 39: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

7. Les API - DOM

•Le DOM est une interface de programmation.

•Il fournit un ensemble de fonctions :

•Permettant la manipulation de document XML.

•La création de document XML.

•Contrairement à SAX, le document XML est représenté en mémoire sous la forme d ’une structure hiérarchique.

•Les API disponibles, permettent de charger, parcourir, copier, créer, manipuler les nœuds de l ’arbre représentant ainsi les éléments du document XML.

•L’inconvénient majeur, est le chargement globale du document XML en mémoire. Peut entraîner des problèmes de temps de réponse lors du traitement des documents volumineux.

•Le DOM est implémenté dans les langages : JAVASCRIPT, VB SCRIPT donc très souvent utilisé dans les ASP.

Page 40: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

7. Les API - DOM Les fonctions de base

•xmlDoc.documentElement : Elément Racine

•xmlDoc.load("document.xml") : Chargement en mémoire d’un document XML

•xmlDoc.async : Mode de chargement en mémoire Asynchrone / Synchrone

•noeud.firstChild : Premier fils d’un nœud

•noeud.lastChild : dernier fils d’un nœud

•noeud.parentNode : Nœud Parent d’un nœud

•noeud.childNodes[] : Tableau des nœuds fils

•noeud.selectNodes("nom") : Retourne le tableau des nœuds fils ayant pour nom nom.

•noeud.getAttributes("att") : la valeur de l ’attribut att du nœud.

•noeud.setAttributes("att",valeur): Positionne la valeur de l ’attribut att du nœud.

•noeud.hasChildNodes()

•createElement("nom")

•loadXML("chaine")

Page 41: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

7. Les API - DOM Parcours d’un arbre en ASP<%@ Language=JavaScript %>

<%xmlDoc = Server.CreateObject("MSXML2.DOMDocument");

xmlDoc.async = false;

xmlDoc.load(Server.mapPath ("personnel.xml"));

racineDoc = xmlDoc.documentElement;

for (i = 0 ; i < racineDoc.childNodes.length ; i++) {

employe = racineDoc.childNodes[i];

Response.write ("<BR><HR><BR>Nom : ");Response.write (employe.childNodes[0].text + " " +

employe.childNodes[1].text + " " + employe.childNodes[2].text);}

%>

Objet DOM

Chargement SynchroneChargement du document

RacineNbre de Nœuds Fils

Parcours des Fils

Traitement des Fils

Page 42: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

7. Les API – DOM – Appariage XSL en ASP<%@ LANGUAGE = JScript %><%

var sourceFile = Server.MapPath("simple.xml");

var styleFile = Server.MapPath("simple.xsl");

var source = Server.CreateObject("Microsoft.XMLDOM"); source.async = false; source.load(sourceFile);

var style = Server.CreateObject("Microsoft.XMLDOM"); style.async = false; style.load(styleFile);

Response.Write(source.transformNode(style));%>

Doc XML

Doc XSL

DOM XML

DOM XSL

Appariage

Page 43: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

8. Les logiciels - Les parsers XML

Coté Serveur

Les parsers Validant

Microstar Aelfred

Les parsers non Validant

MSXML (intégré à IIS)

IBM XMLJ

Côté client

Internet Explorer 5.0

Netscape Navigator V6

Interface de programmation

Interface Simple API for XML (SAX)

Interface Document Oject Model (DOM)

Page 44: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

8. Les logiciels - Parsing coté client

Poste Client

Poste Client

Poste Client

Internet / intranet

Firewall

Flux HTTP

Serveur

Flux HTTP

IIS / APACHE

Documents XML Feuille XSLDTD

IE 5 / Navigator 6

Page 45: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

8. Les logiciels - Parsing coté serveur

Poste Client

Poste Client

Poste Client

Internet / intranet

Firewall

Flux HTTP

Serveur

Flux HTTP

IIS

HTML

Documents XML Feuille XSLDTD

ASPJavascript / VB Script

API DOM

APACHE

Documents XML Feuille XSLDTD

PHP3 /4

API SAX

HTML

Page 46: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

8. Les logiciels - Les langages de requêtes

XML-QL

Proposé par Bell Labs

Il permet d'interroger des documents XML

Il fournit également un interface de création de document XML

Ce langage est inspiré du SQL

XQL

Proposé par Microsoft

Il permet d'interroger des documents XML via XSL

Base de données Orientés Objets

Elles génèrent des documents XML

ORACLE v 8i

SQL Serveur 2000 fournit des fonctionnalités XML

Page 47: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

8. Les logiciels - Les éditeurs XML

Editeurs XML

XML Notepad (Parser Microsoft)

XMLPRO (Parser IBM XML 4J)

Xmetal de softquad

Editeurs DTD

XML Autority : Construction graphique d ’un DTD

Near & Far Designer XML

Editeurs XSL

eXcelon Stylus

XML SPY

Page 48: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

9. Les Références - Les sites WEB

La référence dans le domaine :

http://www.w3.org

http://msdn.microsoft.com/xml/reference/xsl/XSLElements.asp

http://www.w3schools.com/

http://www.vbxml.com/xsl/

Page 49: CHAPITRE 6 INTRODUCTION A XML. Plan Historique XML Exo 1 DTD Exo 2 XSL Exo 3 SAX DOM

9. Les Références - Les ouvrages

La référence dans le domaine :

XML. Langage et applications de MICHARD, Alain EYROLLES

INTRODUCTION AU XML SAINT-LAURENT Simon OSMAN EYROLLES MULTIMEDIA 2000

XSLT Programmer's Reference Michael KAY Edition WROX


Recommended