Apprendre XML
Qu'est ce que vous devez déjà savoir ?
Qu'est ce qu'est XML ?
Comment fonctionne XML ?
XML et les navigateurs web
Les Entités, les Eléments et les Attributs
Comment programmer avec XML
La communication avec les serveurs en utilisant HTTP Request
Comment travailler avec ADO et XML
Bien joué !
Qu'est ce que vous devez déjà savoir ?
Pour lire et comprendre ceci, une connaissance de base d'HTML serait utile.
Pour comprendre le code fourni, vous devez connaître VB ou ASP.
Qu'est ce qu'est XML ?
XML est l'acronyme d'eXtensible Markup Language. Il a été approuvé
par le World Wide Web Consortium (W3C) en février 1998.
XML n'est pas réellement un nouveau langage, c'est un méta-langage
qui est utilisé pour définir d'autres langages.
XML crée des documents qui sont bien structurés et par
extension tous les langages basés sur XML sont aussi correctement structurés,
ce qui signifie que les données XML sont plus faciles à utiliser.
Ainsi, dans la mesure où il permet aux sociétés et à
leurs ordinateurs de communiquer plus facilement, XML est le socle d'un ensemble
de nouvelles façons de communiquer au travers d'Internet.
XML est utilisé pour créer d'autres langages de balisage
XML est utilisé pour créer d'autres langages de balisage dont
l'un des plus connus est XSL.
La relation entre XML et XSL est importante. Elle l'est d'autant plus que si
XML est destiné à structurer les données, XSL est utilisé
pour transformer les données XML en un format de données utilisable.
Par exemple, XSL peut être utilisé pour mettre en couleur des données
XML, ou pour les transformer.
Le développement du "standard" XML est dirigé par le
W3C.
Qu'est ce que le W3C (World Wide Web Consortium) ?
Le W3C a été fondé en 1994. Son but est de développer
des protocoles communs à travers un "consortium industriel international"
http://www.w3.org/.
Au W3C, vous pouvez trouver :
- un archivage de toute l'information sur le World Wide Web, disponible pour
les développeurs et les utilisateurs.
- les références concernant l'implémentation du code
de différents "standards".
- ainsi que différents prototypes et exemples d'applications démontrant
l'usage des nouvelles technologies encouragées par le W3C.
Le W3C est un ensemble qui regroupe les différentes parties intéressées
par la valorisation de nouvelles technologies Internet. Son processus de travail,
presque rigide et collectif, vise à prendre des décisions consensuelles
(il circule toutefois sur le Web des histoires sur les moyens coercitifs utilisés
dans certains groupes de travail), même si le résultat final n'est
pas statique et arrêté dans le temps.
Comment travaille le W3C ?
Au départ, quelqu'un (un groupe, une société, une personne)
soumet au W3C, une technologie ou un sujet concernant un point technique. Après
de NOMBREUSES discussions et consultations, un document de travail est
proposé. Avec de la chance et beaucoup de travail, on arrive à
l'achèvement d'une recommandation. A ce stade, la technologie
est considérée comme prête pour une diffusion en vue d'un
usage industriel.
Les Notes
Les Notes sont juste des idées - il n'y a aucun engagement
sur le fait qu'elles soient suivies d'effet.
Les Documents de travail
Ils représentent le travail en cours - ils témoignent du fait
qu'un groupe travaille activement sur le sujet concerné au sein du W3C.
Les Recommandations proposées
Un consensus apparaît au sein du groupe de travail. Il est soumis à
l'avis de tous.
Les Recommandations
L'idée qui avait débutée en tant que Note est maintenant
devenue un document "officiel". Pour le W3C, la technologie concernée
est prête pour être utilisée.
Ce que n'est pas le W3C ?
Le W3C n'est pas un "agent de police du Web". Il ne contraint pas
au respect des engagements pris et des technologies élaborées.
Chacune des parties impliquées peuvent (elles le font parfois) "étendre"
ou "améliorer" ce qui a déjà été
développé.
Pour en savoir plus
Pour tout connaître des activités et des projets du W3C, vous
pouvez vous rendre à l'adresse suivante : http://www.w3.org/Consortium/Activities/
.
Comment fonctionne XML ?
XML peut non seulement contenir vos données, mais aussi la structure
et une classification de l'information à l'intérieur de votre
document. En utilisant XML, votre document transporte donc de l'information
à propos de l'information qu'il contient.
Ceci est possible parce qu'avec XML vous pouvez définir vos propres
éléments de balisage. C'est ce qui en fait un meilleur langage
qu'HTML qui n'a à sa disposition qu'un nombre limité d'éléments
destinés à l'affichage des données - XML vise plus loin
que le seul affichage des données.
Créer de nouveaux éléments XML
Tant que vous suivez certaines règles, vous pouvez facilement créer
de nouveaux éléments XML.
Les éléments XML ressemblent souvent aux éléments
HTML. Voici quelques exemples :
<titre_livre>XML PROGRAMMING WITH VB AND ASP</titre_livre>
<auteur>Mark Wilson and Tracey Wilson</auteur>
<editeur>Manning Publications</editeur>
<annee_publication>2000</annee_publication>
<prix>$1,000,000</prix>
<ISBN> 1884777872</ISBN>
Quelles sont les règles d'XML ?
XML possède dix règles de base qui ressortent des objectifs fixés
par le W3C :
- XML doit être directement utilisable sur Internet.
- XML doit pouvoir supporter une large variété d'applications.
- XML doit être compatible avec SGML.
- Il doit être facile d'écrire des programmes qui puissent traiter
les documents XML.
- Le nombre des caractéristiques optionnelles d'XML doit être
minimum, idéalement il doit même être nul.
- Les documents XML doivent être humainement lisibles et raisonnablement
clairs.
- La construction de documents XML doit pouvoir être préparée
rapidement.
- Elle doit être formelle et concise.
- Les documents XML doivent être facile à créer.
- La concision dans les éléments de marquage est sans importance.
XML et les navigateurs
Il est important d'insister ici sur le fait que tout ceci n'est qu'un début.
Peu de sites Web utilisent encore XML, pour la simple et bonne raison que peu
de navigateurs le supporte.
Microsoft Internet Explorer 4.0, 5.0, 5.5 et la version prochaine version 6.0
supportent tous XML.
Netscape supporte XML dans son Communicator/Navigator 6.0, ainsi qu'RDF (Ressource
Description Format) qui est présenté par Netscape comme "une
complète intégration de l'information sur votre plate-forme".
RDF
RDF est une application XML qui est idéalement adaptée à
la manipulation de données. Grâce au support de Netscape et à
l'Open Directory Project (http://www.dmoz.org/),
RDF est utilisé pour cataloguer l'Internet.
Les Entités, les Eléments et les Attributs.
Les Eléments
Les Eléments ressemblent à ceci :
<LIVRE>...<TITRE>XML programming for VB and ASP
developers</TITRE>...</LIVRE>
Les Attributs
Les Attributs sont des parties ou des propriétés des éléments
:
<LIVRE TITRE="XML programming for VB and ASP developers">...</LIVRE>
Une intéressante similarité entre les attributs et les éléments
est que cet élément <LIVRE> peut aussi contenir un attribut
éditeur :
<LIVRE EDITEUR="Manning">XML programming for VB et ASP developers</LIVRE>
Rappelez vous toutefois que les attributs ne peuvent être hiérarchiques
- ils ne peuvent contenir de sous-éléments. Cependant, vous pouvez
changer les attributs en éléments. Pour ce faire, vous utiliserez
:
<Publication>
<Livre>XML programming for VB and ASP developers</Livre>
<Editeur>Manning</Editeur>
</Publication>
Les Entités
N'importe quel fichier (ou ressource) qui peut être "inclu"
dans un fichier XML est une entité. Une entité est aussi utilisée
pour faire référence à la représentation d'un caractère
spécial, à une chaîne de caractères et à une
inclusion.
Voici un exemple qui utilise une entité pour remplacer une chaîne
de caractères :
<!ENTITY NomDuLivre "XML programming for VB and ASP developers">
De sorte que maintenant vous pouvez utiliser l'entité &NomDuLivre
; dans un document et à chaque fois que vous y ferez référence,
la chaîne de caractères "XML programming for VB and ASP developers"
lui sera substituée. Ce qui est similaire à une constante VB.
Comment programmer avec XML
Voyons quelques exemples de programmation avec XML.
Créer des objets XML
Les développeurs ASP peuvent utiliser la syntaxe suivante pour créer,
de manière programmatique, un nouvel objet DOMDocument - c'est la même
syntaxe CreateObject que celle utilisée pour créer d'autres objets
:
<%
Dim xmlDoc
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
%>
Les programmateurs VB peuvent utiliser soit le code CreateObject vu ci-dessus,
soit ajouter dans leur projet, une référence à un objet
"Microsoft XML, version 3.0" et l'utiliser :
Dim xmlDoc As New DOMDocument
Comment obtenir les objets XML de Microsoft sur votre PC
Pour se servir de ces exemples de codes qui utilisent les objets XML de Microsoft
(comme DOMDocument), vous devez premièrement ajouter une référence
à un objet "Microsoft XML, version 3.0" dans votre projet -
naturellement vous devez aussi avoir installé ces objets sur votre ordinateur
de développement et sur les systèmes visés par la distribution
de votre application.
Il existe deux manière d'installer ces objets sur vos systèmes.
Vous pouvez soit installer IE5/5.5 (et prochainement 6.0), soit étendre
les capacités d'IE4 à l'aide des fichiers de mise à jour
que vous pourrez télécharger à partir du site de Microsoft.
Charger des éléments XML dans une liste de choix
Voici comment vous pouvez remplir une liste de choix déroulante avec
le contenu d'un fichier XML.
Private Sub cmdRefresh_Click()
Dim xmlCustomers As MSXML.DOMDocument
Dim xmlNode As MSXML.IXMLDOMNode
lstCustomers.Clear
'on appelle une DLL pour remplir un tableau avec les valeurs
Set xmlCustomers = objCustomer.GetCustomerList()
For Each xmlNode In xmlCustomers.documentElement.childNodes
lstCustomers.AddItem xmlNode.childNodes(1).firstChild.nodeValue & "_
" &xmlNode.childNodes(2).firstChild.nodeValue
lstCustomers.ItemData(lstCustomers.NewIndex) =_
xmlNode.childNodes(0).firstChild.nodeValue
Next xmlNode
End Sub
Accéder à l'XML
Si vous voulez accéder à l'XML dans votre DOMDocument, vous pouvez
utiliser le code suivant avec ASP :
Response.Write(xmlDoc.xml)
et avec VB, vous utiliserez :
MsgBox xmlDoc.xml
Gérer et corriger les erreurs
La plus simple façon de corriger vos erreurs est d'utiliser la propriété
"xml" d'un objet DOMDocument et de voir si vous avez réussi
à charger votre document. Si celle-ci ne retourne ou n'affiche rien c'est
qu'il y a eu une erreur lors du chargement. Utilisez alors la ligne de code
suivante pour voir la dernière erreur :
xmlDoc.parseError.reason
La communication avec les serveurs en utilisant HTTPRequest
Une des chose intéressante à propos de l'objet XMLHTTP, réside
dans la possibilité de "poster" des données vers un serveur
HTTP ou d'obtenir des données XML à partir d'un serveur HTTP.
C'est une façon facile d'acquérir une indépendance vis
à vis du serveur dans la mesure où votre programme ne se préoccupe
pas de savoir avec quel serveur HTTP il communique ou quel est l'OS de ce dernier
- la seule chose nécessaire pour le serveur HTTP est sa capacité
à recevoir des appels HTTP tels que POST ou GET et de passer ensuite
ces appels à une forme quelconque de programme (ASP, CGI, Java Servlets,
etc...).
Ainsi, on peut assimiler l'utilisation d'XML via les appels HTTP comme une
sorte de "middleware" ou de super glue qui permet de lier ensemble
des systèmes distincts.
Dans notre cas, vous allez ouvrir une connexion vers le serveur web hôte
(le Personnal Web Serveur 1.0a) de votre PC et utiliser ensuite un fichier ASP
qui vous donnera une réponse.
Pour établir la connexion, nous utiliserons l'objet XMLHTTP qui est
mis à notre disposition avec IE5. A la base, on ouvre une connexion "POST"
vers notre serveur web (ce que font d'ailleurs tous les navigateurs web) et
nous utilisons ensuite cette connexion. Autrement dit, nous "parlons"
au fichier PEOPLEVB.ASP et celui-ci nous retourne notre liste de choix dans
un format XML.
Recevoir un objet XML DOMDocument avec VB
Dans la partie VB de cet exemple, le code pour se connecter au serveur est
le suivant :
'On crée les objets
Dim xmlHttp As new XMLHTTPRequest
Dim xmlDoc As DOMDocument
'On ouvre la connexion POST (ou GET) avec le serveur web
xmlHttp.Open "POST", "http://localhost/xmlcode/demo.asp", False
'On établit la connexion
xmlHttp.Send
'On reçoit la réponse - remarquez que différents types de réponse
'(binaire, texte, etc...) sont supportés.
Set xmlDoc = xmlHttp.responseXML
Du côté serveur, nous utiliserons un code ASP dans le fichier
demo.asp qui vient d'être appelé. Assurez vous que votre fichier
ASP établisse bien le ContentType sur "text/xml" et pour retourner
l'XML vers le client, utilisez le code suivant :
<%
'On déclare un objet variant
Dim xmlDoc
'On place le DOMDocument dans l'objet xmlDoc
Set xmlDoc = Server.CreateObject("MSXML.DOMDocument")
'On charge le document XML
xmlDoc.load Server.MapPath("people.xml")
'On établit le type de la réponse
Response.contenttype = "text/xml"
'On retourne vers le client le DOMDocument que l'on a chargé plus haut
response.write xmlDoc
%>
Maintenant vous avez une simple application VB, qui communique avec un fichier
ASP situé sur un serveur et qui reçoit, en réponse, un
DOMDocument.
Comment travailler avec ADO et XML
Si vous utilisez ADO 2.1, vous pouvez sauvegarder votre recordset dans un fichier
XML en utilisant la méthode Save sur l'objet ADO recordset.
La méthode Save accepte deux arguments, FileName, et PersistFormat pour
lequel vous pouvez utiliser "adPersistADTG" pour créer un format
binaire et "adPersistXML" pour créer un format XML.
Essayez ce code VB pour sauvegarder votre recordset ADO en XML :
Private Sub cmdSaveAdoFile_Click()
Dim People As ADODB.Recordset
Dim ObjConn As New ADODB.Connection
'On ouvre une connexion ODBC avec la base de données
ObjConn.Open "VBXML"
'On exécute une requête SELECT sur la base de données
Set People = ObjConn.Execute("select * from People")
'On sauvegarde le recordset sous forme XML
People.Save "c:\adodemo.xml", adPersistXML
End Sub
Maintenant, pour charger ce fichier XML dans un recordset ADO, vous pouvez
utiliser ce code pour un bouton load :
Private Sub cmdLoadAdoFile_Click()
Dim People As ADODB.Recordset
Set People = New ADODB.Recordset
'On ouvre le fichier XML et on le charge
People.Open "c:\adodemo.xml", "Provider=MSPersist"
'On affiche le nombre d'enregistrements dans un message
MsgBox People.RecordCount
End Sub
Voilà, c'est tout ce qu'il y avait faire. De sorte que vous savez maintenant
comment sauvegarder et charger un recordset dans un fichier XML en quelques
lignes de code.
Bien joué !
Vous êtes désormais en bonne voie pour comprendre et travailler
avec XML. Aussi, n'hésitez pas à lire les autres exemples de la
section XML du site.
Traduction : Philippe Janvier
|