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éthodes| Mé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
%> |