e x tended m arkup l angage
Post on 17-Mar-2016
34 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
eeXXtended tended MMarkup arkup LLangageangage
Par Nadah Hassan
2
XML familleAvantage de XMLContexte et Application de XML Déclaration de DTDDéclaration d'élémentsDéclaration d'attributsDéclaration d'entités généralesDéclaration d'entités paramètres
L’universL’univers XML XML
3
XML : la familleXML : la famille
Né : fin 96Père : W3CPetit-fils de SGML (ISO-1986)Cousin d’HTMLReconnu le : 10/02/98 – version 1.0Descendance – XHMTL, MathML, SVG,
XFORM, XSLT…
4
Le 30 Octobre 2004
Société XYZ,12 rue ZairRabat
Ministère de L’intérieurDirection Du Budget
Tel: 037133564Fax: 0379765426
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
Logo
Date
Destinataire
Corps
Pied de page
En-tête
Objet
Salutation
Formule depolitesse
Signature
Exemple de documentExemple de document
5
Une représentation classiqueUne représentation classique
6
…<date> 30 oct 2004 </date>
<salutation> Monsieur, </salutation>
<corps> <para> Ici le premier paragraphe </para> <para> et là le deuxième </para></corps>
</lettre>
<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>…
Représentation XMLReprésentation XML
7
Echange et partage d’informationEchange 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 XMLAvantages de XML
8
Interopérabilité des outils de traitementInteropé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.
Avantages de XML (suite)Avantages de XML (suite)
9
XML 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) …
10
•Traitement du XMLXML ApplicationXML Application
11
XML Bien ForméXML Bien Formé 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
<CIN><prénom>Jalil</prénom><nom>Rizk<nom><numéro>A11437398</numéro><Photo url="ar.gif"/>
</CIN>
ElémentElément racineracine
12
Structure d'un élément 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/> ]
contenu est 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é
13
XML en arbreXML en arbreEntête
adresses
personne
type nom prenom adresse
personne
type nom prenom adresse
Instructionsde traitement
Type dedocument
Corps dudocument
Racine dudocument
Attribut
Element vide
Element non-vide
Commentaire
Balise d'ouverture Balise de fermeture
Declaration<? xml version = "1.0" ?><? xml-stylesheet href = "http://high-Tech.edu.ma/XMLToHTML.xsl"
type = "text/xsl" version = "1.0" ?><? cocoon-process type = "xslt" ?><! DOCTYPE adresses 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 dudocument ou prologue
Exemple XML (annoté)Exemple XML (annoté)
15
Déclaration de DTDExemple 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>
Définition de type de documentDéfinition de type de document
16
Contrainte sur les noms (détail)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".
Exemples de noms d'élémentscorrects incorrects
_totoNom_sociétéxsl:ruleX.11
1998-catalogueXmlSpécifificationnom société
17
Syntaxe des attributs 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)
18
Déclaration de DTDDéclaration interneDéclaration d'élémentsExemple: 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éfinition de type de document
19
Définition de type de documentDéfinition de type de document Déclaration de DTD
Déclaration externe
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>
20
Déclaration d'éléments<!ELEMENT nom_élément (modèle_contenu)>
#PCDATASous-élémentsSéquencesNombres de sous-élémentsChoixParenthèsesContenu mixteEléments videsANY
Définition de type de documentDéfinition de type de document
21
Définition De Type De DocumentDéfinition De Type De Document
Déclaration d'éléments#PCDATA
<!ELEMENT Prénom (#PCDATA)>
Sous-éléments
<!ELEMENT Fax (Tel)>
L'élément Fax doit et ne peut contenir qu'un et un seul élément TelSéquences<!ELEMENT Nom (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é
22
Définition De Type De DocumentDéfinition De Type De DocumentNombre de sous-éléments
<!ELEMENT Nom (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émentsChoix
<!ELEMENT Paragraphe (#PCDATA | Paragraphe)*>
<!ELEMENT Nom (Nom_Famille | Dénomination)>
Contenu mixte
23
Parenthèses
<!ELEMENT Cercle (Centre, (Rayon | Diamètre))>
Exemple :
< Cercle Cercle >
< CentreCentre ><x>12</x><y>0</y></ CentreCentre >
< DiamètreDiamètre >3</ DiamètreDiamètre >
</ Cercle Cercle >
Définition De Type De DocumentDéfinition De Type De Document
24
Déclaration d'élémentsEléments vides
ANY
<!ELEMENT Image (Empty)>
<!ELEMENT Document (ANY)>
Exemple : la balise image HTML
<Image source="moto.jpg" width="200" height="100"/>
A éviter !!!
Définition De Type De DocumentDéfinition De Type De Document
25
<!ATTLIST Nom_Element Nom Type Defaut Nom Type Defaut ... >
Définition De Type De DocumentDéfinition De Type De DocumentDéclaration d'attributs
<?xml version="1.0" standalone="yes"?><!DOCTYPE gestionnaire [ <!ELEMENT gestionnaire (répertoire)> <!ELEMENT répertoire (#PCDATA)> <!ATTLIST répertoire fichier NMTOKEN #REQUIRED>]>
CDATAIDIDREFIDREFSENTITYENTITIESNMTOKENNMTOKENSénumération
#REQUIRED#IMPLIED#FIXED
26
Types d'attributs
Déclaration d'attributs
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.
•CDATA
•NMTOKEN
•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 DocumentDéfinition De Type De Document
NMTOKEN est une unité lexicale nominale XML.
27
Déclaration d'attributsTypes 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 DocumentDéfinition De Type De Document
28
Contient une liste d'ID.
•IDREFS
Déclaration d'attributsTypes d'attributs
•ENTITYContient le nom d'une entitée non-parsée déclarée n'importe où dans la DTD.
•ENTITIESContient une liste d'entités (séparées par un blancs) non-analysées déclarées n'importe où dans la DTD.
•NOTATIONContient 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 DocumentDéfinition De Type De Document
<?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>
29
Déclaration d'attributsAttribut par défaut•#IMPLIED
L'attribut est optionnel.
•#REQUIREDL'attribut est obligatoire.
•#FIXEDLa valeur de l'attribut est fixe et non modifiable.
Ex: <!ATTLIST biography xlmns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
•LittéralLa valeur par défaut en tant que chaîne entre guillemets.
Ex: <!ATTLIST Réseau Protocole NMTOKEN "http">
Définition De Type De DocumentDéfinition De Type De Document
30
Attributs PrédéfinisAttributs 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’>
31
Les sections CDATALes 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 Pose problème à l’analyseurà l’analyseur
32
• Déclaration des entités
Définition De Type De DocumentDéfinition De Type De Document
•Entité générale interneEntité générale interneuniquement utilisé dans le document sous la forme uniquement utilisé dans le document sous la forme &titre;&titre;
<!ENTITY titre <!ENTITY titre ""Langage XML">Langage XML">
•Entité paramêtre interneEntité paramêtre interneuniquement dans la DTDuniquement dans la DTD
<!ENTITY %attname "name ID #REQUIRED"><!ENTITY %attname "name ID #REQUIRED">
•Entité paramêtre externeEntité paramêtre externeuniquement dans la DTDuniquement dans la DTD
<!ENTITY %nouveau SYSTEM "nouveau.txt"><!ENTITY %nouveau SYSTEM "nouveau.txt">
•Entité générale externeEntité générale externeuniquement dans la DTDuniquement dans la DTD
<!ENTITY arch PUBLIC "archive.z" NDATA gzip><!ENTITY arch PUBLIC "archive.z" NDATA gzip>
•Entité générale préféfiniesEntité générale préféfinies< & > " &apos< & > " &apos
33
Déclaration d'entités paramètresServent à 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.
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">
<!ENTITY % heading "H1|H2|H3|H4|H5|H6">
Toute occurence de %heading; doit être remplacée par H1|H2|H3|H4|H5|H6
Définition De Type De DocumentDéfinition De Type De Document
34
Les instructions de Les instructions de traitementstraitements
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"?>
35
Donnez la DTD de ce document recette
36
Recette.dtdRecette.dtd
37
ExeExemplesmples<?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>
38
ExemplesExemples<?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é>
39
ExemplesExemples<?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>
40
Les espaces de nommage 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>
41
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.
Limites des DTDLimites des DTD
42
Forme sérialisée et forme Forme sérialisée et forme arborescente des document arborescente des document
XMLXML 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
43
Un document sous forme Un document sous forme sérialiséesé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>
44
Le même, sous forme arborescenteLe 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
Nom
CINEMA
ADRESSE METRO
Épée de bois 100, rue Mouffetard Censier- Daubenton
45
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>
46
API XMLAPI 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
47
Analyeur XMLAnalyeur XML
48
Traitement DOM Traitement DOM
49
MSXML Document Object Model (DOM)MSXML Document Object Model (DOM)
Object Interface DescriptionDocuments DOMDocument Un document XML
Nodes IXMLDOMNode Tout type de noeud
Nodelists IXMLDOMNodeList Collection de noeuds
Elements IXMLDOMElement Noeud Element, hérite de IXMLDOMNode
Attributes IXMLDOMAttribute Noeud Attribute, hérite de IXMLDOMNode
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
50
API DOMAPI DOMLe 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 desdirections de déplacement dans une arborescence XML. Les propriétésparentNode, 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 detraiter un document XML dans sa totalité
51
L’interface NodeL’interface Node
Propriétés :attributes, childNodes, firstChild, lastChild, localName, namespaceURI,nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix,previousSiblingMéthodes :appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported,normalize, removeChild, replaceChild
L’interacfe Node représente un noeud de l'arborescence d'un document XML.
52
Chargement d’un contenu XMLChargement d’un contenu XML
En définissant la propriété Async
du document sur False, l'analyseur
ne rend pas la main à votre code
tant que le document n'est pas
entièrement chargé . .
Active la validation du document par la DTD ou le schéma
Uninitialized : 0
Loading : 1 Loaded : 2
Interactive : 3 Completed : 4
53
Errors Handling dans le modèle Errors Handling dans le modèle DOMDOM
Déclaration de l’objet erreur
Récupération de l’objet erreur L’objet parseError est une
propriété en lecture seule de l’objet
DOMDocument
54
La gestion des blancs La gestion des blancs
55
Déplacement dans l’arbreDéplacement dans l’arbre
56
Manipulation des nœuds DOMManipulation des nœuds DOM
Création du nœud
newNode
Ajout du nœud newNoeud au nœud root
Le résultat : <root><name/></root>
57
Manipulation des nœuds DOMManipulation des nœuds DOM
Le résultat : <root><name>Juicy Studio</name></root>
58
Affichage de Contenu DOMAffichage de Contenu DOM
Appel récursif
Parcours de la collection des
noeuds
59
Lecture d'un flux XML via SAX Lecture d'un flux XML via SAX
Instanciation du gestionnaire d’erreur
Instanciation de l’analyseur XML
Instanciation du ContentHandler ou
gestionnaire de Contenu
Association du contenthandler à l’analyseur XML
Association du Errorhandler à l’analyseur XML
Lancement de l’analyse
Voyons comment l’analyseur travaille ?
60
Principe de SAXPrincipe de SAXLe parseur analyse le flot de caractères du document et appelle des méthodes dites de callback lors qu ’ il rencontre les balises de début et de fin du document et des éléments
<?xml version="1.0" encoding="ISO-8859-1" ?><tests> <test id="1" nom="mon test"/> <test id="2" nom="test 2" type="rien">Un peu de texte </test></tests
ContentHandler
SAXXMLReader30
L’implémentation de l’analyseur est
fournie
ContentHandler est juste une interface, il
faut l’implémenter
61
Principe de SAXPrincipe de SAX
62
Exemple d’implementation de ContentHandlerExemple d’implementation de ContentHandler
appelée par le parser une et une seule fois au démarrage de l'analyse du document xml
appelée à la fin du parcours du document après toutes les autres méthodes.
appelée au début, permet de localiser "le curseur" pendant le traitement du document
appelée à la rencontre d'un élément XML IVBSAXContentHandler_startElement(strNamespaceURI As String, strLocalName As String, strQName As String, ByVal oAttributes As MSXML2.IVBSAXAttributes) où strNameSpaceUri est la chaîne de caractères contenant l'URI complète de l'espace de nommage du tag ou une chaîne vide si le tag n'est pas compris dans un espace de nommage, strLocalName est le nom du tag sans le préfixe s'il y en avait un, strQName est le nom du tag version xml 1.0 c'est à dire $prefix:$localname, Enfin oAttributes est la liste des attributs du tag
63
Exemple d’implementation de ContentHandlerExemple d’implementation de ContentHandler
Cet événement est levé à chaque fois que des espaces normalement ignorés sont rencontrés.
appelée à la fin du parcours d’un élément
événement levé par la présence de texte entre la balise d'ouverture et la balise de fermeture
Si le parser ne lit pas la dtd, il ne peut résoudre les entités et il appéle la méthode à la rencontre de chaque entité non résolue. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <body> <h1>My resumé</h1> </body> </html>
Cet événement est lancé à chaque fois qu'une balise située dans un espace de nommage est rencontrée.
64
Exemple d’implementation de ContentHandlerExemple d’implementation de ContentHandler
Cet événement est lancé à chaque fois qu'une balise située dans un espace de nommage est rencontrée. Les attributs comme xmlns="http://ns.idns.org/" et xmlns:xlink="http://www.w3.org/1999/xlink" ne sont pas inlus dans la liste des attributs passés à la méthode startElement(). Ils sont signalés par un appel à la méthode startPrefixMapping() immédiatement avant l’appel à la méthode startElement()
Appelée à la fin du traitement dans un espace de nommage, immédiatement après l’événement endElement.
65
SAX en JavaSAX en Java
top related