Le modèle d'objet de document (DOM) propose des solutions destinées à l'insertion, à la mise à jour ou à la suppression de noeuds dans l'arborescence d'un document XML.
L'objet Document demeure l'interface privilégiée pour les opérations de créations d'objets tels que des éléments, des attributs, des sections CDATA, des instructions de traitement, etc..
Les MéthodesMéthode |
---|
Description |
Set Attribut = Objet_Document.createAttribute(Nom) |
crée un attribut. |
Set SectionCDATA = Objet_Document.createCDATASection(Données) |
crée une nouvelle section CDATA |
Set Commentaire = Objet_Document.createComment(Données) |
crée un nouveau commentaire. |
Set Fragment = Objet_Document.createDocumentFragment |
crée un fragment de document. |
Set Element = Objet_Document.createElement(nom) |
crée un noeud élément. |
Set RefEntite = Objet_Document.createEntityReference(nom) |
crée une référence d'entité. |
Set Noeud = Objet_Document.createNode(Type, Nom, URI_Espace_Nom) |
crée un noeud selon le type fourni en argument. |
Set PI = Objet_Document.createProcessingInstruction(Cible, Données) |
crée une instruction de traitement. |
Set Texte = Objet_Document.createTextNode(Données) |
crée un noeud contenant du texte. |
Suite à la création d'un noeud, la méthode appendChild ajoute un nouvel enfant à la fin de sa propre collection de noeuds.
Set Noeud_Ajoute = Objet_Noeud.appendChild(Nouvel_Enfant)
Une autre méthode insertBefore insère le noeud avant l'endroit spécifié par l'argument Référence.
Set Noeud_Insere = _ Objet_Noeud.insertBefore(Nouvel_Enfant, Référence)
De même, la méthode setAttribute ajoute un attribut avec ses nom et valeur fournis, directement dans un élément.
Objet_Element.setAttribute(Nom, Valeur)
Tandis que, la méthode setAttributeNode ajoute un objet Attribute précédemment créé dans un objet élément.
Set Attribut_Ajoute = _ Objet_Element.setAttributeNode(Objet_Attribut)
Une dernière méthode setNamedItem ajoute un nouvel attribut dans une collection.
Set Noeud_Ajoute = _ Collection_Attributs.setNamedItem(Nouveau_Noeud)
L'objet générique Node permet également de remplacer (replaceChild) ou de supprimer (removeChild) n'importe quel noeud enfant.
Objet_Noeud.replaceChild(Nouvel_Enfant, Ancien_Enfant) Objet_Noeud.removeChild(Noeud_Enfant)
D'autres méthodes de suppression existent dans le DOM. Respectivement, elles enlèvent tous les noeuds (removeAll) ou le prochaîn noeud (removeNext) d'une sélection, un attribut d'un élément (removeAttribute) ou d'une collection (removeAttributeNode, removeNamedItem et removeQualifiedItem) et enfin un espace de noms d'une collection de schéma.
Objet_Selection.removeAll Set Noeud_Supprime = Objet_Selection.removeNext Objet_Element.removeAttribute(Nom) Set Attribut_Supprime = _ Objet_Element.removeAttributeNode(Objet_Attribut) Set Attribut_Supprime = _ Collection_Attributs.removeNamedItem(Nom) Set Attribut_Supprime = _ Collection_Attributs.removeQualifiedItem _ (Nom_Base, URI_Espace_de_Noms) Collection_Schema.remove(URI_Espace_de_Noms)
La méthode appendData appliquée à des noeuds textuels comme un commentaire ou un section CDATA, permet d'ajouter à la fin du contenu, les données textuelles indiquées.
Objet_Texte.appendData(Donnée)
La propriété data permet d'affecter des données textuelles à un noeud CharacterData, Comment, Text ou ProcessingInstruction.
Objet_Texte.data = Chaine_Caracteres
La méthode replaceData, dans les mêmes conditions que précitées, remplace un contenu textuel à une position et jusqu'à un nombre spécifié un texte fourni en argument.
Objet_Texte.replaceData(Position, Nombre, Donnée)
La méthode deleteData supprime un intervalle de texte à partir d'une position et jusqu'à un nombre spécifié.
Objet_Texte.deleteData(Position, Nombre)
La méthode normalize fusionne plusieurs noeuds textuels adjacents afin d'en produire un seul, normalisant ainsi, tous les éléments descendants.
Objet_Element.normalize
Par ailleurs, la méthode cloneNode effectue une duplication du noeud courant si la valeur est False ou du noeud et de sa descendance si la valeur est True.
Set Objet_Duplique = Objet_Noeud.cloneNode(True|False)
En outre, une autre méthode de duplication est applicable à un objet Selection.
Exemple [voir]Set Selection_Duplique = Objet_Selection.clone
<% Dim Objet_Document, Objet_Style, oCommentaire Dim racine, PI_xml, PI_stylesheet, fichier_XSL Dim oAuteur, cAuteur, oDecription, cDescription Dim oNom, oOeuvres, oPoeme, cPoeme Dim auteur, description, titre Dim quatrain_A, quatrain_B, quatrain_C Dim quatrain_D, quatrain_E, saut Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument.4.0") Set Objet_Style = Server.CreateObject("MSXML2.DOMDocument.4.0") fichier_XSL = Server.MapPath("recueil.xsl") Objet_Style.async = False Objet_Style.Load fichier_XSL Set racine = Objet_Document.createElement("recueil") Objet_Document.appendChild racine saut = vbCrLf & vbCrLf auteur = "Heinrich HEINE" description = "Heinrich HEINE vécut en Allemagne entre 1797 et 1856." _ & "Il est un poète romantique par excellence, qui chante " _ & "l'amour entre la cruelle déception et un certain cynisme. " _ & "De plus, il a fortement influencé les milieux littéraires " _ & "parisiens, qu'il ne cessa de fréquenter jusqu'à sa mort." titre = "Die Zeit" quatrain_A = "Ah! qu'il est lent, ah comme il traîne," & vbCrLf _ & "le Temps horrible limaçon !" & vbCrLf _ & "Sans pouvoir remuer un membre," & vbCrLf _ & "je gis ici, cloué sur place." quatrain_B = "En ma cellule ne vient luire" & vbCrLf _ & "nul rai de soleil ni d'espoir." & vbCrLf _ & "Jusqu'à la fosse au cimetière," & vbCrLf _ & "je suis voué à mon grabat." quatrain_C = "Mourir, c'est déjà fait, peut-être;" & vbCrLf _ & "peut-être n'est-ce que fantômes," & vbCrLf _ & "ces visions qui font la foire" & vbCrLf _ & "toute la nuit dans mon cerveau." quatrain_D = "Oui c'est peut-être le spectrale" & vbCrLf _ & "sarabande des dieux païens;" & vbCrLf _ & "pour leur ébats ça leur va bien," & vbCrLf _ & "le crâne creux d'un trépassé." quatrain_E = "Mais la folle, la douce orgie," & vbCrLf _ & "ces bacchanales de la nuit," & vbCrLf _ & "la main du squelette se crispe" & vbCrLf _ & "au matin pour les esquisser." Set cPoeme = Objet_Document.createTextNode(quatrain_B) Set oAuteur = Objet_Document.createElement("auteur") Set oNom = Objet_Document.createElement("nom") Set cAuteur = Objet_Document.createTextNode(auteur) Set oDescription = Objet_Document.createElement("description") Set cDescription = Objet_Document.createTextNode(description) Set oOeuvres = Objet_Document.createElement("oeuvres") Set oPoeme = Objet_Document.createElement("poeme") oPoeme.setAttribute "titre", titre cPoeme.insertData 0, quatrain_A & saut cPoeme.insertData cPoeme.length, saut cPoeme.insertData cPoeme.length, quatrain_C & saut cPoeme.insertData cPoeme.length, quatrain_D & saut cPoeme.insertData cPoeme.length, quatrain_E oAuteur.appendChild oNom oDescription.appendChild cDescription oAuteur.appendChild oDescription oPoeme.appendChild cPoeme oOeuvres.appendChild oPoeme oAuteur.appendChild oOeuvres oNom.appendChild cAuteur oPoeme.normalize racine.appendChild oAuteur Set PI_xml = _ Objet_Document.createProcessingInstruction("xml", _ "version='1.0' encoding='iso-8859-1'") Set PI_stylesheet = _ Objet_Document.createProcessingInstruction("xml-stylesheet", _ "type='text/xsl' href='" & fichier_XSL & "'") Objet_Document.insertBefore PI_xml, racine Objet_Document.insertBefore PI_stylesheet, racine Set oCommentaire = _ Objet_Document.createComment("Fichier créé le " & date & ".") racine.appendChild oCommentaire Objet_Document.save Server.MapPath("recueil.xml") Response.Write Objet_Document.transformNode(Objet_Style) Response.Write Objet_Document.transformNode(Objet_Style) _ & "<h4>Le fichier XML est disponible à l'adresse " _ & " suivante : " & Server.MapPath("recueil.xml") & "</h4>" Set Objet_Document = Nothing Set Objet_Style = Nothing %> |