Le langage ADO (ActiveX Data Objects) possède la capacité de rendre persistant des jeux d'enregistrements au format XML dans divers récepteurs tels qu'un fichier, un flux de données, un objet ASP Response ou même un objet DOM.
Ainsi, des informations provenant de différentes sources de données peuvent être manipulées par ADO, puis enregistrer directement dans un fichier XML.
Const adPersistXML = 1 Set Objet_Recordset = Server.CreateObject("ADODB.Recordset") Objet_Recordset.Open Source_Donnee, Chaine_Connection Objet_Recordset.Save adresse_fichier.xml, adPersistXML
Il est également possible de conserver un objet Recordset dans un flux de données Stream.
Set Objet_Stream = Server.CreateObject("ADODB.Stream") Objet_Recordset.Save Objet_Stream, adPersistXML
Une autre possibilité permet de retourner directement dans une page Web, un ilôt de données (Data Islands) XML, en utilisant l'objet ASP Response à la place de la source de données dans la méthode Save de l'objet Recordset.
Objet_Recordset.Save Response, adPersisXML
Néanmoins, il ne faut pas oublier d'encadrer le script ASP d'insertion par le balisage spécifique aux ilôts de données.
<XML id="Identificateur"> <% 'Script d'insertion %> </XML>
D'autre part, le prologue d'un document XML ne doit pas apparaître au sein de l'ilôt de données. En conséquence, les déclarations XML et de type de document ainsi que les instructions de traîtement doivent être éliminer avant l'insertion des données dans l'ilôt XML.
<?xml version="1.0" encoding="encodage" standalone="yes|no"?> <!DOCTYPE racine SYSTEM "definition.dtd"> <?xml-stylesheet type="text/xsl" href="style.xsl"?>
En outre, le langage ADO est capable de sauvegarder des jeux d'enregistrements dans un objet DOMDocument, à partir duquel pourra se réaliser la manipulation des données XML.
Set Objet_Document = _ Server.CreateObject("Msxml2.DOMDocument") Objet_Recordset.Save Objet_Document, adPersistXML
L'objet Stream permet de rendre un jeu d'enregistrements persistant de la même façon qu'un Recordset.
Objet_Stream.SaveToFile _ adresse_fichier.xml, SaveOptionsEnum
variable = Objet_Stream.ReadText(adReadAll)
Objet_Stream.CopyTo Autre_Stream, -1
Fichier : response.asp <%@ LANGUAGE=VBSCRIPT %> <!-- METADATA type="typelib" FILE="C:Program FilesFichiers communsSystemadomsado15.dll" --> <% Dim Objet_Connection Dim Objet_Recordset Dim Chaine_connexion Response.ContentType = "text/xml" Chaine_connexion = "Provider=SQLOLEDB; Data Source="& _ Request.ServerVariables("SERVER_NAME") & _ "; Initial Catalog=pubs; User ID=sa; Password=xxx" Set Objet_Connection = Server.CreateObject("ADODB.Connection") Objet_Connection.Open Chaine_connexion Requete_SQL = "SELECT emp_id, fname, lname, hire_date FROM employee" Set Objet_Recordset = Objet_Connection.Execute(Requete_SQL) Objet_Recordset.Save Response, adPersistXML %> Fichier : ilot_response.asp <html> <body> <XML id="employee" src="response.asp"></XML> <table border="0" bgcolor="#000000" datasrc="#employee"> <tr> <td> <table border="0" bgcolor="#FFFFFF" datasrc="#employee" datafld="rs:data"> <tr> <td> <table border="1"> <tr> <th width="120">Identificateur</th> <th width="100">Nom</th> <th width="100">Prénom</th> <th width="200">Date d'entrée</th> </tr> </table> </td> </tr> <tr> <td> <table border="1" datasrc="#employee" datafld="rs:data.z:row"> <tr> <th width="120" align="left"> <span datafld="emp_id"></span> </th> <td width="100"> <span datafld="fname"></span> </td> <td width="100"> <span datafld="lname"></span> </td> <td width="200"> <span datafld="hire_date"></span> </td> </tr> </table> </td> </tr> </table> </td> <tr> </table> </body> </html> |
<%@ Language=VBScript %> <!-- #include file="adovbs.inc" --> <html> <body> <% Dim Objet_Stream Dim Contenu_XML, Resultat Dim fichier Set Objet_Stream = Server.CreateObject("ADODB.Stream") Objet_Stream.Charset = "Windows-1252" Objet_Stream.Open fichier = Server.mapPath("recueil.xml") Objet_Stream.LoadFromFile fichier Contenu_XML = Objet_Stream.ReadText(adReadAll) prologue = "<?xml version=""1.0"" encoding=""iso-8859-1""?>" Resultat = Replace(Contenu_XML, prologue, "<XML id=""ilot_donnee"">") Resultat = Resultat & "</XML>" Objet_Stream.Close Set Objet_Stream = Nothing %> <%= Resultat %> <h2>Le document HTML contient un ilôt XML contenant les données du fichier situé à l'adresse suivante :</h2> <blockquote><%= fichier %></blockquote> <p>Pour voir l'ilôt, affichez le menu contextuel et cliquez sur <i>Afficher la source</i>.</p> </body> </html> |
<%@ LANGUAGE=VBSCRIPT %> <!-- METADATA type="typelib" FILE="C:Program FilesFichiers communsSystemadomsado15.dll" --> <html> <head> <% Dim Objet_Connection Dim Objet_Recordset Dim Chaine_connexion Dim Requete_SQL Dim Objet_Document Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Chaine_connexion = "Provider=SQLOLEDB; Data Source="& _ Request.ServerVariables("SERVER_NAME") & _ "; Initial Catalog=pubs; User ID=sa; " & _ "Password="Requete_SQL = "SELECT * FROM employee" Set Objet_Connection = Server.CreateObject("ADODB.Connection") Objet_Connection.Open Chaine_connexion Set Objet_Recordset = Objet_Connection.Execute(Requete_SQL) Objet_Recordset.Save Objet_Document, adPersistXML affichage = Visualise_Noeud(Objet_Document, 0) Function Visualise_Noeud(Objet_Noeud, nb_espaces) Dim resultat, i, nombre, nb_noeuds, Objet_Node resultat = "" For i = 1 To nb_espaces resultat = resultat & " " Next resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Objet_Noeud.nodeName _ & "</b>(" & Objet_Noeud.nodeTypeString & ") : " _ & Objet_Noeud.nodeValue If Objet_Noeud.nodeType = 1 Then If Objet_Noeud.attributes.Length Then For Each Attribut In Objet_Noeud.attributes resultat = resultat & "[ <b>" & Attribut.nodeName _ & "</b>(" & Attribut.nodeTypeString & ") : " _ & Attribut.nodeValue & " ]<br>" Next Else resultat = resultat & "<br>" End If Else resultat = resultat & "<br>" End If nb_noeuds = Objet_Noeud.childNodes.length For nombre = 0 To nb_noeuds - 1 Set Objet_Node = Objet_Noeud.childNodes(nombre) resultat = resultat & Visualise_Noeud(Objet_Node, nb_espaces + 2) Next Visualise_Noeud = resultat End Function %> </head> <body> <div><%= affichage %></div> </body> </html> |