Le Modèle d'Objet de Document (DOM) est une interface de programmation d'applications (API : Applications Programming Interface) qui définit la structure logique, les modes de gestion et d'accès des documents XML, HTML (Hyper-Text Markup Language) et CSS (Cascading StyleSheet). permettant, donc, un accès dynamique à des documents et la mise à jour de leur contenu, de leur structure et de leur style par l'intermédiaire de programmes ou de scripts.
Les langages de programmation tels que Java, C++ ou ASP (Active Server Pages) s'appuient sur le DOM afin de traiter des documents XML. Développé par le W3C (World Wide Web Consortium), le modèle d'objet est universel, indépendant d'un quelconque langage ou plateforme. Seule l'implémentation, l'application capable d'exécuter des opérations à partir du DOM, est à la charge d'un fournisseur tel que Sun Microsystems, Microsoft, ou autre.
Les documents XML sont hiérarchisés selon une structure arborescente, avec un élément racine auquel sont reliés un ou plusieurs éléments enfants dont eux-mêmes peuvent être les parents d'autres enfants, et cela jusqu'à un niveau quelconque.
Les éléments également appelés noeuds possèdent chacun un type défini dans le DOM, ainsi l'élément racine serait le noeud Document, le commentaire, un noeud Comment ou encore l'attribut, un noeud Attribute, etc..
Un élément peut être composé d'un ou plusieurs noeuds, comme d'autres éléments, des instructions de traitement, ou encore du texte, mais aussi des attributs. Le DOM est un modèle complet représentant un document XML dans ses moindres détails, chaque élément de ce document possèdant une représentation spécifique dans le modèle d'objet.
Le modèle d'objet spécifié par le W3C indique douze types de noeuds différents.
Le modèle d'objet de document fournit tout une panoplie d'outils destinés à construire ou déconstruire 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 des directions de déplacement dans une arborescence XML. Les propriétés parentNode, 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 noeud courant.
Le modèle d'objet de document offre donc au programmeur les moyens de traiter un document XML dans sa totalité. Néanmoins, s'il définit certaines règles structurelles, il ne peut se substituer aux spécifications XML régissant la syntaxe et la structure fondamentale d'un document XML.
Le DOM (Document Object Model) propose plusieurs objets représentant chaque composant de l'arborescence d'un document structuré et hiérarchisé.
Ces objets contiennent plusieurs méthodes et propriétés permettant de gérer l'ensemble d'un document XML.
Ces objets appelés interfaces, proviennent des spécifications du World Wide Web Consortium.
Les objets présentés ci-dessous sont pour la plupart communs au DOM XML de Microsoft et à celui de Java de Sun, néanmoins certains ne sont compatibles que pour l'un ou l'autre des éditeurs.
Les interfaces spécifiées par le W3C (World Wide Web Consortium) représentent chacun une partie distincte de l'arborescence d'un document XML comme des noeuds d'éléments, d'attributs, de texte, ou des collections de noeuds ou encore des fragments de document, etc..
Interface | Description |
---|---|
Propriétés | |
Méthodes | |
![]() |
représente un attribut, défini dans la Définition de Type de Document, d'un objet Element. |
name, ownerElement, specified, value attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente une section de données textuelles (Character DATA Section). |
data, length, attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendData, deleteData, insertData, replaceData, substringData, appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, splitText | |
![]() |
est une extension de l'interface Node qui permet d'accèder aux données textuelles dans le modèle d'objet. |
data, length attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendData, deleteData, insertData, replaceData, substringData appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente un commentaire dans un document XML ou HTML : <!-- Commentaire -->. |
data, length, attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendData, deleteData, insertData, replaceData, substringData, appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente la totalité d'un document XML ou HTML. En fait il est la racine (root) de l'arborescence d'un document. |
doctype, documentElement, implementation attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
createAttribute, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createElement, createElementNS, createEntityReference, createProcessingInstruction, createTextNode, getElementById, getElementsByTagName, getElementsByTagNameNS, importNode appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente une partie de l'arborescence d'un document. Ce fragment pouvant ne pas être bien formé, est utilisé généralement pour des opérations d'insertion. |
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente la déclaration de type de document indiqué par la balise <DOCTYPE>. |
entities, internalSubset, name, notations, publicId, systemId attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
fournit des méthodes qui sont indépendantes de n'importe quelles instances particulières du Modèle d'Objet du Document |
Aucune | |
createDocument, createDocumentType, hasFeature | |
![]() |
représente tous les noeuds communs, à l'exception des noeuds textuelles, dans les documents XML. |
tagName attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
getAttribute, getAttributeNS, getAttributeNode, getAttributeNodeNS, getElementsByTagName, getElementsByTagNameNS, hasAttribute, hasAttributeNS, removeAttribute, removeAttributeNS, removeAttributeNode, setAttribute, setAttributeNS, setAttributeNode, setAttributeNodeNS appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
rerpésente une entité analysée ou non-analysée dans un document XML. |
notationName, publicId, systemId attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
contient le nom de l'entité <!ENTITY Nom SYSTEM Valeur>. |
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente des collections de noeuds qui peuvent être accèdées par un nom. |
length | |
getNamedItem, getNamedItemNS, item, removeNamedItem, removeNamedItemNS, setNamedItem, setNamedItemNS | |
![]() |
représente un noeud unique dans l'arborescence d'un document XML. |
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente une collection de noeuds ordonnés. |
length | |
item | |
![]() |
représente une notation <!NOTATION> déclarée dans la DTD. |
publicId, systemId attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente une instruction de traîtement <?Nom_Instruction Contenu?>. |
data, target attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild | |
![]() |
représente le contenu textuel d'un attribut ou d'un élément. |
data, length, attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling | |
splitText appendData, deleteData, insertData, replaceData, substringData, appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild |
Les opérations DOM peuvent provoquer certaines exceptions dans des circonstances exceptionnelles.
DOMException = Code_Exception
Une exception est lancée lorsqu'une opération est impossible à exécuter à cause de données perdues ou d'une instabilité de l'implémentation ou encore si un argument de valeur nulle est passé.
Tous les langages ne supportent pas cette interface, mais par des méthodes spécifiques retournent des codes d'exception similaires à ceux renvoyés par l'interface DOMException. Microsoft utilise l'objet IXMLDOMParseError.
Les Codes d'exceptionConstante | Valeur |
---|---|
Description | |
INDEX_SIZE_ERR | 1 |
est lancé si un index ou une taille est négative ou plus grande que la valeur permise. | |
DOMSTRING_SIZE_ERR | 2 |
est lancé si l'intervalle de texte ne convient pas au type des chaînes de caractères DOM, soit une séquence d'unité de 16 bits. | |
HIERARCHY_REQUEST_ERR | 3 |
est lancé si n'importe quel noeud est inséré quelque part où il ne convient pas. | |
WRONG_DOCUMENT_ERR | 4 |
est lancé si un noeud est utilisé dans un document différent de celui qui le crée. | |
INVALID_CHARACTER_ERR | 5 |
est lancé si un caractère illégal ou invalide est spécifié notamment dans un nom. | |
NO_DATA_ALLOWED_ERR | 6 |
est lancé si les données sont spécifiées pour un noeud qui ne supporte par de données. | |
NO_MODIFICATION_ALLOWED_ERR | 7 |
est lancé si une tentative est faite pour modifier un objet où les modifications nes sont pas permises. | |
NOT_FOUND_ERR | 8 |
est lancé si une tentative est faite pour référencer un noeud dans un contexte où il n'existe pas. | |
NOT_SUPPORTED_ERR | 9 |
est lancé si l'implémentation ne supporte pas le type requis de l'objet ou de l'opération. | |
INUSE_ATTRIBUTE_ERR | 10 |
est lancé si une tentative est faite pour ajouter un attribut qui est déjà utilisé quelque part. | |
INVALID_STATE_ERR | 11 |
est lancé si une tentative est faite pour utiliser un objet qui n'est pas utilisable. | |
SYNTAX_ERR | 12 |
est lancé si une chaîne de caractères illégale ou invalide est spécifiée. | |
INVALID_MODIFICATION_ERR | 13 |
est lancé si une tentative est faite pour modifier le type de l'objet sous-jacent. | |
NAMESPACE_ERR | 14 |
est lancé si une tentative est faite pour créer ou modifier un objet d'une manière incorrecte par rapport aux espaces de noms. | |
INVALID_ACCESS_ERR | 15 |
est lancé si un paramètre ou une opération n'est pas supporté par l'objet sous-jacent. |
Les propriétés permettent de retourner et pour certaines d'affecter, des valeurs ou des objets DOM.
Noeud_DOM.Propriété = Valeur | Objet
Propriété |
---|
Description |
Node.attributes = NamedNodeMap |
retourne les attributs du noeud s'il s'agît d'un élément sinon il retourne null. |
Node.childNodes = NodeList |
retourne tous les enfants du noeud, s'il n'y en a pas il retourne null. |
CharacterData.data = Chaîne_de_caractères |
retourne ou affecte les données textuelles du noeud qui implémente cette interface. |
ProcessingInstruction.data = Chaîne_de_caractères |
retourne ou affecte le contenu de l'instruction de traîtement. |
Document.doctype = DocumentType |
retourne la déclaration de type de document <!DOCTYPE...> associée au document. |
Document.documentElement = Element |
retpourne l'élément racine du document. |
DocumentType.entities = NamedNodeMap |
retourne un objet NamedNodeMap contenant les entités générales externes et internes déclarées dans a DTD. |
Node.firstChild = Node |
retourne le premier enfant du noeud. |
Document.implementation = DOMImplementation |
retourne l'objet DOMImplementation qui manipule ce document. |
DocumentType.internalSubset = Chaîne_de_caractères |
retourne le sous-ensemble interne sous forme de chaîne de caractères. |
Node.lastChild = Node |
retourne le dernier enfant du noeud. |
CharacterData.length = Longueur |
retourne le nombre d'unité de 16 bits qui sont disponibles par l'intermédiaire de la propriété data et de la méthode substringData(). |
NamedNodeMap.length = Nombre |
retourne le nombre de noeuds dans l'objet NamedNodeMap. |
NodeList.length = Nombre |
retourne le nombre de noeuds dans la liste. |
Node.localName = Chaîne_de_caractères |
retourne la partie locale du nom qualifié du noeud. |
Attr.name = Chaîne_de_caractères |
retourne le nom de l'attribut. |
DocumentType.name = Chaîne_de_caractères |
retourne le nom de la DTD, soit <DOCTYPE Nom...>. |
Node.namespaceURI = Chaîne_de_caractères |
retourne l'adresse URI de l'espace de noms du noeud. |
Node.nextSibling = Node |
retourne le noeud suivant immédiatement le noeud courant. |
Node.nodeName = Chaîne_de_caractères |
retourne le nom du noeud. |
Node.nodeType = Code |
retourne un code représentant le type de l'objet sous-jacent. |
Node.nodeValue = Chaîne_de_caractères |
retourne ou affecte la valeur du noeud. |
Entity.notationName = Chaîne_de_caractères |
retourne le nom de la notation pour l'entité non-analysée et Null pour les entités analysées. |
DocumentType.notations = NamedNodeMap |
retourne un objet NamedNodeMap contenant les notations déclarées dans la DTD. |
Node.ownerDocument = Document |
retourne l'objet Document associé au noeud. |
Attr.ownerElement = Element |
retourne le noeud élément auquel est lié l'attribut. |
Node.parentNode = Node |
retourne le parent du noeud à condition que ce-dernier puisse en avoir un. |
Node.prefix = Chaîne_de_caractères |
retourne le préfixe de l'espace de noms du noeud. |
Node.previousSibling = Node |
retourne le nom précédent immédiatement le noeud courant. |
DocumentType.publicId = Chaîne_de_caractères |
retourne l'identificateur public du sous-ensemble externe. |
Entity.publicId = Chaîne_de_caractères |
retourne l'identificateur public associé à l'entité. |
Notation.publicId = Chaîne_de_caractères |
retourne l'identificateur public de la notation. |
Attr.specified = True | False |
Si l'attribut possède une valeur assignée dans le document specified est égal à True et la valeur est la valeur assignée. Si l'attribut ne possède pas de valeur assignée dans le document et a une valeur par défaut dans la DTD, alors specified est égal à False et la valeur est la valeur par défaut dans la DTD. Si l'attribut ne possède pas de valeur assignée dans le document et a une valeur #IMPLIED dans la DTD, alors l'attribut n'apparaît pas dans le modèle de structure du document. Si la propriété ownerElement est nulle, alors specified est True. |
DocumentType.systemId = Chaîne_de_caractères |
retourne l'identificateur système du sous-ensemble externe. |
Entity.systemId = Chaîne_de_caractères |
retourne l'identificateur système associé à l'entité. |
Notation.systemId = Chaîne_de_caractères |
retourne l'identificateur système associé à la notation. |
Element.tagName = Chaîne_de_caractères |
retourne le nom de l'élément. |
ProcessingInstruction.target = Chaîne_de_caractères |
retourne la cible de l'instruction de traîtement |
Attr.value = Chaîne_de_caractères |
retourne ou affecte la valeur de l'attribut sous forme de chaîne de caractères ou crée un noeud Text avec un contenu textuel non-analysé. |
Note : Pour des raisons de commodités, aucune différence n'a été faite dans la syntaxe quant à l'affectation ou la récupération de valeur.
Noeud.Propriété = Valeur
Variable = Noeud.Propriété
Les méthodes permettent d'accomplir diverses opérations sur l'arborescence d'un document XML.
Les MéthodesNoeud.Méthode(Argument) = Résultat
Méthode |
---|
Description |
Noeud.appendChild(Nouveau_Noeud) = Noeud |
ajoute un nouveau noeud ou un fragment de document à la fin de la liste des enfants du noeud. |
CharacterData.appendData(Chaîne_de_caractères) |
ajoute la chaîne de caractères à la fin des données textuelles du noeud. |
Noeud.cloneNode(Bool_Profondeur) = Noeud |
retourne si l'argument Profondeur est false, un double du noeud lui même et éventuellement de ses attributs si c'est un élément. Si la valeur est true, un clonage récursif du sous-arbre sous le noeud est pratiqué, en clair le noeud, ses attributs et l'ensemble de sa descendance sont dupliqués. |
Document.createAttribute(Nom) = Attr |
crée un attribut avec le nom spécifié. |
Document.createAttributeNS(URI_Espace_Noms, Nom_Qualifié) = Attr |
retourne un objet attribut avec un espace de noms et un nom spécifiés en argument. |
Document.createCDATASection(Texte) = CDATASection |
retourne une section CDATA avec le contenu textuel spécifié. |
Document.createComment(Texte) = Comment |
retourne un noeud commentaire avec le contenu textuel spécifié. |
DOMImplementation.createDocument(URI_Espace_Noms, Nom_Qualifié, Type_Document) = Document |
retourne un nouvel objet Document avec un URI espace de noms, un nom qualifié et éventuellement la déclaration de type de document à lui associer. |
Document.createDocumentFragment() = DocumentFragment |
retourne un fragment de document. |
DOMImplementation.createDocumentType(Nom_Qualifié, ID_Public, ID_Système) = DocumentType |
retourne un nouvel objet DocumentType avec un nom et les identificateurs public et système spécifiés en argument. |
Document.createElement(Nom) = Element |
retourne un nouvel objet élément avec le nom spécifié. |
Document.createElementNS(URI_Espace_Noms, Nom_Qualifié) = Element |
retourne un nouvel objet élément avec l'adresse URI d'espaces de noms et le nom spécifié. |
Document.createEntityReference(Nom) = EntityReference |
retourne un nouvel objet EntityReference avec le nom indiqué. |
Document.createProcessingInstruction(Cible, Données) = ProcessingInstruction |
crée une nouvelle instruction de traîtement avec la partie cible et les données du indiquées. |
Document.createTextNode(Texte) = Text |
retourne un nouveau noeud Text avec le contenu textuel spécifié. |
CharacterData.deleteData(Position, Nombre) |
supprime un intervalle à partir d'une position et jusqu'au nombre indiqué. |
Element.getAttribute(Nom) = Chaîne_de_caractères |
retourne la valeur d'un attribut identifié par son nom. |
Element.getAttributeNode(Nom) = Attr |
retourne un noeud d'attribut identifié par son nom. |
Element.getAttributeNodeNS(URI_Espace_Noms, Nom) = Attr |
retourne un noeud d'attribut identifié par son adresse URI d'espace de noms et son nom. |
Element.getAttributeNS(URI_Espace_Noms, Nom) = Chaîne_de_caractères |
retourne la valeur d'un attribut identifié par son adresse URI d'espace de noms et son nom. |
Document.getElementById(ID_Elément) = Element |
retourne l'objet élément identifié par l'identificateur fourni en argument. |
Document.getElementsByTagName(Nom) = ListeNoeud |
retourne une liste de noeuds contenant tous les éléments répondant au nom spécifié. |
Element.getElementsByTagName(Nom) = ListeNoeud |
retourne une liste de noeuds contenant tous les éléments correspondant au nom spécifié. |
Document.getElementsByTagNameNS(URI_Espace_Noms, Nom) = ListeNoeud |
retourne une liste de noeuds contenant tous les éléments répondant à l'adresse URI et au nom indiqués en argument. |
Element.getElementsByTagNameNS(URI_Espace_Noms, Nom) = ListeNoeud |
retourne une liste de noeuds contenant les éléments correspondant à l'adresse URI d'espace de noms et le nom indiqués. |
NamedNodeMap.getNamedItem(name) = Noeud |
retourne un noeud identifié par son nom. |
NamedNodeMap.getNamedItemNS(EspaceNomURI, NoLocal) = Noeud |
retourne un noeud identifié par l'intermédaire de son adresse URI d'espace de noms et son nom. |
Noeud.hasAttribute() = True | False |
retourne True si le noeud possède des attributs, sinon False. |
Element.hasAttributeNS(URI_Espace_Noms, Nom_Local) = True | False |
retourne True lorsqu'un attribut, avec un nom local et une adresse URI d'espace de noms fournis, est spécifié sur l'élément ou a une valeur par défaut, sinon False. |
Noeud.hasAttributes() = True | False |
retourne True si le noeud a des attributs, sinon False. |
Noeud.hasChildNodes() = True | False |
retourne True si le noeud a des enfants, sinon False. |
DOMImplementation.hasFeature(Caractéristique, Version) = True | False |
teste si l'impémentation DOM exécute une caractéristique spécifique dans sa version indiquée. |
Document.importNode(Noeud, Bool_Profondeur) = Noeud |
importe un noeud à partir d'un autre document. Le noeud est modifié ou enlevé du document source et une copie est retournée. |
Noeud.insertBefore(Nouvel_Enfant, Référence_Enfant) = Noeud |
insère un nouveau noeud enfant Nouvel_Enfant avant le noeud enfant existant Référence_Enfant. Si ce-dernier est nul, alors le nouveau noeud sera inséré à la fin de la liste d'enfants. |
CharacterData.insertData(Position, Texte) |
insère une chaîne de caractères à la position spécifiée. |
Noeud.isSupported(Caractéristique, Version) = True | False |
teste si l'implémentation DOM exécute une caractéristique spécifique et que celle-ci soit supportée par le noeud. |
NamedNodeMap.item(Index) = Noeud |
retourne le noeud positionné à l'index spécifié. |
NodeList.item(Index) = Noeud |
retourne le noeud positionné à l'index spécifié. |
Noeud.normalize() |
combine deux ou plusieurs noeuds textuels adjacents à l'intérieur d'un noeud textuel unifié. |
Element.removeAttribute(Nom) |
enlève un attribut par l'intermédiaire de son nom. |
Element.removeAttributeNode(URI_Espace_Noms, Nom) = Attr |
enlève un attribut par son nom et l'adresse URI d'espace de noms. |
Element.removeAttributeNS(Attr) |
enlève l'objet atribut spécifié et le retourne. |
Noeud.removeChild(Ancien_Enfant) = Noeud |
enlève le noeud enfant spécifié en argument de la liste d'enfant et le retourne. |
NamedNodeMap.removeNamedItem(Nom) = Noeud |
enlève un noeud par son nom le retourne. |
NamedNodeMap.removeNamedItemNS(URI_Espaces_Nom, Nom) = Noeud |
enlève un noeud identifié par l'adresse URI d'espace de noms et son nom. |
Noeud.replaceChild(Nouvel_Enfant, Ancien_Enfant) = Noeud |
remplace l'ancien noeud par le nouveau noeud dans la liste d'enfants et le retourne. |
CharacterData.replaceData(Position, Nombre, Chaîne_Caractères) |
remplace le caractère de départ à la position spécifiée par la chaîne de caractères spécifiées. |
Element.setAttribute(Nom, Valeur) |
ajoute un attribut avec un nom et une valeur indiqués. |
Element.setAttributeNode(Nom, Valeur) = Attr |
ajoute un attribut avec le nom et la valeur spécifiés. |
Element.setAttributeNodeNS(Nouvel_Attribut) = Attr |
ajoute un nouvel attribut à la liste d'attributs du noeud. |
Element.setAttributeNS(URI_Espace_Noms, Nom_Qualifié, Valeur) |
ajoute un nouvel attribut avec un URI d'espace de noms, un nom qualifié et une valeur. |
NamedNodeMap.setNamedItem(Noeud) = Noeud |
ajoute un noeud utilisant sa propriété nodeName. |
NamedNodeMap.setNamedItemNS(Noeud) = Noeud |
ajoute un noeud utilisant ses propriétés namespaceURI et localName. |
Text.splitText(Position) = Text |
découpe un noeud textuel en deux, à la position pécifiée et conserve les deux comme frères dans l'arborescence du document. |
CharacterData.substringData(Position, Nombre) = Chaîne_de_caractères |
extrait un intervalle de données à partir d'un noeud à la position et jusqu'au nombre indiqué. |
Note : Pour des raisons de commodités, la valeur retournée par une méthode est placée sur la droite alors que celle-ci est transmise en réalité vers la gauche comme ceci :
Variable = Noeud.Méthode()
Les objets présentés ici proviennent des spécifications DOM propres à Microsoft et partant ne sont compatibles que sous les langages et plateformes du même éditeur.
L'objet Document représente la totalité d'un document HTML ou XML.
La création de l'objet DOMDocument s'effectue à partir de l'instruction suivante :
Set objet_Document = _ Server.CreateObject("Msxml2.DOMDocument") Set objet_Document = _ Server.CreateObject("F6D90F11-9C73-11D3-B32E-00C04F990BB4") |
La première instruction utilise un ProgID d'une version indépendante et la seconde un ClassID.
L'objet DOMDocument peut être utilisé soit en un modèle d'unités d'exécution libres ou d'unités d'exécution louées.
L'objet FreeThreadedDOMDocument est à utiliser s'il est nécessaire de le conserver à l'intérieur de la portée d'une session ou d'une application.
Le comportement des deux modèles est identique. Toutefois, le modèle de location offre de meilleures performances car l'analyseur ne nécessite pas de gérer des accès simultanés parmi les unités d'exécution. Il n'est pas possible de combiner des noeuds ou des documents qui sont créés en utilisant des modèles différents de partage d'unités d'exécution.
Set objet_Document = _ Server.CreateObject("Msxml2.FreeThreadedDOMDocument") Set objet_Document = _ Server.CreateObject("F6D90F12-9C73-11D3-B32E-00C04F990BB4") |
Tous les autres objets d'un document XML découlant du document comme les noeuds enfants sont créés et accédés par l'objet DOMDocument.
Cet objet contient de nombreuses méthodes et propriétés permettant notamment de créer, modifier ou gérer tous les types de noeuds d'extraitre leur contenu ou valeur, ainsi que de travailler en coordination avec les feuilles de style XSL ou XSL-Transformation.
Les PropriétésPropriété |
---|
Description |
Objet_Document.async |
indique si le télechargement asychrone est permis en lecture et écriture. |
Set Objet_NamedNodeMap = Objet_Document.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Document.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Document.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Document.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Document.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_DocumentType = Objet_Document.doctype |
contient le noeud de type de document qui spécifie le DTD pour ce document en lecture seule. |
Set Objet_Element = Objet_Document.documentElement |
contient l'élément racine du document en lecture et écriture. |
Set Objet_Node = Objet_Document.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Implementation = Objet_Document.implementation |
contient l'objet IXMLDOMImplementation pour ce document en lecture seule. |
Set Objet_Node = Objet_Document.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Document.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Document.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Document.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Document.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_Document.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Document.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Document.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document.ondataavailable = Gestionnaire_Evénement |
spécifie le gestionnaire d'événements pour ondataavailable en lecture et écriture. |
Set Objet_Document.onreadystatechange= Gestionnaire_Evénement |
spécifie le gestionnaire d'événement pour être appelé lorsque la propriété readyState se modifie en lecture et écriture. |
Set Objet_Document.ontransformnode = Gestionnaire_Evénement |
spécifie le gestionnaire d'événement pour ontransformnode en lecture et écriture. |
Set Objet_Document = Objet_Document.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Document.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Document.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Set Objet_Error = Objet_Document.parseError |
retourne un objet IXMLDOMParseError qui contient des informations à propos de la dernière erreur analysée en lecture seule. |
Valeur = Objet_Document.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
True | False = Objet_Document.preserveWhiteSpace |
contient True si le traitement préserve les espaces blancs, sinon False en lecture et écriture. |
Set Objet_Node = Objet_Document.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
LOADING (1) | LOADED (2) | INTERACTIVE (3) | COMPLETED (4) = Objet_Document.readyState |
indique l'état courant du document XML en lecture seule. |
True | False = Objet_Document.resolveExternals |
indique si les définitions externes doivent être résolues en temps d'analyse, indépendantes de validation en lecture et écriture. |
True | False = Objet_Document.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Document.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
URL = Objet_Document.url |
retourne l'URL canonique pour le dernier document XML chargé en lecture seule. |
True | False = Objet_Document.validateOnParse |
indique si l'analyseur doit valider ce document en lecture et écriture. |
Valeur = Objet_Document.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Objet_Document.abort() |
annule le téléchargement asynchrone en cours. |
Set Objet_Node = Objet_Document.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_Document.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Set Objet_Attribute = Objet_Document.createAttribute(Nom) |
crée un nouvel attribut avec le nom spécifié. |
Set Objet_CDATASection = Objet_Document.createCDATASection(Données) |
crée un noeud CDATA qui contient les données fournies. |
Set Objet_Comment = Objet_Document.createComment(Données) |
crée un noeud commentaire qui contient les données fournies. |
Set Objet_DocumentFragment = Objet_Document.createDocumentFragment(DocFragment) |
crée un objet vide DocumentFragment. |
Set Objet_Element = Objet_Document.createElement(nom) |
crée un noeud élément utilisant le nom spécifié. |
Set Objet_Node = Objet_Document.createEntityReference(name) |
crée une nouvel objet EntityReference. |
Set Objet_Node = Objet_Document.createNode(Type, Nom, URI_Espace_Nom) |
crée un noeud utilisant le type, le nom et l'espace de nom fournis. |
Set Objet_ProcessingInstruction = Objet_Document.createProcessingInstruction(Cible, Données) |
crée un noeud instruction de traitement qui contient la cible et les données spécifiées. |
Set Objet_Text = Objet_Document.createTextNode(Données) |
crée un noeud textuel qui contient les données spécifiées. |
Set Objet_NodeList = Objet_Document.getElementsByTagName(Nom) |
retourne une collection d'éléments qui porteront le nom indiqué. |
True | False = Objet_Document.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Document.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
True | False = Objet_Document.load(Source_XML) |
charge un document XML à partir de la localisation spécifiée. |
True | False = Objet_Document.loadXML(Chaîne_XML) |
charge un document XML utilisant la chaîne de caractères spécifiée. |
Set Objet_Node = Objet_Document.nodeFromID(Chaîne_ID) |
retourne le noeud duquel l'attribut ID correspond à la valeur fournie. |
Set Objet_Node = Objet_Document.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Document.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_Document.save(Destination) |
sauvegarde un docment XML vers la localisation spécifiée. |
Set Objet_NodeList = Objet_Document.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Document.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_Document.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Document.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
Evénement |
---|
Description |
Objet_Document.ondataavailable = Gestionnaire_Evénément |
indique que les données du document XML sont disponibles. |
Objet_Document.onreadystatechange = Gestionnaire_Evénément |
indique lorsque la propriété readyState change. |
True | False = ontransformnode(Noeud_XSL, Noeud_XML) |
indique lorsque le traitement de transformation doit continuer ou s'arrêter. |
<% Const OpenFileForReading = 1 Dim obj_fso, Objet_Document, obj_info,obj_logiciel, racine Dim obj_nom, obj_commentaire, obj_adresse, obj_editeur Dim obj_systeme_exploitation, obj_monnaie, obj_prix Dim nom_txt, commentaire_txt, adresse_txt, editeur_txt Dim systeme_exploitation_txt, monnaie_txt, prix_txt Dim nom, commentaire, adresse, editeur, systeme_exploitation Dim monnaie, prix, tableau, i, delimiteur i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("informations.txt") Set obj_info = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Set racine = Objet_Document.createElement("liste") Objet_Document.appendChild racine delimiteur = "{" Do While Not obj_info.AtEndOfStream ligne = obj_info.ReadLine tableau = Split(ligne, delimiteur, -1, 1) nom = tableau(0) commentaire = tableau(1) adresse = tableau(2) editeur = tableau(3) langue = tableau(4) systeme_exploitation = tableau(5) monnaie = tableau(6) prix = tableau(7) Response.Write "<b>Ligne n°" & i & "</b><br>---------<br>" & nom _ & "<br>" & commentaire & "<br>" & adresse & "<br>" _ & editeur & "<br>" & langue & "<br>" _ & systeme_exploitation & "<br>" & monnaie _ & " " & prix & "<br><br>" Set obj_logiciel = Objet_Document.createElement("logiciel") obj_logiciel.setAttribute "langue", langue obj_logiciel.setAttribute "systeme_exploitation", systeme_exploitation Set obj_nom = Objet_Document.createElement("nom") Set nom_txt = Objet_Document.createTextNode(nom) Set obj_commentaire = Objet_Document.createElement("commentaire") Set commentaire_txt = Objet_Document.createTextNode(commentaire) Set obj_editeur = Objet_Document.createElement("editeur") Set editeur_txt = Objet_Document.createTextNode(editeur) obj_editeur.setAttribute "adresse", adresse Set obj_prix = Objet_Document.createElement("prix") Set prix_txt = Objet_Document.createTextNode(prix) obj_prix.setAttribute "monnaie", monnaie obj_nom.appendChild nom_txt obj_commentaire.appendChild commentaire_txt obj_editeur.appendChild editeur_txt obj_prix.appendChild prix_txt obj_logiciel.appendChild obj_nom obj_logiciel.appendChild obj_commentaire obj_logiciel.appendChild obj_editeur obj_logiciel.appendChild obj_prix racine.appendChild obj_logiciel i = i + 1 Loop Objet_Document.save(Server.MapPath("logiciel.xml")) Response.Write "Le fichier de statistique au format XML" _ & " est disponible à l'adresse suivante :<br>" _ & Server.MapPath("logiciel.xml") obj_info.close Set obj_info = Nothing %> |
L'objet IXMLDOMDocument2 est une extension de DOMDocument qui supporte les schémas cachés et les caractéristiques de validation, et change de support XPath.
Set objet_Document2 = _ Server.CreateObject("Msxml2.DOMDocument") Set objet_FTDocument2 = _ Server.CreateObject("Msxml2.FreeThreadedDOMDocument") |
Propriété |
---|
Description |
Set Objet_SchemaCollection = Objet_Document2.namespaces |
retourne laliste des espaces de noms dans le document. |
Set Objet_SchemaCollection = Objet_Document2.schemas |
utilise les objets XMLSchemaCache et IXMLDOMSchemaCollection pour trouver les documents de schéma. |
Propriété |
---|
Méthode |
Valeur_Propriété = Objet_Document2.getProperty(nom) |
identifie les valeurs par défaut ou les valeurs fixées par la méthode setProperty. |
Set Objet_Selection = Objet_Document2.selectNodes(expression) |
modifie les noeuds sélectionnés pour retourner un objet IXMLDOMSelection. |
objXMLDOMDocument2.setProperty(nom, valeur) |
permet de fixer les proprétés. |
Objet_Document2.validate() |
exécute une opération de validation sur le document XML courant chargé. |
<% Dim Objet_Document, objet_listenoeuds Dim fichier, noeud, i Dim expression, langage Set Objet_Document = Server.CreateObject("Msxml2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load(fichier) Objet_Document.setProperty "SelectionLanguage", "XPath" Set objet_listenoeuds = Objet_Document.selectNodes _ ("//categorie[@nom][contains(., 'Editeur')]/logiciel") i = 0 expression = objet_listenoeuds.expr langage = objet_listenoeuds.getProperty("SelectionLanguage") Response.Write "<h3>Résultat de l'expression <i>" & langage _ & "</i> : " & expression & "</h3>" _ & "<u>La liste contient "& objet_listenoeuds.length _ & " noeuds :</u><hr>" For Each noeud In objet_listenoeuds i = i + 1 Response.Write i " - <b>" & noeud.attributes.item(0).value _ & "</b> : " & noeud.text & "<br>" Next %> |
L'objet IXMLDOMNamedNodeMap ajoute le support pour les espaces de noms et l'itération par l'intermédaire de la collection de noeuds d'attribut.
Objet_NamedNodeMap = Objet_Node.attributes
Cet objet est une collection de noeuds typiquement utilisée pour les attributs.
Les noeuds contenus dans l'objet IXMLDOMNamedNodeMap peuvent être accédés par l'intermédiaire de leur nom ou de leur index passé en argument dans les différentes méthodes disponibles destinées à les manipuler.
Set Objet_Attribut = Objet_NamedNodeMap.getNamedItem(Nom) Objet_Attribut = Objet_NamedNodeMap.item(Index) Objet_Attribut = Objet_NamedNodeMap.removeNamedItem(Nom)
Des objets IXMLDOMAttribute peuvent être insérés dans une collection IXMLDOMNamedNodeMap en faisant appel à sa méthode setNamedItem.
Objet_Attribut = _ Objet_NamedNodeMap.setNamedItem(Objet_Attribute)
L'éxécution de Microsoft préserve l'ordre des attributs dans lequel ces derniers apparaissent dans la source XML. Les attributs supplémentaires sont ajoutés à la fin de la liste. Un attribut de'espace de noms (xmlns) est inséré comme le premier dans la liste si le nom de balise requiert l'espace de noms, ou immédiatement avant l'attribut qui emploie un espace de noms non déclaré.
La collection IXMLDOMNamedNodeMap est similaire à une liste de noeuds, toutefois la collection est active. En effet, l'ajout, le déplacement de noeuds et les modifications dans des noeuds, sont immédiatement répercutés au sein de la collection. En conséquence, deux requêtes successives sur des membres de la collection utilisant le même index peuvent retourner deux items différents, dépendant des changements dans la collection.
En outre, les modifications sur les objets nodaux sont immédiatement disponibles dans les noeuds obtenus à partir de la liste.
Lorsqu'une valeur par défaut est spécifiée dans le schéma pour un attribut et que ce dernier est déplacé, il est automatiquement regénéré avec la valeur par défaut, comme spécifié dans le standard du W3C. L'attribut réapparaît immédiatement, car la collection est active, avec une modfication correspondante dans le nombre d'items de la collection. En déplaçant un attribut avec un tel paramètrage par défaut, il faut de nouveau récupérer le nombre d'items dans la collection pour obtenir un compte précis. Il faut également réinitialiser n'importe quel index dans la collection.
Les PropriétésPropriété |
---|
Description |
Nombre = Objet_NamedNodeMap.length |
indique le nombre d'items dans la collection en lecture seule. |
Méthode |
---|
Description |
Set Objet_Attribut = Objet_NamedNodeMap.getNamedItem(Nom) |
récupère l'attribut avec le nom spécifié. |
Set Objet_Attribut = Objet_NamedNodeMap.getQualifiedItem(Nom_Base, URI_Espace_Noms) |
retourne l'attribut avec l'espace de noms et le nom de l'attribut spécifiés. |
Set Objet_Attribut = Objet_NamedNodeMap.item(Index) |
autorise l'accès aléatoire à des noeuds individuels à l'intérieur d'une collection, en lecture seule. |
Set Objet_Attribut = Objet_NamedNodeMap.removeNamedItem(Nom) |
enlève un attribut depuis une collection. |
Set Objet_Attribut = Objet_NamedNodeMap.removeQualifiedItem(Nom_Base, URI_Espace_Noms) |
enlève l'attribut avec l'espace de noms et le nom de l'attribut spécifiés. |
Objet_NamedNodeMap.reset() |
réinitialise le moteur d'itération (iterator). |
Set Objet_Attribut = Objet_NamedNodeMap.setNamedItem(Objet_Attribute) |
ajoute le noeud fourni à la collection. |
<html> <head> <script language="Javascript" type="text/javascript"> var Tab_TypeNoeud = new Array('NODE_ELEMENT', 'NODE_ATTRIBUTE', 'NODE_TEXT', 'NODE_CDATA_SECTION', 'NODE_ENTITY_REFERENCE', 'NODE_ENTITY', 'NODE_PROCESSING_INSTRUCTION', 'NODE_COMMENT', 'NODE_DOCUMENT', 'NODE_DOCUMENT_TYPE', 'NODE_DOCUMENT_FRAGMENT', 'NODE_NOTATION'); function Analyse() { var tab1 = '<table border="1" cellpadding="3" cellspacing="3" width="60%">' + '<tr><th width="10%">Noeud parent</th>' + '<th width="45%">Nom du Noeud</th>' + '<th width="45%">Type du Noeud</th></tr><tr>' + '<th colspan="3">Valeur du Noeud</th></tr>'; var tab2 = '</table>'; var Info; var Fichier_XML = Donnee_XML; if (Fichier_XML.parseError.errorCode != 0) { Info = '<h3>Le fichier XML est invalide.</h3>'; Info += '<table><tr><td><b>Code d'erreur</b></td><td><b>: </b>' + Fichier_XML.parseError.errorCode + '</td></tr>'; Info += '<tr><td><b>Description</b></td><td><b>: </b>' + Fichier_XML.parseError.reason + '</td></tr>'; Info += '<tr><td><b>Fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.filepos + '</td></tr>'; Info += '<tr><td><b>Adresse du fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.url + '</td></tr>'; Info += '<tr><td><b>Ligne responsable</b></td><td><b>: </b>' + Fichier_XML.parseError.srcText + '</td></tr>'; Info += '<tr><td><b>Numéro de Ligne</b></td><td><b>: </b>' + Fichier_XML.parseError.line + '</td></tr>'; Info += '<tr><td><b>Numéro de Colonne</b></td><td><b>: </b>' + Fichier_XML.parseError.linepos + '</td></tr></table>'; document.write(Info); return; } Affichage.innerHTML = tab1 + AffichageNoeudEnfant(Fichier_XML, 0) + tab2; } function AffichageNoeudEnfant(Noeud, Niveau) { var Resultat = ''; var Longueur = 0; var Num_Noeud = 0; var Objet_NamedNodeMap; var Index_Attribute; Objet_NamedNodeMap = Noeud.attributes; if (Objet_NamedNodeMap != null) { Longueur = Objet_NamedNodeMap.length; if (Longueur > 0) { for (Index_Attribute = 0; Index_Attribute < Longueur; Index_Attribute++) { Resultat += '<tr><th>' + Noeud.nodeName + '</th><td><b>' + Objet_NamedNodeMap(Index_Attribute).nodeName + '</b></td><td style="color:blue; font-weight:bold">' + Tab_TypeNoeud[Objet_NamedNodeMap(Index_Attribute).nodeType - 1] + '</td></tr><tr><td colspan="3">' + Objet_NamedNodeMap(Index_Attribute).nodeValue + '</td></tr>'; } } } Longueur = Noeud.childNodes.length; if (Longueur > 0) { for (Num_Noeud = 0; Num_Noeud < Longueur; Num_Noeud++) { Resultat += AffichageNoeudEnfant(Noeud.childNodes(Num_Noeud), Niveau + 1); } return Resultat; } } </script> </head> <body onload="Analyse()"> <XML id="Donnee_XML" src="logitheque.xml"></XML> <span id="Affichage"></span> </body> </html> |
L'objet IXMLDOMNode étend le noeud central avec un support pour les types de données, les espaces de noms, les DTD (document type definitions) et les schémas.
L'objet IXMLDOMNode est créé par l'intermédiaire de la méthode createNode appliquées à l'objet DOMDocument, permettant la création de quasiment tous les types de noeuds. Par ailleurs, d'autres méthodes de création plus ciblées existent afin de créer des noeuds précis à l'image de createAttribute ou encore createDocumentFragment.
Set Objet_Noeud = Objet_Document.createNode(1, Nom_Elt)
Les valeurs des noeuds peuvent être ajoutées au moyen de diverses commandes. Pour les noeuds éléments, il est nécessaire de créer un noeud textuel (createNodeText) dans lequel est stocké la valeur du noeud élément ou éventuellement attribut. Ensuite, à l'aide de la méthode appendChild, le l'objet IXMLNodeText est affecté dans le noeud correspondant.
Set Objet_Element = Objet_Document.createElement("nom") Set Objet_Text = Objet_Document.createNodeText(valeur) Objet_Element.appendChild Objet_Text Objet_Node_Existant.nodeValue = Nouvelle_Valeur
Un objet nodal peut être obtenu à partir d'une multitude de méthodes et de propriétés.
Set Objet_Noeud = _ Objet_NodeList.selectSingleNode("//elements/element") Set Objet_Noeud = Objet_Node.firstChild
Dans un document XML, tout est décomposable en noeud. Ainsi, les instructions de traitements, la définition de type de document, l'élément racine, l'ensemble des descendants, les attributs ou encore le texte et les références d'entités sont tous des noeuds distingués par un type particulier.
Les propriétés nodeType et nodeTypestring appliquées à un objet nodal permettent de déterminer le type de noeud soit respectivement par une valeur numérique, soit par une chaîne de caractères.
Valeur_numérique = Objet_Node.nodeType Chaîne = Objet_Node.nodeTypeString
Le modèle d'objet de document XML propose plusieurs solutions afin de naviguer dans l'arborescence d'un document. Il existe des méthodes de sélection de noeuds (selectSingleNode, selectNodes), de liste de noeuds (childNodes, attributes) ou de fragment de document (createDocumentFragment).
Set Objet_ListeNoeuds = Objet_Node.attributes Set Objet ListeNoeuds = _ Objet_Document.SelectNodes("/element[@attribut='valeur']")
A partir de là, il devient possible de parcourir des objets en avant (nextSibling, lastChild) ou en arrière (previousSibling, firstChild) de remonter au parent (parentNode) ou au document (ownerDocument).
Set Objet_Noeud = Objet_Node.previousSibling Set Objet_Noeud = Objet_Node.ownerDocument
Sur un noeud courant, l'extraction de la valeur (nodeValue, text) ou de ses caractèristiques à l'instar de son type de donnée (dataType) et de son nom (nodeName), peuvent s'effectuer aisément à l'aide des outils fournis.
Les Propriétésnom_element = Objet_Node.nodeName valeur = Objet_Node.nodeValue URI_espace_de_nom = Objet_Node.namespaceURI
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_Node.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Node.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Node.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Node.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Node.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Node.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Node.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Node.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Node.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Node.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Node.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_Node.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Node.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Node.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Node.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Node.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Node.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Node.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Node.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Node.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Node.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Node.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
true | false = Objet_Node.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Node.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_Node.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Node.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_Node.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Node.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
true | false = Objet_Node.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Node.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, fichier Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier 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> |
L'objet IXMLDOMNodeList représente une liste de noeuds et supporte l'itération par l'intermédaire d'une collection active et en plus d'un accès indexé.
Les listes de noeuds peuvent être obtenues en utilisant la méthode getElementsByTagName appliquées à l'objet DOMDocument.
Objet_NodeList = _ Objet_Document.getElementsByTagName(nom)
Les méthodes childNodes et selectNodes de l'objet IXMLDOMNode sont également capables de retourner une liste de noeuds.
Objet_NodeList = Objet_Node.childNodes Objet_NodeList = Objet_Node.selectNodes(expression_XPath)
Une collection IXMLDOMNodeList est active, c'est-à-dire, que l'ajout ou le déplacement de noeuds et les modifications à l'intérieur des noeuds, sont immédiatement répercutés dans la collection. En conséquence, deux requêtes successives sur des membres de la collection utilisant le même index, retournent deux items différents, dépendant des changements sur la collection.
En outre, les modifications sur les objets nodaux sont immédiatement disponibles dans le noeud obtenu à partir de la liste.
La collection IXMLDOMNodeList peut être parcouru par l'intermédiaire d'une bouble For.
Les PropriétésFor i = 0 To Objet_NodeList.length - 1 ... Next For Each Objet_Node In Objet_NodeList ... Next
Propriété |
---|
Description |
Nombre = Objet_NodeList.length |
indique le nombre d'items dans la collection en lecture seule. |
Méthode |
---|
Description |
Objet_Node = Objet_NodeList.item(Index) |
autorise l'accès aléatoire à des noeuds individuels à l'intérieur d'une collection, en lecture seule. |
Objet_Node = Objet_NodeList.nextNode() |
retourne le prochain noeud dans la collection. |
Objet_NodeList.reset() |
réinitialise le moteur d'itération (iterator). |
<% Dim Objet_Document Dim Objet_NodeList Dim noeud, resultat Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier If Objet_Document.parseError.errorCode <> 0 Then Response.Write "Une erreur s'est produite " _ & "lors de l'analyse du fichier !" Else Set Objet_NodeList = Objet_Document.getElementsByTagName("logiciel") For i = 0 To Objet_NodeList.length - 1 set noeud = Objet_NodeList.item(i) resultat = resultat & "<tr><td><b>" _ & noeud.attributes.item(0).nodeValue _ & "</b></td><td> : " _ & noeud.firstchild.text & "</td></tr>" Next Response.Write "<h3>La liste comporte " & Objet_NodeList.length _ & " noeuds.</h3><hr><table><tr><th>Code</th>" _ & "<th>Nom</th></tr>" & resultat & "</table>" End If Set Objet_Document = Nothing %> |
L'objet IXMLDOMParseError retourne les informations détaillées à propos de la dernière erreur d'analyse en incluant le numéro, la ligne, la colonne de l'erreur.
Les PropriétésObjet_Erreur = Objet_Document.parseError
Propriété |
---|
Description |
Valeur = Objet_ParseError.errorCode |
contient le code de l'erreur da la dernière erreur d'analyse, en lecture seule. |
Valeur = Objet_ParseError.filepos |
contient la position du fichier absolue où l'erreur s'est produite, en lecture seule. |
Valeur = Objet_ParseError.line |
spécifie le numéro de la ligne contenant l'erreur, en lecture seule. |
Valeur = Objet_ParseError.linepos |
contient la position du caractère à l'intérieur de la ligne où l'erreur s'est produite, en lecture seule. |
Chaîne = Objet_ParseError.reason |
fournit une explication à propos de l'erreur, en lecture seule. |
Chaîne = Objet_ParseError.srcText |
retourne le texte complet de la ligne contenant l'erreur, en lecture seule. |
Chaîne = Objet_ParseError.url |
contient l'adresse URL du document XML contenant la dernière erreur, en lecture seule. |
<% Dim Objet_Document, Objet_Processeur Dim Objet_Style, Objet_Modele Dim fichier_xml, fichier_xsl Dim Objet_ErrXML, Objet_ErrXSL, Objet_Erreur Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Set Objet_Style = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") Set Objet_Modele = Server.CreateObject("MSXML2.XSLTemplate") Objet_Document.async = False Objet_Style.async = False fichier_xml = Server.MapPath("logithseque.xml") fichier_xsl = Server.MapPath("logithesque.xsl") Objet_Document.Load fichier_xml Objet_Style.Load fichier_xsl Set Objet_ErrXML = Objet_Document.parseError Set Objet_ErrXSL = Objet_Style.parseError Sub fonction_erreur(Objet_Erreur) Response.Write "<h3>Le chargement a échoué.</h3>" _ & "<br><b>Une erreur d'analyse s'est produite.</b>" _ & "<br><u>Code :</u> " & Objet_Erreur.errorCode _ & "<br><u>Raison :</u> " & Objet_Erreur.reason _ & "<br><u>Texte :</u> " & Objet_Erreur.srcText _ & "<br><u>URL :</u> " & Objet_Erreur.url _ & "<br><u>Position :</u> " & Objet_Erreur.filePos _ & "<br><u>Ligne :</u> " & Objet_Erreur.line _ & "<br><u>Colonne :</u> " & Objet_Erreur.linePos End Sub If Objet_ErrXML.errorCode <> 0 OR Objet_ErrXSL.errorCode <> 0 Then If Objet_ErrXML.errorCode <> 0 Then fonction_erreur(Objet_ErrXML) End If If Objet_ErrXSL.errorCode <> 0 Then fonction_erreur(Objet_ErrXSL) End If Else Set Objet_Modele.stylesheet = Objet_Style Set Objet_Processeur = Objet_Modele.createProcessor() Objet_Processeur.input = Objet_Document Objet_Processeur.addParameter "num", 6 Objet_Processeur.Transform Response.Write Objet_Processeur.output End If Set Objet_Document = Nothing Set Objet_Style = Nothing Set Objet_Modele = Nothing Set Objet_Processeur = Nothing %> |
L'objet IXMLHTTPRequest fournit le support de protocole côté client pour les communications avec les seveurs HTTP.
Set Objet_HTTPRequest = Server.CreateObject("Msxml2.XMLHTTP") |
Un ordinateur client peut utiliser l'objet XMLHTTP (MSXML2.XMLHTTP) pour envoyer une requête HTTP arbitraire, recevoir la réponse, et obtenir la réponse de l'analyse du DOM XML de Microsoft.
Cette objet est intégré à l'analyseur de Microsoft XML (MSXML) pour supporter l'envoi du corps de la requête directement à partir des objets DOM de MSXML et analysant la réponse directement à l'intérieur de ces derniers. Lorsque combiné avec le support pour les feuilles de style XSL, l'objet XMLHTTP fournit un moyen simple pour envoyer des requêtes structurées vers les serveurs HTTP et affiche le résultat avec une variété de présentations.
La séquence usuelle commence par l'appel de la méthode open permettant l'ouverture de l'objet IXMLHTTPRequest.
Objet_HttpRequest.open _ "GET", "http://serveur-distant/page.asp", false
Puis une information d'entête habituelle est fixée à l'objet, par l'intermédiaire de la méthode setRequestHeader.
Objet_HttpRequest.setRequestHeader Variable_HTTP, Valeur
Ensuite, l'objet est envoyé au serveur distant par la méthode send. La réponse retournée par le serveur peut être immédiatement retournée si la propriété async est égale à true. Si la valeur de cette dernière est false, la réponse est retournée lorsqu'elle a été entièrement réceptionnée.
ilot_donne.async = false Objet_HttpRequest.send ilot_donnee.XMLDocument
Enfin, il est possible de vérifier la réponse par l'une des quatres propriétés suivantes : responseBody, responseStream, responseText, responseXML.
Les PropriétésSet Objet_XML = Objet_HttpRequest.responseXML
Propriété |
---|
Description |
Objet_HttpRequest.onreadystatechange = Gestionnaire_Evénement |
indique le getionnaire d'événements pour être appelé lorsque la propriété readyState change, en lecture et écriture. |
Etat = Objet_HttpRequest.readyState |
représente l'état de la requête, en lecture seule. |
Chaîne = Objet_HttpRequest.responseBody |
représente le corps de l'entité de réponse commun tableau d'octets non-signés, en lecture seule. |
Stream = Objet_HttpRequest.responseStream |
représente le corps de l'entité de réponse comme un flux de données textuelles, en lecture seule. |
Texte = Objet_HttpRequest.responseText |
représente le corps de l'entité de réponse comme une chaîne de caractères, en lecture seule. |
Set Objet_XML = Objet_HttpRequest.responseXML |
représente le corps de l'entité de réponse comme analysé par l'analyseur de Microsoft MSXML, en lecture seule. |
Valeur = Objet_HttpRequest.status |
représente le code du statut HTTP retourné par une requête, en lecture seule. |
Chaîne = Objet_HttpRequest.statusText |
représente le statut de la ligne de réponse HTTP, en lecture seule. |
Méthode |
---|
Description |
Objet_HttpRequest.abort() |
annule la requête HTTP courante. |
Chaîne = Objet_HttpRequest.getAllResponseHeaders() |
récupère les valeurs de tous les entêtes HTTP. |
Chaîne = Objet_HttpRequest.getResponseHeader(Nom_Entête) |
récupère la valeur d'un entête HTTP à partir du corps de la réponse. |
Objet_HttpRequest.open({GET | POST | PUT | PROPFIND}, URL_Requête [, Bool_Async, Nom_Utilisateur, Mot_Passe]) |
initialise une requête MSXML2.XMLHTTP, et spécifie la méthode, l'adresse URL et les informations d'authentification pour la requête. |
Objet_HttpRequest.send([Nom_Corps]) |
envoie une requête HTTP vers le serveur et reçoit une réponse. |
Objet_HttpRequest.setRequestHeader(Nom_Entête) |
spécifie le nom d'un entête HTTP. |
<html> <body onload="return insere_pi()"> <XML id="ilot_donnee"> <personne> <nom></nom> <prenom></prenom> <adresse></adresse> <code_postal></code_postal> <ville></ville> </personne> </XML> <table border="0" align="center"> <tr> <th align="left">Nom</th> <td>: <input type="text" name="snom" size="20"/></td> </tr> <tr> <th align="left">Prénom</th> <td>: <input type="text" name="sprenom" size="20"/></td> </tr> <tr> <th align="left">Adresse</th> <td>: <input type="text" name="sadresse" size="20"/></td> </tr> <tr> <th align="left">Code Postal</th> <td>: <input type="text" name="scode_postal" size="6"/></td> </tr> <tr> <th align="left">Ville</th> <td>: <input type="text" name="sville" size="20"/></td> </tr> <tr> <th colspan="2"> <input type="submit" value="Soumission" onclick="envoi()"/> <input type="reset" value="Annulation"/> </td> </tr> </table> <script language="VBScript" type="text/vbscript"> Function insere_pi() Set obj_pi = _ ilot_donnee.createProcessingInstruction _ ("xml", "version='1.0' encoding='iso-8859-1'") ilot_donnee.insertBefore obj_pi, ilot_donnee.firstChild End Function Function envoi() If Not IsNull(snom.value) _ AND Not IsNull(sprenom.value) _ AND Not IsNull(sadresse.value) _ AND IsNumeric(scode_postal.value) _ AND Not IsNull(sville.value) Then ilot_donnee.documentElement.getElementsByTagName _ ("nom").item(0).text = snom.value ilot_donnee.documentElement.getElementsByTagName _ ("prenom").item(0).text = sprenom.value ilot_donnee.documentElement.getElementsByTagName _ ("adresse").item(0).text = sadresse.value ilot_donnee.documentElement.getElementsByTagName _ ("code_postal").item(0).text = scode_postal.value ilot_donnee.documentElement.getElementsByTagName _ ("ville").item(0).text = sville.value Dim Objet_HttpRequest Set Objet_HttpRequest = CreateObject("MSXML2.XMLHTTP") Objet_HttpRequest.open "GET", "http://serveur-distant/reponse.asp", false Dim agent agent = "Mozilla/4.0 (compatible; MSIE 6.0; " _ & "Windows NT 5.0; .NET CLR 1.0.2914)" Objet_HttpRequest.setRequestHeader "User-Agent", agent ilot_donnee.async = false Objet_HttpRequest.send ilot_donnee.XMLDocument msgBox("responseText : " & Objet_HttpRequest.responseText _ & vbCrLf & "statusText : " _ & Objet_HttpRequest.statusText & vbCrLf_ & "getAllResponseHeaders : " _ & Objet_HttpRequest.getAllResponseHeaders()) Else msgBox("Les informations fournies sont invalides !") End If End Function </script> </body> </html> Fichier : reponse.asp <%@ language=jscript %> <% Response.Expires = -1000; var Objet_Document = Server.CreateObject("MSXML2.DOMDocument"); var dom_resultat = Server.CreateObject("MSXML2.DOMDocument"); Objet_Document.async = false; Objet_Document.load(Request); var agent = "Mozilla/4.0" var Agent_Utilisateur = Request.ServerVariables("HTTP_User_Agent"); var chaine = Objet_Document.documentElement.childNodes.item(0).text; Response.ContentType = "text/xml"; if(Agent_Utilisateur.test(agent)) { dom_resultat.loadXML("<resultat>" + chaine +" </resultat>"); var obj_pi = dom_resultat.createProcessingInstruction("xml", "version='1.0' encoding='iso-8859-1'"); dom_resultat.insertBefore(obj_pi, dom_resultat.firstChild); dom_resultat.save(Response); } else { Response.Write("<h3>Données récupérées pour ajout sont :</h3>" + "<p>" + chaine + " </p>"); } %> |
L'objet IXTLRuntime représente une partie de l'ancien langage des feuilles de style extensible (XSL) mis en oeuvre.
Cet objet exécute diverses méthodes qui peuvent être directement appelées de l'intérieur des feuilles de style de transformations (XSLT).
L'objet IXTLRuntime implémenté dans le parseur MSXML2 est totalement déprécié dans la version 4.0 de MSXML et n'apparaît plus dans les interfaces DOM XML de Microsoft.
Les PropriétésPropriété |
---|
Description |
Objet_NamedNodeMap = Objet_Runtime.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Runtime.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Objet_NodeList = Objet_Runtime.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Objet_Valeur = Objet_Runtime.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Objet_Node = Objet_Runtime.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
contient l'élément racine du document en lecture et écriture. |
Objet_Node = Objet_Runtime.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Objet_Node = Objet_Runtime.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Runtime.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Objet_Node = Objet_Runtime.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Runtime.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Runtime.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_Runtime.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Runtime.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Objet_Valeur = Objet_Runtime.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Objet_Document = Objet_Runtime.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Objet_Node = Objet_Runtime.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Runtime.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Runtime.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Objet_Node = Objet_Runtime.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Runtime.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Runtime.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Runtime.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Valeur = Objet_Runtime.absoluteChildNumber(Objet_Node) |
retourne le numéro du noeud qui est relatif à tous les enfants de mêmes parents. |
Objet_Runtime.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Valeur = Objet_Runtime.ancestorChildNumber(Nom_Noeud, Objet_Node) |
retourne le numéro de l'ancêtre relativement à ses noeuds frères. |
Objet_Runtime.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Valeur = Objet_Runtime.childNumber(Objet_Node) |
retourne le numéro du noeud dans la liste des noeuds enfants du parent avec ce nom. |
Valeur = Objet_Runtime.depth(Objet_Node) |
retourne le niveau de profondeur à l'intérieur de l'arborescence d'un document où le noeud spécifié apparaît. |
Valeur = Objet_Runtime.formatDate(Index, Format_Date, Destination_Locale) |
retourne une date formatée seon les indications spécifiées. |
Valeur = Objet_Runtime.formatIndex(Index, Format_Index) |
retourne un index formaté selon les indications spécifiées. |
Valeur = Objet_Runtime.formatNumber(Nombre, Format_Nombre) |
retourne un nombre formaté selon les indications spécifiées. |
Valeur = Objet_Runtime.formatTime(Valeur_Temps, Format_Temps, Destination_Locale) |
retourne une heure formaté selon des indications spécifiées. |
Objet_Runtime.hasChildNodes() |
retourne True si le noeud a des enfants. |
Objet_Runtime.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_Runtime.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Objet_Runtime.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_Runtime.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Objet_Runtime.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Objet_Runtime.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Runtime.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
Valeur = Objet_Runtime.uniqueID(Objet_Node) |
retourne l'identificateur unique pour le noeud indiqué. |
L'objet IXMLDOMAttribute représente un attribut de l'objet IXMLDOMElement. Les valeurs valides et par défaut pour les attributs sont définies dans un DTD (Document Type Definition) ou un schéma.
La création d'un attribut s'effectue par l'intermédiaire de la méthode createAttribute de l'objet DOMDocument.
set Objet_Attribute = Objet_DOMDocument.createAttribute(Nom)
L'affectation d'une valeur à un attribut se fait au moyen de la méthode appendChild ajoutant un noeud textuel créé auparavant par la méthode createTextNode de l'objet DOMDocument.
Set valeur_attribut = Objet_DOMDocument.createTextNode(valeur) Objet_Attribute.appendChild valeur_attribut
Les attributs sont affectés à un élément par l'intermédiaire de la méthode setAttributeNode lorsqu'il s'agît d'un noeud Attribute existant, sinon un autre méthode setAttribute de l'objet IXMLDOMElement permet de créer directement un attribut avec sa valeur.
objet_DOMElement.setAttributeNode(Noeud_attribut) objet_DOMElement.setAttribute nom_attribut, valeur_attribut
Les noeuds d'attribut ne peuvent être les enfants immédiats de l'objet de IXMLDOMDocumentFragment. Toutefois, ils peuvent être associés aux noeuds d'élément qui sont des enfants du noeud IXMLDOMDocumentFragment.
La relation entre la valeur et les membres spécifiés peut être résumée comme suit :
Dans XML, la valeur d'un attribut est représentée par les noeuds enfants du noeud d'attribut car la valeur peut contenir des références d'entité.
Ainsi les attributs qui contiennent des références d'entité auront une liste d'enfants contenant les noeuds textuels et les noeuds de référence d'entité. De plus, car le type d'attribut peut être inconnu, ils n'ont pas signalé de valeurs d'attribut.
Propriété |
---|
Description |
Chaîne = Objet_Attribute.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Attribute.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Attribute.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Attribute.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Attribute.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Attribute.lastChild |
contient le dernier noeud enfant en lecture seule. |
Set Objet_Implementation = Objet_Attribute.implementation |
contient l'objet IXMLDOMImplementation pour ce document en lecture seule. |
Set Objet_Node = Objet_Attribute.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Attribute.name |
contient le nom de l'attribut, en lecture seule. |
Chaîne = Objet_Attribute.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Attribute.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Attribute.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Attribute.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_Attribute.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Attribute.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Attribute.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Attribute.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Attribute.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Attribute.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Attribute.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Attribute.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Attribute.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Attribute.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Attribute.value |
contient la valeur de l'attribut, en lecture et écriture. |
Valeur = Objet_Attribute.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_Attribute.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_Attribute.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_Attribute.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Attribute.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_Attribute.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Attribute.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_Attribute.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Attribute.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_Attribute.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Attribute.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Const OpenFileForReading = 1 Dim obj_fso, obj_dom, obj_log, racine Dim obj_client, obj_document, obj_protocole, obj_code, obj_methode Dim document_txt, protocole_txt, code_txt, methode_txt Dim adresse_attr, adresse_txt, poids_attr, poids_txt Dim adresse_ip, methode, document, protocole, code, poids Dim tableau, elt_adresse, i i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("fichier_log.txt") Set obj_log = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") Set racine = obj_dom.createElement("statistique") obj_dom.appendChild racine Do While Not obj_log.AtEndOfStream ligne = obj_log.ReadLine tableau = Split(ligne, " ", -1, 1) elt_adresse = Split(tableau(3), ",", -1, 1) adresse_ip = tableau(0) methode = Right(elt_adresse(0), Len(elt_adresse(0)) - 1) document = elt_adresse(1) protocole = Left(elt_adresse(2), Len(elt_adresse(2)) - 1) code = tableau(4) poids = tableau(5) Set obj_client = obj_dom.createElement("client") Set adresse_attr = obj_dom.createAttribute("adresse_ip") Set adresse_txt = obj_dom.createTextNode(adresse_ip) obj_client.setAttributeNode(adresse_attr) Set obj_document = obj_dom.createElement("document") Set document_txt = obj_dom.createTextNode(document) Set poids_attr = obj_dom.createAttribute("poids") Set poids_txt = obj_dom.createTextNode(poids) obj_document.setAttributeNode(poids_attr) Set obj_protocole = obj_dom.createElement("protocole") Set protocole_txt = obj_dom.createTextNode(protocole) Set obj_code = obj_dom.createElement("code") Set code_txt = obj_dom.createTextNode(code) Set obj_methode = obj_dom.createElement("methode") Set methode_txt = obj_dom.createTextNode(methode) poids_attr.appendChild poids_txt adresse_attr.appendChild adresse_txt obj_document.appendChild document_txt obj_protocole.appendChild protocole_txt obj_code.appendChild code_txt obj_methode.appendChild methode_txt obj_client.appendChild obj_document obj_client.appendChild obj_protocole obj_client.appendChild obj_code obj_client.appendChild obj_methode racine.appendChild obj_client i = i + 1 Loop obj_dom.save(Server.MapPath("fichier_log.xml")) obj_log.close Set obj_log = Nothing %> |
L'objet IXMLDOMCDATASection est utilisé pour éviter que des blocs de texte soient interprêtés comme du marquage XML.
Set Objet_CDATA = _ Objet_Document.createCDATASection(Contenu) |
Les sections CDATA permettent l'inclusion de matériel comme des fragments XML à l'intérieur des documents XML sans nécessiter d'opérations d'échappement contrôler tpus les délimiteurs. Le seul délimiteur reconnu dans une section CDATA est sa séquence de fermeture ]]>.
<![CDATA[Texte non analysé]]>
Le texte contenu dans une section CDATA est stocké dans un noeud textuel. Ce texte peut contenir des caractères qui nécessitent normalement des opérations d'échappement dans un document XML bien formé.
Set Objet_Text = Objet_CDATA.firstChild
Les sections CDATA ne peuvent s'imbriquer les unes dans les autres.
Plusieurs méthodes permettent de travailler directement sur le contenu textuel d'une section CDATA, telles que les méthodes replaceData, substringData ou encore splitText effectuant respectivement le remplacement délimité d'une chaîne de caractères, de retourner une partie du contenu textuel, ou de découper le texte en plusieurs sous éléments.
Les PropriétésObjet_CDATA.replaceData 16, 7, "est devenu" Le langage XML devient un langage universel. Texte = Objet_CDATA.substringData 0, 14 Le langage XML est devenu un langage universel. Objet_CDATA.splitText 25 Le langage XML est devenu un langage universel.
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_CDATA.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_CDATA.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_CDATA.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Chaîne = Objet_CDATA.data |
contient les données du noeud CDATA, en lecture et écriture. |
Valeur = Objet_CDATA.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_CDATA.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_CDATA.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_CDATA.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Valeur = Objet_CDATA.length |
spécifie la longueur, en caractères des données, en lecture seule. |
Chaîne = Objet_CDATA.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_CDATA.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_CDATA.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_CDATA.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_CDATA.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_CDATA.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_CDATA.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_CDATA.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_CDATA.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_CDATA.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_CDATA.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_CDATA.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_CDATA.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_CDATA.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_CDATA.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_CDATA.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Objet_CDATA.appendData(Chaîne) |
ajoute la chaîne de caractères spécifiée aux données textuelles existantes. |
Set Objet_Node = Objet_CDATA.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Objet_CDATA.deleteData(Position, Nb_Caractères) |
supprime la sous-chaîne de caractères à l'intérieur de données textuelles. |
True | False = Objet_CDATA.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_CDATA.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_CDATA.insertData(Position) |
insère la chaîne spécifiée à la position indiquée. |
Set Objet_Node = Objet_CDATA.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_CDATA.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_CDATA.replaceData(position_départ, nombre, Chaîne); |
remplace le nombre spécifié de caractères à partir de la position indiquée, par la chaîne fournie en argument. |
Set Objet_NodeList = Objet_CDATA.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_CDATA.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
True | False = Objet_Comment.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Set Objet_Text = Objet_CDATA.splitText(Position) |
découpe le texte du noeud à l'intérieur de deux noeuds textuels à la position spécifiée et insère le nouveau texte dans l'arborexcence comme un frère qui suit immédiatement le noeud. |
Chaîne = Objet_CDATA.substringData(Position, Nb_Caractères) |
récupère une sous-chaîne de caractères d'une chaîne complète à l'intervalle spécifié. |
Chaîne = Objet_CDATA.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_CDATA.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Dim Objet_Document Dim racine, Objet_CDATA, Noeud_Frere Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") fichier = Server.MapPath("livre.xml") Objet_Document.async = false Objet_Document.load fichier Set racine = Objet_Document.documentElement Set Objet_Node = Objet_Document.selectSingleNode _ ("//livre[nom = 'ASP, ADO, and XML Complete']") Set Objet_CDATA = Objet_Document.createCDATASection(" " _ & "<p>Un livre de <b>Kurt Gagle</b>, auteur également de...</p>") Objet_Node.insertBefore Objet_CDATA, Objet_Node.firstChild Set Noeud_frere = Objet_Node.childNodes.item(1) Response.Write "<u>La section CDATA suivante a été ajoutée avant " _ & "le noeud <b>" & Noeud_Frere.NodeName _ & " (" & Noeud_Frere.text & ")</b> :</u>" _ & Objet_CDATA.text Set Objet_Node = Nothing Set Noeud_Frere = Nothing Set Objet_Node = Objet_Document.selectSingleNode _ ("//livre[nom = ""XSLT Programmer's reference""]") Set Nouvel_Objet_CDATA = Objet_CDATA.cloneNode(true) Nouvel_Objet_CDATA.replaceData 19, 10, "Michael Kay" Nouvel_Objet_CDATA.replaceData 43, 12, "de nombreux ouvrages" Set Noeud_frere = Objet_Node.childNodes.item(1) Objet_Node.insertBefore Nouvel_Objet_CDATA, Objet_Node.firstChild Set Noeud_frere = Objet_Node.childNodes.item(1) Response.Write "<u>La section CDATA suivante a été ajoutée avant " _ & "le noeud <b>" & Noeud_Frere.NodeName _ & " (" & Noeud_Frere.text & ")</b> :</u>" _ & Nouvel_Objet_CDATA.text Objet_Document.save(Server.MapPath("livre.xml")) %> |
L'objet IXMLDOMCharacterData fournit des méthodes permettant de manipuler du texte qui sont utilisées par plusieurs objets.
L'objet IXMLDOMCharacterData ne correspond directement à aucun type de noeud. Les méthodes sont réutilisées par les objets IXMLDOMCDATASection, IXMLDOMComment et IXMLDOMText.
Ces méthodes manipulent de grandes quantités de texte, y compris de très grandes tailles qui peuvent être manipulées nativement en utilisant les formes de chaînes de caractères.
Les PropriétésPropriété |
---|
Description |
Chaîne = Objet_CharacterDATA.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_CharacterDATA.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Chaîne = Objet_CharacterDATA.data |
contient les données du noeud CDATA, en lecture et écriture. |
Valeur = Objet_CharacterDATA.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_CharacterDATA.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_CharacterDATA.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_CharacterDATA.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Valeur = Objet_CharacterDATA.length |
spécifie la longueur, en caractères des données, en lecture seule. |
Chaîne = Objet_CharacterDATA.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_CharacterDATA.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_CharacterDATA.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_CharacterDATA.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_CharacterDATA.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_CharacterDATA.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_CharacterDATA.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_CharacterDATA.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_CharacterDATA.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_CharacterDATA.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_CharacterDATA.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_CharacterDATA.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_CharacterDATA.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_CharacterDATA.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_CharacterDATA.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_CharacterDATA.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Objet_CharacterDATA.appendData(Chaîne) |
ajoute la chaîne de caractères spécifiée aux données textuelles existantes. |
Set Objet_CharacterDATA.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Objet_CharacterDATA.deleteData(Position, Nb_Caractères) |
supprime la sous-chaîne de caractères à l'intérieur de données textuelles. |
True | False = Objet_CharacterDATA.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_CharacterDATA.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_CharacterDATA.insertData(Position) |
insère la chaîne spécifiée à la position indiquée. |
Set Objet_CharacterDATA.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_CharacterDATA.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_CharacterDATA.replaceData(Position, Nb_Caractères, Données) |
remplace le nombre de caractères spécifiés par la chaîne de caractères fournie. |
Set Objet_NodeList = Objet_CharacterDATA.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_CharacterDATA.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
True | False = Objet_CharacterDATA.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_CharacterDATA.substringData(Position, Nb_Caractères) |
récupère une sous-chaîne de caractères d'une chaîne complète à l'intervalle spécifié. |
Chaîne = Objet_CharacterDATA.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_CharacterDATA.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Dim Objet_Document, Objet_Style Dim racine, PI_xml, PI_stylesheet, fichier_XSL Dim Objet_CharacterData, oCommentaire Dim oAuteur, cAuteur, oDecription, cDescription Dim oNom, oOeuvres, oPoeme Dim auteur, description, titre Dim quatrain_A, quatrain_B, quatrain_C Dim quatrain_D, quatrain_E, saut Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Set Objet_Style = Server.CreateObject("MSXML2.DOMDocument") 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 Objet_CharacterDATA = 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 Objet_CharacterDATA.insertData 0, quatrain_A & saut Objet_CharacterDATA.insertData _ Objet_CharacterDATA.length, saut Objet_CharacterDATA.insertData _ Objet_CharacterDATA.length, quatrain_C & saut Objet_CharacterDATA.insertData _ Objet_CharacterDATA.length, quatrain_D & saut Objet_CharacterDATA.insertData _ Objet_CharacterDATA.length, quatrain_E oAuteur.appendChild oNom oDescription.appendChild cDescription oAuteur.appendChild oDescription oPoeme.appendChild Objet_CharacterDATA 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) _ & "<h4>Le fichier XML est disponible à l'adresse " _ & " suivante : " & Server.MapPath("recueil.xml") & "</h4>" Set Objet_Document = Nothing Set Objet_Style = Nothing %> |
L'objet IXMLDOMComment représente le contenu d'un commentaire XML.
Un commentaire peut être créé par l'intermédiaire de la méthode createComment appliquée à l'objet DOMDocument.
Set Objet_Comment = _ Objet_Document.createComment(valeur_textuelle)
Un objet IXMLDOMComment peut être ajouté à l'arborescence d'un document XML au moyen de la méthode appendChild ou insertBefore de l'objet IXMLDOMNode.
Objet_Node.appendChild Objet_Comment Objet_Node.insertBefore(Objet_Comment, Noeud_Frere)
Un noeud commentaire dans un dans un document XML est formée de l'une des façons suivantes :
<!-- Contenu du commentaire --> <comment> Contenu du commentaire </comment>
L'analyseur XML remarque un commentaire par le double trait d'union (--) et partant ne prend pas en compte le contenu de ce noeud.
Un commentaire se distingue par un type de noeud spécifique, lequel est déterminé par la méthode nodeType ou nodeTypeString retournant respectivement une valeur numérique, ou une chaîne de caractères.
Les PropriétésValeur_numerique = Objet_Node.nodeType Chaîne = Objet_Node.nodeTypeString
Propriété |
---|
Description |
Chaîne = Objet_Comment.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Comment.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Chaîne = Objet_Comment.data |
contient les données du noeud CDATA, en lecture et écriture. |
Valeur = Objet_Comment.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Comment.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Comment.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Comment.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Valeur = Objet_Comment.length |
spécifie la longueur, en caractères des données, en lecture seule. |
Chaîne = Objet_Comment.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Comment.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Comment.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Comment.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_Comment.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Comment.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Comment.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Comment.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Comment.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Comment.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Comment.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Comment.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Comment.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Comment.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Comment.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_Comment.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Objet_Comment.appendData(Chaîne) |
ajoute la chaîne de caractères spécifiée aux données textuelles existantes. |
Set Objet_Node = Objet_Comment.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Objet_Comment.deleteData(Position, Nb_Caractères) |
supprime la sous-chaîne de caractères à l'intérieur de données textuelles. |
True | False = Objet_Comment.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Comment.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_Comment.insertData(Position) |
insère la chaîne spécifiée à la position indiquée. |
Set Objet_Node = Objet_Comment.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Comment.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_Comment.replaceData(Position, Nb_Caractères, Données) |
remplace le nombre de caractères spécifiés par la chaîne de caractères fournie. |
Set Objet_NodeList = Objet_Comment.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Comment.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_Comment.substringData(Position, Nb_Caractères) |
récupère une sous-chaîne de caractères d'une chaîne complète à l'intervalle spécifié. |
Chaîne = Objet_Comment.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Comment.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, Objet_Comment Dim affichage, fichier, trouve trouve = false Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("fichier.xml") Objet_Document.load fichier affichage = Visualise_Noeud(Objet_Document) Function Visualise_Noeud(Objet_Noeud) Dim resultat, nombre, val, val2 Dim Objet_Node Const NODE_COMMENT = 8 val = "Premier commentaire" val2 = "mis à jour" resultat = "" If Objet_Noeud.nodeType = NODE_COMMENT Then trouve = true resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Objet_Noeud.nodeName _ & "</b>(" & Objet_Noeud.nodeTypeString & ") : " _ & Objet_Noeud.nodeValue & "<br>" If Instr(Objet_Noeud.nodeValue, val) Then Objet_Noeud.data = "Modifie le " & date resultat = resultat & "Commentaire modifie --> " ElseIf Instr(Objet_Noeud.nodeValue, val2) Then Objet_Noeud.data = "Le fichier a été mis à jour le " & date resultat = resultat & "Commentaire modifie --> " End If End If For nombre = 0 To Objet_Noeud.childNodes.length - 1 Set Objet_Node = Objet_Noeud.childNodes(nombre) resultat = resultat & Visualise_Noeud(Objet_Node) Next Visualise_Noeud = resultat End Function If trouve = true Then Set Objet_Comment = Objet_Document.createComment(" " _ & "Le fichier a été mis à jour le " & date) Objet_Document.appendChild Objet_Comment End If Objet_Document.save(Server.MapPath("fichier_modifie.xml")) %> </head> <body> <div><%= affichage %></div> </body> </html> |
L'objet IXMLDOMDocumentFragment est un objet Document allégé qui est utilisable pour des opérations d'insertion.
Un fragment de document est créé par l'intermédiaire de la méthode createDocumentFragment de l'objet DOMDocument.
Set objet_DocumentFragment = _ objet_DOMDocument.createDocumentFragment()
L'objet DocumentFragment peut représenter un fragment d'un document ou une portion de l'arborescence d'un document.
Les noeuds DocumentFragment ne doivent pas être des documents obéissant parfaitement aux règles grammaticales de XML, c'est-à-dire qu'ils n'ont pas besoin d'être bien formés. Par exemple, ce noeud peut avoir un seule enfant et que ce dernier peut être un noeud textuel ou bien il peut être composé de zéro à plusieurs noeuds représentant le niveau supérieur de n'importe quelles sous-arborescences définissant la structure du document. En clair, le noeud DocumentFragment peut possèder plusieurs noeuds racines.
<racine> <comment> La portion de l'arborescence en gras représente un fragment de document. </comment> <enfant> <petit_enfant> ... </petit_enfant> </enfant> <enfant> <petit_enfant> ... </petit_enfant> </enfant> ... </racine>
L'objet IXMLDOMDocumentFragment a été spécialement conçu pour effectuer des opérations d'insertion ou d'extraction à partir de l'arborescence d'un document XML.
La méthode appendChild permet d'ajouter un ou plusieurs noeuds dans un fragment de document ou d'ajouter l'objet IXMLDOMDocumentFragment à un noeud élément.
objet_DocumentFragment.appendChild objet_Liste_Noeuds Objet_Element.appendChild objet_DocumentFragment
L'objet DocumentFragment s'avère très utile lorsque l'utilisateur veut créer des noeuds frères, ainsi, l'objet se comporte comme le parent de ces noeuds afin que l'utilisateur puisse utiliser les méthodes standards de l'objet IXMLNode telles que insertBefore et appendChild.
Set objet_Node = _ DocumentFragment.insertBefore(Nouvel_Enfant, Noeud_Frère) |
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_DocumentFragment.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_DocumentFragment.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_DocumentFragment.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_DocumentFragment.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_DocumentFragment.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_DocumentFragment.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_DocumentFragment.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_DocumentFragment.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_DocumentFragment.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_DocumentFragment.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_DocumentFragment.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Valeur = Objet_DocumentFragment.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_DocumentFragment.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_DocumentFragment.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_DocumentFragment.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_DocumentFragment.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_DocumentFragment.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_DocumentFragment.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_DocumentFragment.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_DocumentFragment.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_DocumentFragment.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_DocumentFragment.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_DocumentFragment.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_DocumentFragment.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_DocumentFragment.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_DocumentFragment.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_DocumentFragment.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_DocumentFragment.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_DocumentFragment.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_DocumentFragment.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_DocumentFragment.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_DocumentFragment.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Const OpenFileForReading = 1 Dim obj_fso, obj_dom, obj_log, racine Dim obj_client, obj_document, obj_protocole, obj_code, obj_methode Dim document_txt, protocole_txt, code_txt, methode_txt Dim adresse_ip, methode, document, protocole, code, poids Dim tableau, elt_adresse, i i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("fichier_log.txt") Set obj_log = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") Set racine = obj_dom.createElement("statistique") obj_dom.appendChild racine Set fragment_client = obj_dom.createDocumentFragment() Do While Not obj_log.AtEndOfStream ligne = obj_log.ReadLine tableau = Split(ligne, " ", -1, 1) elt_adresse = Split(tableau(3), ",", -1, 1) adresse_ip = tableau(0) methode = Right(elt_adresse(0), Len(elt_adresse(0)) - 1) document = elt_adresse(1) protocole = Left(elt_adresse(2), Len(elt_adresse(2)) - 1) code = tableau(4) poids = tableau(5) Set obj_client = obj_dom.createElement("client") obj_client.setAttribute "adresse_ip", adresse_ip Set obj_document = obj_dom.createElement("document") Set document_txt = obj_dom.createTextNode(document) obj_document.setAttribute "poids", poids Set obj_protocole = obj_dom.createElement("protocole") Set protocole_txt = obj_dom.createTextNode(protocole) Set obj_code = obj_dom.createElement("code") Set code_txt = obj_dom.createTextNode(code) Set obj_methode = obj_dom.createElement("methode") Set methode_txt = obj_dom.createTextNode(methode) obj_document.appendChild document_txt obj_protocole.appendChild protocole_txt obj_code.appendChild code_txt obj_methode.appendChild methode_txt obj_client.appendChild obj_document obj_client.insertBefore obj_protocole, obj_client.childNodes.item(1) obj_client.insertBefore obj_code, obj_client.childNodes.item(2) obj_client.insertBefore obj_methode, obj_client.childNodes.item(3) fragment_client.appendChild obj_client racine.appendChild fragment_client i = i + 1 Loop obj_dom.save(Server.MapPath("fichier_log.xml")) Response.Write "Le fichier de statistique au format XML" _ & " est disponible à l'adresse suivante :<br>" _ & Server.MapPath("fichier_log.xml") obj_log.close Set obj_log = Nothing %> |
L'objet IXMLDOMDocumentType contient les informations associées à la déclaration de type de document.
<!DOCTYPE Elément_Racine ... >
Chaque objet DOMDocument inclut une DTD qui identifie l'objet IXMLDOMDocumentType du document.
L'objet IXMLDOMDocumentType fournit un accès à la liste d'entités et de notations définies pour le document. Les propriétés entities et notations retournent des objets IXMLDOMNamedNodeMap représentant respectivement une collection d'objets IXMLDOMEntity et IXMLDOMNotation.
Set Collection_Entites = Objet_DocumentType.entities Set Collection_Notations = Objet_DocumentType.notations
Un objet IXMLDOMDocumentType est remarqué dans l'arborescence d'un document XML par un type de noeud précis, en l'occurrence par la valeur numérique 10 ou la chaîne de caractères documenttype retournée respectivement par la propriété nodeType et nodeTypeString.
Les PropriétésValeur_numérique = Objet_DocumentType.nodeType Chaîne = Objet_DocumentType.nodeTypeString
Propriété |
---|
Description |
Chaîne = Objet_DocumentType.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_DocumentType.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_DocumentType.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_DocumentType.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_NamedNodeMap = Objet_DocumentType.entities |
contient une liste d'entités externes et internes qui sont déclarées dans le DTD, en lecture seule. |
Set Objet_Node = Objet_DocumentType.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_DocumentType.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_DocumentType.name |
contient le nom du DTD, en lecture seule. |
Chaîne = Objet_DocumentType.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_DocumentType.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_DocumentType.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_DocumentType.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_DocumentType.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_DocumentType.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_DocumentType.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_NamedNodeMap = Objet_DocumentType.notations |
contient une liste d'objets IXMLDOMNotation présents dans le DTD, en lecture seule. |
Set Objet_Document = Objet_DocumentType.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_DocumentType.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_DocumentType.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_DocumentType.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_DocumentType.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_DocumentType.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_DocumentType.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_DocumentType.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_DocumentType.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_DocumentType.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_DocumentType.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_DocumentType.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_DocumentType.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_DocumentType.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_DocumentType.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_DocumentType.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_DocumentType.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_DocumentType.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <body> <% Const NODE_DOCUMENT_TYPE = 10 Dim Objet_Document, Noeud, fichier Dim affichage, resultat, i Dim Collection_Entites, Collection_Notations Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument.4.0") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier For Each Noeud In Objet_Document.childNodes If Noeud.nodeType = NODE_DOCUMENT_TYPE Then Set Collection_Entites = Noeud.entities Set Collection_Notations = Noeud.notations resultat = resultat & "<h2>" & Noeud.nodeName & " ( " _ & Noeud.nodeTypeString & " )</h2>" _ & "<h3>Nombre total d'entités : " _ & Collection_Entites.length & "</h3>" _ & "<h3>Nombre total de notations : " _ & Collection_Notations.length & "</h3><hr>" resultat = resultat & "<table><tr><th>Entités</th>" _ & "<th>Notations</th></tr><tr><td valign='top'>" For i = 0 To Collection_Entites.length - 1 resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Collection_Entites.item(i).nodeName & "</b> (" _ & Collection_Entites.item(i).nodeTypeString _ & ") = <b " & "style='font-size: 14pt'>" _ & Collection_Entites.item(i).text & "</b><br>" Next resultat = resultat & "</td><td valign='top'>" For i = 0 To Collection_Notations.length - 1 resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Collection_Notations.item(i).nodeName _ & "</b> (" & Collection_Notations.item(i).nodeTypeString & ") " _ & "<b style='color:red'>[ SystemID = '" _ & Collection_Notations.item(i).systemID & "' - PublicID = '" _ & Collection_Notations.item(i).publicID & "' ]</b><br>" Next resultat = resultat & "</td></tr></table>" End If Next Response.Write resultat %> </body> </html> |
L'objet IXMLDOMElement représente l'objet élément dans l'arborescence d'un document XML.
Un objet élément est créé par l'intermédiaire de la méthode createElement appliquée à l'objet DOMDocument.
Objet_DOMElement = _ objet_DOMDocument.createElement(nom_element)
Les noeuds éléments sont parmi les objets les plus communs dans l'arborescence d'un document XML.
Ils peuvent possèder des attributs qui ne sont pas définis comme des noeuds enfants d'un élément et ne sont pas considérés comme étant une partie de l'arborescence d'un document XML.
Les noeuds éléments peuvent contenir d'autres noeuds éléments, du texte, ou être vide.
L'affectation d'un élément à un objet IXMLDOMElement parent s'effectue au moyen de la méthode appendChild.
NouedElement_Recepteur.appendChild(Noeud_Affecté)
L'insertion d'une valeur textuelle à l'intérieur des marqueurs d'un objet IXMLDOMElement doit passer par la création d'un noeud textuel (createTextNode), puis de l'affectation (appendChild)de ce dernier à l'élément récepteur.
Set Noeud_Texte = obj_DOMDocument.createTextNode(valeur) Noued_Element.appendChild(Noeud_Texte)
Les attributs sont affectés à un élément par l'intermédiaire de la méthode setAttributeNode ou setAttribute de l'objet IXMLDOMElement.
objet_DOMElement.setAttribute nom_attribut, valeur_attribut Set Noeud_attribut = _ obj_DOMDocument.createAttribute(nom_attribut) Set valeur_attribut = obj_DOMDocument.createTextNode(valeur) Noeud_attribut.appendChild valeur_attribut objet_DOMElement.setAttributeNode(Noeud_attribut)
En conséquence, l'objet IXMLDOMElement fournit des méthodes permettant de gérer facilement les attributs, en incluant les méthodes pour associer un attribut à un élément, pour récupérer un objet attribut et sa valeur ou encore pour les supprimer.
Valeur = objet_DOMElement.getAttribute(Nom) Set Objet_Attribut = objet_DOMElement.getAttributeNode(Nom) objet_DOMElement.removeAttribute(Nom)
Pour récupérer le jeu d'attributs associé à un élément, il est possible d'appeler la propriété attributes qui retourne une collection d'objet IXMLDOMNamedNodeMap contenant tous les éléments attributs.
Les PropriétésSet Liste_Attributs = Objet_DOMElement.attributes
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_DOMElement.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_DOMElement.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_DOMElement.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_DOMElement.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_DOMElement.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_DOMElement.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_DOMElement.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Chaîne = Objet_DOMElement.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_DOMElement.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_DOMElement.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_DOMElement.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Chaîne = Objet_DOMElement.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_DOMElement.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_DOMElement.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_DOMElement.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_DOMElement.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_DOMElement.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
set Objet_Node = Objet_DOMElement.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_DOMElement.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_DOMElement.tagName |
contient le nom de l'élément, en lecture seule. |
Chaîne = Objet_DOMElement.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_DOMElement.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Noeud = Objet_DOMElement.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Noeud = Objet_DOMElement.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Valeur = Objet_DOMElement.getAttribute(Nom) |
retourne la valeur de l'attribut nommé. |
Set Objet_Attribute = Objet_DOMElement.getAttributeNode(Nom) |
retourne le noeud de l'attribut nommé. |
Set Objet_ListeNoeud = Objet_DOMElement.getElementsByTagName(Nom) |
retourne une collection d'éléments qui porteront le nom indiqué. |
True | False = Objet_DOMElement.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Noeud = Objet_DOMElement.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_DOMElement.normalize |
normalise tous les éléments descendants et combine deux ou plusieurs noeuds textuels adjacents à l'intérieur d'un noeud textuel unifié. |
Objet_DOMElement.removeAttribute(Nom) |
enlève ou remplace les attributs nommés. |
Set Objet_Attribute = Objet_DOMElement.removeAttributeNode(Objet_Attribute) |
enlève l'attribut spécifié à partir de l'élément. |
Set Objet_Noeud = Objet_DOMElement.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Noeud = Objet_DOMElement.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_ListeNoeud = Objet_DOMElement.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Noeud = Objet_DOMElement.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Objet_DOMElement.setAttribute(Nom, Valeur) |
attribue la valeur de l'attribut nommé. |
Set Objet_Attribute = Objet_DOMElement.setAttributeNode(Objet_Attribute) |
ajoute ou modifie le noeud d'attribut fourni de l'élément. |
valeur_chaine = Objet_DOMElement.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_DOMElement.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Const OpenFileForReading = 1 Dim obj_fso, obj_dom, obj_log, racine Dim obj_client, obj_document, obj_protocole, obj_code, obj_methode Dim document_txt, protocole_txt, code_txt, methode_txt Dim adresse_ip, methode, document, protocole, code, poids Dim tableau, elt_adresse, i i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("fichier_log.txt") Set obj_log = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") Set racine = obj_dom.createElement("statistique") obj_dom.appendChild racine Do While Not obj_log.AtEndOfStream ligne = obj_log.ReadLine tableau = Split(ligne, " ", -1, 1) elt_adresse = Split(tableau(3), ",", -1, 1) adresse_ip = tableau(0) methode = Right(elt_adresse(0), Len(elt_adresse(0)) - 1) document = elt_adresse(1) protocole = Left(elt_adresse(2), Len(elt_adresse(2)) - 1) code = tableau(4) poids = tableau(5) Set obj_client = obj_dom.createElement("client") obj_client.setAttribute "adresse_ip", adresse_ip Set obj_document = obj_dom.createElement("document") Set document_txt = obj_dom.createTextNode(document) Set poids_attr = obj_dom.createAttribute("poids") Set poids_txt = obj_dom.createTextNode(poids) obj_document.setAttributeNode(poids_attr) Set obj_protocole = obj_dom.createElement("protocole") Set protocole_txt = obj_dom.createTextNode(protocole) Set obj_code = obj_dom.createElement("code") Set code_txt = obj_dom.createTextNode(code) Set obj_methode = obj_dom.createElement("methode") Set methode_txt = obj_dom.createTextNode(methode) poids_attr.appendChild poids_txt obj_document.appendChild document_txt obj_protocole.appendChild protocole_txt obj_code.appendChild code_txt obj_methode.appendChild methode_txt obj_client.appendChild obj_document obj_client.appendChild obj_protocole obj_client.appendChild obj_code obj_client.appendChild obj_methode racine.appendChild obj_client i = i + 1 Loop obj_dom.save(Server.MapPath("fichier_log.xml")) obj_log.close Set obj_log = Nothing %> |
L'objet IXMLDOMEntity représente une entité analysé ou non-analysée dans le document XML.
<!ENTITY nom_entité ... >
L'objet IXMLDOMEntity représente l'entité elle-même et non pas la déclaration d'entité. Le DOM élaboré par le W3C (Worldwide Web Consortium) ne définit actuellement pas un objet modèlisant une déclaration d'entité.
En accord avec les spécifications du W3C, un analyseur XML peut développer complètement les références d'entité avant que le modèle de structure soit passé au Document Object Model, dans ce cas il n'y aura aucun noeud EntityReference dans l'arborescence du document. Lorsque ces références d'entités sont développées, l'arborescence du document ne contient pas n'importe quelles références d'entités.
XML ne contrôle pas qu'un processeur non-validant lit et prépare les déclarations d'entités créés dans un sous-ensemble externe ou déclarées dans des entités paramètres externes. Cela signifie que les entités analysées déclarées dans le sous-ensemble externe n'ont pas besoin être développées par plusieurs classes des applications et que la valeur de remplacement de l'entité peut ne pas être disponible. Lorsque la valeur de remplacement est disponible le noeud Entity correspondant de la liste d'enfant représente la structure de cette sustitution de texte, sinon, la liste d'enfant est vide.
Lorsque l'analyseur XML de Microsoft valide le document XML, il développe les entités externes à l'exception des entités binaires. Les noeuds représentant les entités développés comme les enfants en lecture seule de la référence d'entité. L'application de Microsoft ne développe pas ces entités lorsqu'elle n'est pas validante.
La structure de la liste d'enfant de l'entité est exactement la même que la structure de la liste d'enfant pour l'objet IXMLDOMEntityReference avec la même valeur de noeud.
La liste des entités dans une DTD peut être récupérée par l'intermédiaire de la propriété entities appliquées à un objet IXMLDOMDocumentype.
Set Collection_Entities = Objet_DocumenType.entities
Un objet IXMLDOMEntity est identifié par un type de noeud spécifique, en l'occurrence les propriétés nodeType et nodeTypeString appliquée à cet objet retournent respectivement la valeur numérique 6 et la chaîne de caractères entity.
Les PropriétésValeur_numérique = Objet_Entity.nodeType Chaîne = Objet_Entity.nodeTypeString
Propriété |
---|
Description |
Chaîne = Objet_Entity.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Entity.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Entity.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Entity.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Entity.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Entity.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Entity.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Entity.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Entity.nodeName |
contient le nom qualifié de la référence d'entité, en lecture seule. |
Valeur = Objet_Entity.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_Entity.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Entity.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Entity.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Chaîne = Objet_Entity.notationName |
contient le nom de la notation, en lecture seule. |
Set Objet_Document = Objet_Entity.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Entity.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Entity.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Entity.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Entity.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
Chaîne = Objet_Entity.publicId |
contient l'identificateur public associé avec l'entité, en lecture seule. |
True | False = Objet_Entity.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Entity.systemId |
contient l'identificateur système associé à l'entité en lecture seule. |
Chaîne = Objet_Entity.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Entity.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_Entity.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_Entity.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_Entity.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Entity.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_Entity.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_NodeList = Objet_Entity.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_Node = Objet_Entity.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Entity.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_Entity.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Entity.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, fichier Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier affichage = Visualise_Noeud(Objet_Document) Function Visualise_Noeud(Objet_Noeud) Const NODE_ENTITY = 6 Const NODE_DOCUMENT_TYPE = 10 Dim resultat, i, nombre, nb_noeuds, Objet_Node, Objet_NamedNodeMap resultat = "" If Objet_Noeud.nodeType = NODE_DOCUMENT_TYPE Then Set Objet_NamedNodeMap = Objet_Noeud.entities resultat = resultat & "<h2>" & Objet_Noeud.nodeName & " ( " _ & Objet_Noeud.nodeTypeString & " )</h2>" _ & "<h3>Nombre total d'entités : " _ & Objet_NamedNodeMap.length & "</h3><hr>" End If If Objet_Noeud.nodeType = NODE_ENTITY Then resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Objet_Noeud.nodeName _ & "</b> (" & Objet_Noeud.nodeTypeString & ") = <b " _ & "style='font-size: 14pt'>" & Objet_Noeud.text & "</b><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) Next Visualise_Noeud = resultat End Function %> </head> <body> <div><%= affichage %></div> </body> </html> |
L'objet IXMLDOMEntityReference représente un noeud de référence d'entité.
&reference_entite;
Une référence d'entité peut être créée par l'intermédiaire de la méthode createEntityReference appliquée à l'objet DOMDOcument.
Set Objet_EntityReference = _ Objet_Document.createEntityReference(nom_entité)
Un objet IXMLDOMEntityReference est identifié par un type de noeud spécifique, en l'occurrence les propriétés nodeType et nodeTypeString appliquée à cet objet retournent respectivement la valeur numérique 5 et la chaîne de caractères entityreference.
Valeur_numérique = Objet_EntityReference.nodeType Chaîne = Objet_EntityReference.nodeTypeString
Si l'analyseur XML développe les références d'entité au moment de la construction du modèle de structure, aucun objet EntityReference n'apparaît dans l'arborescence du document XML.
XML ne requiert pas de processeurs non-validant pour manipuler les déclarations d'entités externes créées dans un sous-ensemble externe ou déclarées dans des entités paramètres externes. En fait, les entités analysées déclarées dans le sous-ensemble externe n'ont pas besoin d'être développées, et donc la valeur de remplacement de l'entité peut ne pas être disponible. Si la valeur de remplacement est disponible, alors la valeur de la référence d'entité apparaît dans la liste d'enfant de l'objet EntityReference.
Les objets EntityReference peuvent être insérés à l'intérieur du modèle de structure lorsqu'une référence entité est dans le document source.
Les références de caractère et des références d'entités prédédéfinies sont considérées, afin d'être développées par le processeur HTML ou XML, de telle sorte que les caractères soient représentés par leur équivalent Unicode plutôt que par une référence d'entité.
De plus, le processeur XML peut développer complètement les références d'entités au moment de la construction du modèle de structure à la place des objets EntityReference fournis. S'il fournit de tels objets, alors pour un noeud EntityReference donné, il peut être qu'il n'y a pas de noeud d'entité représentant l'entité référencée. Si une telle entité existe, alors la sous-arborescence du noeud EntityReference est en générale une copie de la sous-arborescence du noeud Entity.
Toutefois, L'objet Entity peut ne pas être vrai lorsqu'une entité contient un préfixe d'espace de noms sans lien. Dans une telle situation, car la résolution du préfixe d'espace de noms dépend de la localisation de la référence d'entité, les descendants de l'objet EntityReference peuvent être liés aux adresses URI de l'espace de noms.
Les PropriétésPropriété |
---|
Description |
Chaîne = Objet_EntityReference.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_EntityReference.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_EntityReference.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_EntityReference.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_EntityReference.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_EntityReference.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_EntityReference.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_EntityReference.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_EntityReference.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_EntityReference.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_EntityReference.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_EntityReference.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_EntityReference.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_EntityReference.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_EntityReference.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_EntityReference.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_EntityReference.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_EntityReference.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_EntityReference.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_EntityReference.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_EntityReference.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_EntityReference.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_EntityReference.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_EntityReference.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_EntityReference.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_EntityReference.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_EntityReference.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_EntityReference.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_EntityReference.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_EntityReference.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_EntityReference.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, fichier Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier affichage = Visualise_Noeud(Objet_Document) Function Visualise_Noeud(Objet_Noeud) Const NODE_ENTITY_REFERENCE = 5 Dim resultat, i, nombre, nb_noeuds, Objet_Node, parent resultat = "" If Objet_Noeud.nodeType = NODE_ENTITY_REFERENCE Then Set parent = Objet_Noeud.parentNode resultat = resultat & "<b style='color: blue; font-weight: bold'>" _ & Objet_Noeud.nodeName _ & "</b>(" & Objet_Noeud.nodeTypeString & ") : <br>[ <b>" _ & parent.nodeName & "</b> = " & parent.text & " ]<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) Next Visualise_Noeud = resultat End Function %> </head> <body> <div><%= affichage %></div> </body> </html> |
L'objet IXMLDOMImplementation fournit des méthodes qui sont indépendantes de n'importe quelles instances particulières du Modèle d'Objet du Document (DOM).
L'objet d'implémentation est créé à partir de la méthode implementation de l'objet DOMDocument.
Les MéthodesSet Objet_Implementation = Objet_Document.implementation
Méthode |
---|
Description |
True | False = Objet_Implementation.hasFeature(Caractéristique, Version) |
retourne True si la version spécifiée de l'application supporte la caractéristique spécifiée. |
<% Dim Objet_Document Dim Objet_Implementation Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = False Objet_Document.Load "logitheque.xml" Set Objet_Implementation = Objet_Document.implementation Response.Write "<u>L'implémentation DOM version 1.0 est :</u> <b>" _ & Objet_Implementation.hasFeature("DOM", "1.0") & "</b>" %> |
L'objet IXMLDOMNotation contient une notation déclarée dans la Définition de Type de Document (DTD) ou dans le schéma.
Déclaration XSchema <xs:notation name="nom_notation" public="ID_Public" system="URI" /> L'appel XSchema de la notation <xs:element name="nom_element"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:hexBinary"> <xs:attribute name="nom_attribut"> <xs:simpleType> <xs:restriction base="xs:NOTATION"> <xs:enumeration value="nom_notation"/> ... <xs:enumeration value="nom_notationN"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> Utilisation dans le document XML <nom_element nom_attribut="nom_notation">...</nom_element> Déclaration DTD <!NOTATION nom_notation SYSTEM "ID_Externe"> <!NOTATION nom_notation PUBLIC "ID_Public" "URI"> L'appel DTD de la notation <!ENTITY nom_entité SYSTEM "URI" NDATA nom_notation> <nom_element nom_attribut="&nom_entité;"/>
Les notations identifient par un nom le format d'entités non-analysées, le format des éléments qui porte un attribut de notation ou l'application à laquelle une instruction de traitement est adressée.
Un objet IXMLDOMNotation peut être créé au moyen de la méthode createNode appliquée à l'objet DOMDocument avec le type de noeud fixé à 12.
Set Objet_Notation = _ Objet_Document.createNode(12, nom, URI_espace_noms)
La liste des notations dans une déclaration de type de document ou d'un schéma peut être extraite à partir de la propriété notations appliquée à l'objet IXMLDocumentType.
Set Objet_NamedNodeMap = Objet_DocumentType.notations Set Objet_NamedNodeMap = Objet_Schema.notations Set Objet_Notation = Objet_NamedNodeMap.item(index)
L'objet IXMLDOMEntity contenant une référence à une notation, peut livrer le nom de cette dernière par l'intermédiaire de la propriété notationName.
Chaîne = Objet_Entity.notationName
Un objet IXMLDOMNotation se distingue par un type de noeud spécifique, en l'occurrence par la valeur numérique 7 ou la chaîne de caractères notation en utilisant respectivement les propriétés nodeType et nodeTypeString.
Valeur_numérique = Objet_Notation.nodeType Chaîne = Objet_Notation.nodeTypeString
Deux propriétés spécifiques à l'objet IXMLDOMNotation permettent de retourner l'identificateur public (publicID) ou système (systemID) de la notation.
Les PropriétésChaîne = Objet_Notation.systemID Chaîne = Objet_Notation.publicID
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_Notation.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Notation.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Notation.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_Notation.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Notation.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Notation.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Notation.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_Notation.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Notation.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Notation.nodeName |
contient le nom qualifié de la référence d'entité, en lecture seule. |
Valeur = Objet_Notation.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_Notation.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Notation.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Notation.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Notation.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Notation.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Notation.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Notation.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Notation.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
Chaîne = Objet_Notation.publicId |
contient l'identificateur public associé avec l'entité, en lecture seule. |
True | False = Objet_Notation.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
True | False = Objet_Notation.systemId |
contient l'identificateur du système pour la notation, en lecture seule. |
Chaîne = Objet_Notation.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Notation.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_Notation.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_Notation.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_Notation.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Notation.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_Notation.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Notation.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_Notation.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Notation.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_Notation.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Notation.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<html> <head> <% Dim Objet_Document, fichier Dim affichage Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument.4.0") Objet_Document.async = false fichier = Server.MapPath("fichier.xml") Objet_Document.load fichier affichage = Visualise_Noeud(Objet_Document, 0) Function Visualise_Noeud(Objet_Noeud, nb_espaces) Const NODE_NOTATION = 12 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 = NODE_NOTATION Then resultat = resultat & "<b style='color:red'>[ SystemID = '" _ & Objet_Noeud.systemID & "' - PublicID = '" _ & Objet_Noeud.publicID & "' ]</b><br>" 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> Fichier : fichier.dtd <?xml version="1.0" encoding="iso-8859-1"?> <!ELEMENT vacance (document+)> <!ELEMENT document EMPTY> <!ATTLIST document source ENTITY #REQUIRED> <!NOTATION avi SYSTEM "video/avi"> <!NOTATION mpeg SYSTEM "video/mpeg"> <!NOTATION mov SYSTEM "video/quicktime"> <!NOTATION jpeg SYSTEM "image/jpeg"> <!NOTATION gif SYSTEM "image/gif"> <!ENTITY vacanceavi SYSTEM "video.avi" NDATA avi> <!ENTITY vacancempg SYSTEM "video.mpg" NDATA mpeg> <!ENTITY vacancegif SYSTEM "photo.gif" NDATA gif> <!ENTITY vacancejpeg SYSTEM "image.jpg" NDATA jpeg> <!ENTITY vacancemov SYSTEM "video.mov" NDATA mov> Fichier : fichier.xml <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE videotheque SYSTEM "fichier.dtd"> <vacance> <document source="&vacanceavi;"/> <document source="&vacancegif;"/> <document source="&vacancejpeg;"/> <document source="&vacancemov;"/> <document source="&vacancempg;"/> </vacance> |
L'objet IXMLDOMProcessingInstruction représente une instruction de traitement dans laquelle une information spécifique pour le processeur XML est conservée dans le texte du document.
Un objet IXMLDOMProcessingInstruction est créé à partir de la méthode createProcessingInstruction de l'objet DOMDocument.
Set Objet_ProcessingInstruction = _ Objet_Document.createProcessingInstruction(Nom, Contenu)
Le nom est une chaîne de caractères XML valide qui sera séparée du contenu par un espace blanc dans le noeud résultant.
<?Nom Contenu?>
Le contenu d'un tel noeud est constitué d'une expression textuelle représentant par exemple, un attribut et sa valeur associée ou une classe Java.
<?xml-stylesheet type="text/xsl" href="../style.xsl"?>
Une instruction de traitement est donc formée par un balisage particulier dans le document XML, soit une séquence de caractères <? pour indiquer sont commencement et une autre ?> pour la fin.
Une instruction de traitement est représentée par un type de noeud précis, en l'occurrence par la constante NODE_PROCESSING_INSTRUCTION possédant la valeur numérique 7 ou textuelle processinginstruction. Ainsi, ce noeud pourra être repéré dans une arborescence XML par la méthode nodeType ou nodeTypeString appliquée à l'objet nodal courant.
Les PropriétésIf Objet_Node.nodeType = 7 Then ... End If If Objet_Node.nodeTypeString = "processinginstruction" Then ... End If
Propriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_ProcInst.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_ProcInst.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_ProcInst.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Valeur = Objet_ProcInst.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_ProcInst.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_ProcInst.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_ProcInst.lastChild |
contient le dernier noeud enfant en lecture seule. |
Chaîne = Objet_ProcInst.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_ProcInst.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_ProcInst.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Chaîne = Objet_ProcInst.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Set Objet_Valeur = Objet_ProcInst.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_ProcInst.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Set Objet_Valeur = Objet_ProcInst.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_ProcInst.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_ProcInst.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_ProcInst.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_ProcInst.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_ProcInst.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_ProcInst.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_ProcInst.target |
indique la cible, soit l'application à laquelle cette instruction detraitement est dirigé, en lecture seule. |
Chaîne = Objet_ProcInst.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_ProcInst.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Objet_ProcInst.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Set Objet_Node = Objet_ProcInst.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
True | False = Objet_ProcInst.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_ProcInst.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Set Objet_Node = Objet_ProcInst.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_ProcInst.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Set Objet_NodeList = Objet_ProcInst.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_ProcInst.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
Chaîne = Objet_ProcInst.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_ProcInst.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Dim Objet_Document, racine, noeud Dim Objet_ProcessingInstruction Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.load(Server.MapPath("fichier.xml")) Set racine = Objet_Document.documentElement For Each noeud In Objet_Document.childNodes If noeud.nodeType = 7 AND noeud.nodeName = "xml" Then Response.Write "<h3>Une instruction de traitement a été trouvée " _ & (<i>" & noeud.nodeTypeString & "</i>) "</h3>" Response.Write "<?" & noeud.nodeName & " " & noeud.text & "?>" Exit For Else Response.Write "<h3>Aucune instruction de traitement n'a été trouvée.</h3>" Set Objet_ProcessingInstruction = _ Objet_Document.createProcessingInstruction("xml", _ "version=""1.0"" encoding=""iso-8859-1""") Objet_Document.insertBefore Objet_ProcessingInstruction, racine Response.Write "<b><u>L'instruction de traitement suivante " _ & "a été ajoutée :</u></b><br>" _ & "<?" & Objet_ProcessingInstruction.nodeName & " " _ & Objet_ProcessingInstruction.text & "?>" End If Next Objet_Document.Save(Server.MapPath("fichier.xml")) Set Objet_Document = Nothing %> |
L'objet XMLSchemaCache et la collection IXMLDOMSchemaCollection est utilisé par les schémas et les propriétés d'espace de noms sur l'objet IXMLDOMDocument2.
Set Objet_SchemaCache = _ Server.CreateObject("Msxml2.XMLSchemaCache")
L'objet XMLSchemaCache devient une collection lorsqu'un ou plusieurs objets du même type sont ajoutés par l'intermédiaire de la méthode addCollection.
Set Objet_SchemaCache =_ Server.CreateObject("Msxml2.XMLSchemaCache") Set Objet_SchemaCollection = _ Server.CreateObject("Msxml2.XMLSchemaCache") Objet_SchemaCache.add('Espace_Nom','Objet_Schéma') Objet_SchemaCollection.addCollection(Objet_SchemaCache)
L'objet XMLSchemaCache est une unité d'exécution libre (free-threaded) et peut être utilisé dans de multiples documents simultanément.
Un seul document de schéma peut appartenir à de multiples collections de schéma et resteront en lecture seule jusqu'à ce qu'il soit enlevé de toutes les collections. Les documents de schéma appartenant à une collection doivent être en unité d'exécution libre.
Les PropriétésPropriété |
---|
Description |
Valeur = Objet_SchemaCollection.length |
retourne le nombre d'espaces de noms en cours dans la collection. |
Méthode |
---|
Description |
Objet_SchemaCollection.add(Espace_Nom, Objet_Schema) |
ajoute un nouvel item à la collection de schémas. |
Objet_SchemaCollection.addCollection(Objet_SchemaCollection) |
ajoute tous les schémas provenant d'une autre collection à l'intérieur de la collection courante. |
Set Objet_Node = Objet_SchemaCollection.get(URI_Espace_Nom) |
retourne en lecture seule le noeud DOM (Document Object Model) contenant l'élément <Schema> à l'URI spécifié. |
URI_Espace_Nom = Objet_SchemaCollection.namespaceURI(index) |
retourne l'URI d'espace de noms appartenant à l'index spécifié. |
Objet_SchemaCollection.remove(URI_Espace_Nom) |
enléve les espaces de noms spécifiés d'une collection. |
</html> <body> <script language="Javascript" type="text/javascript"> var Objet_Document = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); var Objet_Style = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); var Objet_SchemaCache = new ActiveXObject("Msxml2.XMLSchemaCache"); Objet_SchemaCache.add("x-schema:livre.xdr", "c:\\exemple\\livre.xdr"); Objet_Document.schemas = Objet_SchemaCache; Objet_Document.async = false; Objet_Style.async = false; Objet_Document.load("c:\\exemple\\livre.xml"); Objet_Style.load("c:\\exemple\\livre.xsl"); document.write(Objet_Document.transformNode(Objet_Style)); </script> </body> </html> Fichier : livre.xml <?xml version='1.0'?> <logitheque xmlns="x-schema:logitheque.xdr" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <logiciel> <nom>ASP, ADO, and XML Complete</nom> <editeur>Sybex</editeur> <commentaire>Develop dynamic Web applications with ASP, ADO and XML.</commentaire> </logiciel> <logiciel> <nom>XSLT Programmer's reference</nom> <editeur>Wrox Press</editeur> <commentaire>This book is for programmers who want to learn how to use XSLT language to develop web applications.</commentaire> </logiciel> </logitheque> Fichier : livre.xdr <?xml version="1.0" encoding="ISO-8859-1"?> <Schema name="schema-livre" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="commentaire" model="closed" content="textOnly" dt:type="string"/> <ElementType name="editeur" model="closed" content="textOnly" dt:type="string"/> <ElementType name="logiciel" model="closed" content="eltOnly" order="seq"> <element type="nom" minOccurs="1" maxOccurs="1"/> <element type="editeur" minOccurs="1" maxOccurs="1"/> <element type="commentaire" minOccurs="1" maxOccurs="1"/> </ElementType> <ElementType name="logitheque" model="closed" content="eltOnly" order="seq"> <attributeType name="xmlns" dt:type="string"/> <attribute type="xmlns"/> <element type="logiciel" minOccurs="1" maxOccurs="*"/> </ElementType> <ElementType name="nom" model="closed" content="textOnly" dt:type="string"/> </Schema> Fichier : livre.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:liv="x-schema:livre.xdr" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <xsl:template match="/"> <html> <head/> <body> <table border="1"> <xsl:apply-templates/> </table> </body> </html> </xsl:template> <xsl:template match="liv:logiciel"> <tr> <td> <xsl:for-each select="liv:nom"> <b> <xsl:apply-templates/> </b> </xsl:for-each> </td> <td> <xsl:for-each select="liv:editeur"> <xsl:apply-templates/> </xsl:for-each> </td> </tr> <tr> <td colspan="2"> <xsl:for-each select="liv:commentaire"> <xsl:apply-templates/> </xsl:for-each> </td> </tr> </xsl:template> </xsl:stylesheet> |
les objets ServerXMLHTTP et IServerXMLHTTPRequest fournissent des méthodes et des propriétés qui permet d'établir une connexion HTTP entre les fichiers ou les objets dur différents serveurs Web.
Set Objet_ServerXMLHTTP = _ Server.CreateObject("MSXML2.ServerXMLHTTP") Set Objet_ServerXMLHTTP = _ Server.CreateObject("afba6b42-5692-48ea-8141-dc517dcf0ef1") |
L'objet ServerXMLHTTP offre des fonctionnalités similaires à celles de l'objet XMLHTTP. Toutefois, l'objet ServerXMLHTTP ne compte pas sur le contrôle WinInet pour l'accès HTTP vers des documents XML distants.
L'objet ServerXMLHTTP utilise une nouvelle zone client HTTP. Conçu pour les applications serveurs, ce sous-ensemble de sécurité du serveur de WinInet procure une meilleure fiabilité et sécurité de la zone client HTTP.
L'objet ServerXMLHTTP est la plupart du temps utilisé pour :
Il est possible d'utiliser l'objet ServerXMLHTTP, soit indirectement en employant la méthode setProperty de l'objet DOMDocument, soit directement en employant l'objet ServerXMLHTTP lui-même.
L'utilisation indirecte de l'objet ServerXMLHTTP s'effectue par l'intermédiaire de la propriété setProperty de l'objet DOMDocument de la façon suivante :
Dim Objet_Document Set Objet_Document = _ Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false Objet_Document.setProperty("ServerHTTPRequest", true) Objet_Document.load("http://nom-serveur/reponse.asp")
Il est nécessaire d'utiliser la méthode setProperty de l'objet DOMDocument pour fixer l'indicateur de la propriété ServerHTTPRequest, lequel indique que l'analyseur doit utiliser la sécurité du serveur de l'objet ServerXMLHTTP, à la place de l'objet de DOMDocument, pour charger simultanément un document XML depuis un serveur.
Comme avec tous les indicateurs de propriété, la propriété ServerHTTPRequest doit être fixée avant l'appel de la méthode load de l'objet DOMDocument, sinon l'analyseur ignorera l'indicateur de propriété.
La valeur de l'indicateur égale à True signifie la création d'un objet ServerXMLHTTP d'arrière-plan, distinct de l'objet DOMDocument.
L'utilisation directe de l'objet de ServerXMLHTTP permet un contrôle procédural beaucoup plus important qu'avec la méthode setProperty précitée.
Plutôt que de récupérer seulement les réponses XML à partir d'un serveur distant, l'objet ServerXMLHTTP permet aux développeurs d'utiliser les méthodes de transmissions GET et POST, aussi bien que la capacité de manipuler des connexions de sécurité de base.
Dim Objet_ServerXMLHTTP Set Objet_ServerXMLHTTP = _ Server.CreateObject ("MSXML2.ServerXMLHTTP") Objet_ServerXMLHTTP.open("GET", _ "http://nom-serveur/reponse.asp, false)
L'interface IServerXMLHTTPRequest hérite de l'IXMLHTTPRequest et l'étend avec quatre nouvelles méthodes getOption, setOption, waitForResponse et setTimeouts.
Les PropriétésPropriété |
---|
Description |
Objet_ServerXMLHTTPRequest.onreadystatechange = GestionnaireEvénement |
indique le getionnaire d'événements pour être appelé lorsque la propriété readyState change, en lecture et écriture. |
Etat = Objet_ServerXMLHTTPRequest.readyState |
représente l'état de la requête, en lecture seule. |
Chaîne = Objet_ServerXMLHTTPRequest.responseBody |
représente le corps de l'entité de réponse commun tableau d'octets non-signés, en lecture seule. |
Stream = Objet_ServerXMLHTTPRequest.responseStream |
représente le corps de l'entité de réponse comme un flux de données textuelles, en lecture seule. |
Texte = Objet_ServerXMLHTTPRequest.responseText |
représente le corps de l'entité de réponse comme une chaîne de caractères, en lecture seule. |
Set Objet_XML = Objet_ServerXMLHTTPRequest.responseXML |
représente le corps de l'entité de réponse comme analysé par l'analyseur de Microsoft MSXML, en lecture seule. |
Valeur = Objet_ServerXMLHTTPRequest.status |
représente le code du statut HTTP retourné par une requête, en lecture seule. |
Chaîne = Objet_ServerXMLHTTPRequest.statusText |
représente le statut de la ligne de réponse HTTP, en lecture seule. |
Méthode |
---|
Description |
Objet_ServerXMLHTTP.abort() |
annule la requête HTTP courante. |
Chaîne = Objet_HttpRequest.getAllResponseHeaders() |
récupère les valeurs de tous les entêtes HTTP. |
Valeur = Objet_ServerXMLHTTPRequest.getOption(option) |
retourne la valeur de l'une des options suivantes :
|
Chaîne = Objet_HttpRequest.getResponseHeader(Nom_Entête) |
récupère la valeur d'un entête HTTP à partir du corps de la réponse. |
Objet_ServerXMLHTTP.open(GET | POST | PUT | PROPFIND, URL_Requête [, Bool_Async, Nom_Utilisateur, Mot_Passe]) |
initialise une requête Msxml2.XMLHTTP, et spécifie la méthode, l'adresse URL et les informations d'authentification pour la requête. |
Objet_ServerXMLHTTP.send([Nom_Corps]) |
envoie une requête HTTP vers le serveur et reçois une réponse. |
Objet_ServerXMLHTTPRequest.setOption(option) = Valeur |
fixe une des options suivantes :
|
Objet_ServerXMLHTTPRequest.setTimeouts(Pause_Résolution, Pause_Connection, Pause_Envoi, Pause_Réception) |
indique les paramètrages de pause pour la résolution du nom de domaine, en établissant la connexoion vers le serveur, l'envoi des données et la réception de la réponse. La valeur 1000 représente une seconde. |
Objet_HttpRequest.setRequestHeader(Nom_Entête) |
spécifie le nom d'un entête HTTP. |
Objet_ServerXMLHTTPRequest.waitForResponse(Temps_Secondes) |
autorise les requêtes serveurs à suspendre l'exécution tant que l'attente pour une opération d'envoi asychrone soit complète. |
Fichier sur le serveur hôte <html> <head> <title>La poésie</title> </head> <body> <h2>Les poèmes</h2> <a href="http://serveur-hote/serverxmlhttp.asp"> La locution des pierrots </a> ... </body> </html> Fichier : serverxmlhttp.asp <html> <head> <% Dim Objet_ServerXMLHTTP Dim auteur, titre, poeme Set Objet_ServerXMLHTTP = _ Server.CreateObject("MSXML2.ServerXMLHTTP") Objet_ServerXMLHTTP.open _ "GET", "http://serveur-distant/reponse.asp", false Objet_ServerXMLHTTP.send Set titre = _ Objet_ServerXMLHTTP.responseXML.selectSingleNode "/poesie/titre" Set auteur = _ Objet_ServerXMLHTTP.responseXML.selectSingleNode "/poesie/auteur" Set poeme = _ Objet_ServerXMLHTTP.responseXML.selectSingleNode "/poesie/texte" %> </head> <body> <h2> <% Response.Write titre.text %> </h2> <i>(Un poème de <% Response.Write auteur.text %>)</i> <p> <% Response.Write poeme.text %> </p> </body> </html> Fichier : reponse.asp <% Dim obj_dom Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") obj_dom.async = false obj_dom.load Server.MapPath("source.xml") Response.ContentType = "text/xml" obj_dom.save Response %> Fichier : source.xml <?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> <!DOCTYPE poesie [ <!ELEMENT poesie (titre, texte, auteur)> <!ELEMENT titre (#PCDATA)> <!ELEMENT texte (#PCDATA)> <!ELEMENT auteur (#PCDATA)> ]> <poesie> <titre>Locution des pierrots</titre> <texte> Je ne suis qu'un viveur lunaire Qui fait des ronds dans le bassin Et cela, sans autre dessein Que de devenir légendaire. Retroussant d'un air de défin Mes manches de Mandarin pâle, J'arrondis ma bouche et - j'exhale Des conseils doux de Crucifix Ah! oui, devenir légendaire, Au seuil des siècles charlatans ! Mais où sont les Lunes d'antan ? Et que Dieu n'est-il à refaire ? </texte> <auteur>Jules Laforgue</auteur> </poesie> |
L'objet IXMLDOMSelection représente la liste de noeuds qui correspond à un modèle XSL ou à une expression XPath.
Set Objet_Selection = _ Objet_Document2.selectNodes(Expression)
L'objet IXMLDOMSelection est créé par l'intermédiaire de la méthode selectNodes de l'objet IXMLDOMDocument2. Cet objet est une extension du DOM du W3C (Worldwide Web Consortium).
Les PropriétésPropriété |
---|
Description |
Set Objet_Node = Objet_Selection.context |
indique un noeud à appliquer à une sélection. |
Expression = Objet_Selection.expr |
obtient ou fixe une expression XPath. |
Valeur = Objet_Selection.length |
indique le nombre d'items d'une collection. |
Propriété |
---|
Description |
Set Autre_Objet_Selection = Objet_Selection.clone |
génére une copie exacte de l'objet XMLDOMSelection courant. |
Chaîne = Objet_Selection.getProperty(Nom) |
obtient une propriété par son nom. |
Set Objet_Node = Objet_Selection.item(Index) |
permet un accès aléatoire à des noeuds individuels à l'intérieur d'une collection. |
Set Objet_Node = Objet_Selection.matches(Objet_Node) |
vérifie si le noeud est contenu dans la collection. |
Set Objet_Node = Objet_Selection.nextNode |
retourne le noeud textuel dans une collection. |
Set Objet_Node = Objet_Selection.peekNode |
obtient le noeud textuel que la méthode nextNode retournerait sans avancer la position de ligne. |
Objet_Selection.removeAll |
enlève tous les noeuds du contexte courant qui correspondent à la requête. |
Set Objet_Node = Objet_Selection.removeNext |
enlève le noeud textuel qui est retourné par la méthode peekNode ou nextNode. |
Objet_Selection.reset |
réinitialise la position de la liste. |
<% Dim obj_dom, objet_selection, i Dim fichier, noeud, expression Set obj_dom = Server.CreateObject("Msxml2.DOMDocument") obj_dom.async = false fichier = Server.MapPath("logitheque.xml") obj_dom.load(fichier) obj_dom.setProperty "SelectionLanguage", "XPath" Set objet_selection = obj_dom.selectNodes("//categorie[6]/logiciel/nom") expression = objet_selection.expr Response.Write "<u>Contenu de la sélection récupérée par l'expression <i>" _ & objet_selection.getProperty("SelectionLanguage") _ & "</i> suivante :</u> <b>" & expression & "</b><hr>" For i = 0 To objet_selection.length - 1 Set noeud = objet_selection.item(i) Response.Write i & "- <b>" & noeud.nodeName & "</b> : " & noeud.text & "<br>" Next %> |
L'objet IXMLDOMText représente le contenu textuel d'un élément ou d'un attribut.
Un objet DOM textuel est créé par l'intermédiaire de la méthode createTextNode appliquée à l'objet DOMDocument.
Set Objet_DOMText = obj_dom.createTextNode("nom_noeud")
L'attribution d'un objet IXMLDOMText à un noeud élément ou attribut, s'effectue au moyen de la méthode appendChild de l'objet IXMLDOMNode.
objet_DOMNode.appendChild objet_DOMText
Le langage XML se réfère à ce contenu textuel comme les données de caractère et le distingue du marquage, soit les balises qui modifient ces données de caractère.
S'il n'y a aucun marquage à l'intérieur d'un élément, le texte de l'élément est contenu dans l'objet IXMLDOMText unique qui est l'enfant de l'élément.
S'il y a du marquage à l'intérieur d'un élément, il est analysé syntaxiquement à l'intérieur des éléments enfants qui sont des frères de l'objet IXMLDOMText.
Le contenu des éléments de marquage apparaît aussi dans des noeuds de texte, qui sont les enfants de l'élément de marquage spécifique.
Lorsqu'un document est d'abord rendu disponible au Modèle d'Objet de Document XML (DOM), tout le texte est normalisé : il y a seulement un noeud textuel pour chaque bloc de texte.
Les utilisateurs peuvent créer des noeuds de texte adjacents qui représentent le contenu d'un élément donné sans n'importe quel marquage intervenant, mais doivent être conscients qu'il n'y a aucune façon de représenter les séparations entre ces noeuds, donc ils ne persisteront pas entre des sessions de DOM XML.
La méthode normalize sur l'objet IXMLDOMElement fusionne les noeuds textuels adjacents à l'intérieur d'un unique noeud.
objet_DOMElement.normalize
Il est possible de normaliser avant le démarrage de n'importe quels opérations dépendant d'une structure de document particulière pour assurer que des sessions suivantes fonctionneront sur la même structure.
Les PropriétésPropriété |
---|
Description |
Set Objet_NamedNodeMap = Objet_Text.attributes |
contient la liste des attributs pour ce noeud en lecture seule. |
Chaîne = Objet_Text.baseName |
retourne le nom de base pour le nom qualifié avec l'espace de noms en lecture seule. |
Set Objet_NodeList = Objet_Text.childNodes |
contient une liste de noeuds contenant les enfants en lecture seule. |
Chaîne = Objet_Text.data |
contient les données du noeud CDATA, en lecture et écriture. |
Valeur = Objet_Text.dataType |
indique le type de données pour ce noeud en lecture et écriture. |
Set Objet_Node = Objet_Text.definition |
retourne la définition d'un noeud dans le DTD ou le schéma en lecture seule. |
Set Objet_Node = Objet_Text.firstChild |
contient le premier enfant de ce noeud en lecture seule. |
Set Objet_Node = Objet_Text.lastChild |
retourne le dernier noeud enfant en lecture seule. |
Valeur = Objet_Text.length |
spécifie la longueur, en caractères des données, en lecture seule. |
Chaîne = Objet_Text.namespaceURI |
retourne l'URI (Uniform Resource Identifier) pour l'espace de noms en lecture seule. |
Set Objet_Node = Objet_Text.nextSibling |
contient le frère suivant de ce noeud dans la liste d'enfants des parents en lecture seule. |
Chaîne = Objet_Text.nodeName |
contient le nom qualifié de l'élément, l'attribut, la référence d'entité ou une chaîne de caractères fixée pour d'autres types de noeud en lecture seule. |
Valeur = Objet_Text.nodeType |
spécifie le type de noeud XML DOM qui détermine des valeurs valides et si le noeud peut avoir des noeuds enfants en lecture seule. |
Objet_Valeur = Objet_Text.nodeTypedValue |
contient la valeur de ce noeud exprimée dans son type de donnée défini en lecture et écriture. |
Chaîne = Objet_Text.nodeTypeString |
retourne le type de noeud dans une forme de chaîne de caractères en lecture seule. |
Valeur = Objet_Text.nodeValue |
contient le texte associé avec le noeud en lecture et écriture. |
Set Objet_Document = Objet_Text.ownerDocument |
retourne la racine du document qui contient ce noeud en lecture seule. |
Set Objet_Node = Objet_Text.parentNode |
contient le noeud parent en lecture seule. |
True | False = Objet_Text.parsed |
contient la valeur True si le noeud et tous ses descendants ont été analysées et instanciées, ou False si n'importe quels noeuds restent à être analysées en lecture seule. |
Valeur = Objet_Text.prefix |
retourne le préfixe d'espace de noms en lecture seule. |
Set Objet_Node = Objet_Text.previousSibling |
contient le frère gauche de ce noeud en lecture seule. |
True | False = Objet_Text.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Chaîne = Objet_Text.text |
contient le contenu textuel du noeud et de sa sous-arborescence en lecture et écriture. |
Valeur = Objet_Text.xml |
contient la représentation XML du noeud et de tous ses descendants en lecture seule. |
Méthode |
---|
Description |
Set Objet_Node = Objet_Text.appendChild(Nouvel_Enfant) |
ajoute un nouvel enfant comme le dernier enfant de ce noeud. |
Objet_Text.appendData(Chaîne) |
ajoute la chaîne de caractères spécifiée aux données textuelles existantes. |
Set Objet_Node = Objet_Text.cloneNode(Bool_Profondeur) |
crée un nouveau noeud qui est un double exact de ce noeud. |
Objet_Text.deleteData(Position, Nb_Caractères) |
supprime la sous-chaîne de caractères à l'intérieur de données textuelles. |
True | False = Objet_Text.hasChildNodes() |
retourne True si le noeud a des enfants. |
Set Objet_Node = Objet_Text.insertBefore(Nouvel_Enfant, Référence) |
insère un noeud enfant à la gauche du noeud spécifié ou à la fin de la liste. |
Objet_Text.insertData(Position) |
insère la chaîne spécifiée à la position indiquée. |
Set Objet_Node = Objet_Text.removeChild(Noeud_Enfant) |
enlève le noeud enfant spécifié de la liste d'enfant et le retourne. |
Set Objet_Node = Objet_Text.replaceChild(Nouvel_Enfant, Ancien_Enfant) |
remplace l'ancien noeud enfant spécifié par le nouveau noeud enfant fourni dans le jeu d'enfants de ce noeud. |
Objet_Text.replaceData(Position, Nb_Caractères, Données) |
remplace le nombre de caractères spécifiés par la chaîne de caractères fournie. |
Set Objet_NodeList = Objet_Text.selectNodes(Expression_Pattern) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de noeuds correspondants. |
Set Objet_Node = Objet_Text.selectSingleNode(Chaîne_Requête) |
applique l'opération de mise en correspondance de modèles indiquée au contexte de ce noeud et retourne la liste de premier noeud correspondant. |
True | False = Objet_Text.specified |
indique si le noeud est explicitement spécifié ou dérivé d'une valeur par défaut dans le DTD ou le schéma en lecture seule. |
Set Objet_Text = Objet_Text.splitText(Position) |
découpe le texte du noeud à l'intérieur de deux noeuds textuels à la position spécifiée et insère le nouveau texte dans l'arborexcence comme un frère qui suit immédiatement le noeud. |
Chaîne = Objet_Text.substringData(Position, Nb_Caractères) |
récupère une sous-chaîne de caractères d'une chaîne complète à l'intervalle spécifié. |
Chaîne = Objet_Text.transformNode(Objet_StyleSheet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante. |
Objet_Text.transformNodeToObject(Feuille_Style, Objet) |
traite ce noeud et ses enfants utilisant la feuille de style de tranformation (XSLT) indiquée et retourne la transformation résultante dans l'objet fourni. |
<% Const OpenFileForReading = 1 Dim obj_fso, obj_dom, obj_log, racine Dim obj_client, obj_document, obj_protocole, obj_code, obj_methode Dim document_txt, protocole_txt, code_txt, methode_txt Dim adresse_attr, adresse_txt, poids_attr, poids_txt Dim adresse_ip, methode, document, protocole, code, poids Dim tableau, elt_adresse, i i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("fichier_log.txt") Set obj_log = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") Set racine = obj_dom.createElement("statistique") obj_dom.appendChild racine Do While Not obj_log.AtEndOfStream ligne = obj_log.ReadLine tableau = Split(ligne, " ", -1, 1) elt_adresse = Split(tableau(3), ",", -1, 1) adresse_ip = tableau(0) methode = Right(elt_adresse(0), Len(elt_adresse(0)) - 1) document = elt_adresse(1) protocole = Left(elt_adresse(2), Len(elt_adresse(2)) - 1) code = tableau(4) poids = tableau(5) Set obj_client = obj_dom.createElement("client") Set adresse_attr = obj_dom.createAttribute("adresse_ip") Set adresse_txt = obj_dom.createTextNode(adresse_ip) obj_client.setAttributeNode(adresse_attr) Set obj_document = obj_dom.createElement("document") Set document_txt = obj_dom.createTextNode(document) Set poids_attr = obj_dom.createAttribute("poids") Set poids_txt = obj_dom.createTextNode(poids) obj_document.setAttributeNode(poids_attr) Set obj_protocole = obj_dom.createElement("protocole") Set protocole_txt = obj_dom.createTextNode(protocole) Set obj_code = obj_dom.createElement("code") Set code_txt = obj_dom.createTextNode(code) Set obj_methode = obj_dom.createElement("methode") Set methode_txt = obj_dom.createTextNode(methode) poids_attr.appendChild poids_txt adresse_attr.appendChild adresse_txt obj_document.appendChild document_txt obj_protocole.appendChild protocole_txt obj_code.appendChild code_txt obj_methode.appendChild methode_txt obj_client.appendChild obj_document obj_client.appendChild obj_protocole obj_client.appendChild obj_code obj_client.appendChild obj_methode racine.appendChild obj_client i = i + 1 Loop obj_dom.save(Server.MapPath("fichier_log.xml")) obj_log.close Set obj_log = Nothing %> Fichier : fichier_log.txt 65.116.145.133 - - "GET,/coursjavascript/style.html,HTTP/1.1" 200 16169 212.30.116.74 - - "GET,/javascript/initialisation.js,HTTP/1.1" 200 9065 255.210.164.174 - - "GET,/coursdomxml/objet_element.html,HTTP/1.1" 200 9055 212.220.155.128 - - "GET,/coursdomxml/objet_text.html,HTTP/1.1" 200 8865 |
L'objet IXSLProcessor est utilisé pour les transformations des documents XML à l'aide de feuilles de style XSLT compilées.
Set Objet_Processor = Objet_Template.createProcessor()
La méthode createProcessor de l'objet IXSLTemplate retourne un objet IXSLProcessor.
L'objet IXSLProcessor charge le document XML contenant les données d'entrée par la méthode input.
Objet_Processor.input = Objet_Document
Le processeur possède une méthode transform qui applique les transformations imposées par la feuille de style XSLT préalablement définie dans l'objet IXSLTemplate
Objet_Processor.transform
Enfin, il écrit le résultat dans le flux de sortie spécifié par la méthode output.
Response.Write Objet_Processor.output
Le processeur XSL est complétement indépendant des méthodes transformNode et transformNodeToObject de l'objet DOMDocument. En particulier, lors d'une transformation XML en utilisant l'objet IXSLProcessor, l'événement ontransformnode n'est pas renvoyé sur le DOMDocument.
L'objet IXSLProcessor possède la capacité de passer des valeurs aux paramètres d'une feuille de style définis par <xsl:param...>.
Les Propriétés<xsl:param name="Parametre"/> <xsl:value-of select="//Element[$Parametre]"/> Objet_Processor.addParameter "Parametre", Valeur
Propriété |
---|
Description |
Set Objet_Node = Objet_Processor.input |
indique quelle arborescence d'entrée XML est à transformer. |
Set Objet = Objet_Processor.output Objet_Processor.output(output) |
fournit un objet de sortie coutumier pour écrire le résultat de la transformation. |
Valeur = Objet_Processor.readyState |
retourne l'état actuel du processeur. |
Objet_XSLProcessor.startMode(Mode) |
retourne la partie du mode de démarrage de la base du nom. |
espace_nom = Objet_Processor.startModeURI |
retourne la partie du mode de démarrage l'adresse URI de l'espace de noms. |
Set Objet_Node = Objet_Processor.stylesheet |
fournit a feuille de style XSL qui doit être compilée à l'intérieur d'un modèle XSL. |
Set Objet_Template = Objet_Processor.ownerTemplate |
retourne le moèle de feuille de style qui était utilisé pour créer l'objet IXSLProcessor. |
Propriété |
---|
Description |
Objet_Processor.addObject(obj, namespaceURI) |
permet de passer des objets à une feuille de style XSL. |
Objet_Processor.addParameter(baseName, parameter, namespaceURI) |
permet de passer des variables vers une feuille de style XSL. |
Objet_Processor.reset |
réinitialise l'état du processeur à ce qu'il était avant l'appel de transformation. |
Objet_Processor.setStartMode(mode, namespaceURI) |
permet d'exécuter des sous-ensembles d'une grande transformation XSL. |
true | False = Objet_Processor.transform |
démarre le processus de transformation ou reprend une transformation qui a retourné précédemment VARIANT_FALSE. |
<% Dim Objet_Document Dim Objet_Style Dim Objet_Template Dim Objet_Processor Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Set Objet_Style = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") Set Objet_Template = Server.CreateObject("MSXML2.XSLTemplate") Objet_Document.async = False Objet_Document.Load Server.mapPath("logitheque.xml") Objet_Style.async = False Objet_Style.Load Server.mapPath("logitheque.xsl") Set Objet_Template.stylesheet = Objet_Style Set Objet_Processor = Objet_Template.createProcessor() Objet_Processor.input = Objet_Document Objet_Processor.addParameter "num", 6 Objet_Processor.Transform Response.Write Objet_Processor.output Set Objet_Document = Nothing Set Objet_Style = Nothing Set Objet_Template = Nothing Set Objet_Processor = Nothing %> |
L'objet IXSLTemplate est utilisé pour les modèles XSLT(Extensible Stylesheet Language Transformations) cachées.
Set Objet_Template = _ Server.CreateObject("MSXML2.XSLTemplate")
Avant la version 2.6 de l'analyseur XML de Microsoft, chaque appel vers la méthode transformNode ou transformNodeToObject devait recompiler la feuille de style car celle-ci était simplement passée comme un objet IXMLDOMNode. Désormais, il est possible d'augmenter le performances en cachant la feuille de style compilée et en la réutilisant avec l'objet IXSLTemplate.
Pour mettre en cache une feuille de style compilée, il faut la charger à l'intérieur d'un objet IXSLTemplate. Ce-dernier est une unité d'exécution libre (free-threaded) et est apatride, ainsi il peut être stocké dans l'état d'application ASP partagé. Alors pour transformer un document donné employant ce modèle, il est nécessaire de créer un objet IXSLProcessor employant la méthode createProcessor. L'objet IXSLProcessor stocke l'état pour que celui-ci transforme l'appel et possède un modèle rental-threading.
Les PropriétésSet Objet_Style = _ Server.CreateObject("MSXML2.FreeThreadedDOMDocument") Objet_Style.Load "style.xsl" Set Objet_Template.stylesheet = Objet_Style Set Objet_Processor = Objet_Template.createProcessor() Objet_Processor.input = Objet_Document Objet_Processor.Transform Response.Write Objet_Processor.output
Propriété |
---|
Description |
Set Objet_Node = Objet_Template.stylesheet |
fournit les feuilles de style XSL à compiler à l'intérieur d'un modèle XSL. |
Méthode |
---|
Description |
Set Objet_Processor = Objet_Template.createProcessor |
crée un objet XSLProcessor de modèle de location qui utilise le IXSLTemplate. |
<% Dim Objet_Document Dim Objet_Style Dim Objet_Template Dim Objet_Processor Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Set Objet_Style = Server.CreateObject("MSXML2.FreeThreadedDOMDocument") Set Objet_Template = Server.CreateObject("MSXML2.XSLTemplate") Objet_Document.async = False Objet_Document.Load Server.mapPath("logitheque.xml") Set Objet_Erreur = Objet_Document.parseError If Objet_Erreur.errorCode <> 0 Then Response.Write "<h3>Le chargement a échoué.</h3>" _ & "<br>Une erreur d'analyse s'est produite." _ & "<br>Code : " & Objet_Erreur.errorCode _ & "<br>Raison : " & Objet_Erreur.reason _ & "<br>Texte : " & Objet_Erreur.srcText _ & "<br>URL : " & Objet_Erreur.url _ & "<br>Position : " & Objet_Erreur.filePos _ & "<br>Ligne : " & Objet_Erreur.line _ & "<br>Colonne : " & Objet_Erreur.linePos Else Objet_Style.async = False Objet_Style.Load Server.mapPath("logitheque.xsl") Set Objet_Template.stylesheet = Objet_Style Set Objet_Processor = Objet_Template.createProcessor() Objet_Processor.input = Objet_Document Objet_Processor.addParameter "num", 6 Objet_Processor.Transform Response.Write Objet_Processor.output End If Set Objet_Document = Nothing Set Objet_Style = Nothing Set Objet_Template = Nothing Set Objet_Processor = Nothing %> |
Type | Description |
---|---|
bin.base64 | représente un style MIME en base 64 encodé en BLOB binaire. La propriété nodeTypedValue retourne l'objet Variant VT_ARRAY. |
bin.hex | représente un chiffre héxadécimal représentant des octets. La propriété nodeTypedValue retourne l'objet Variant VT_ARRAY. |
boolean | représente un valeur booléenne 0 ou 1, où 0 correspond à false et 1 à true. La propriété nodeTypedValue retourne l'objet Variant VT_BOOL. |
char | représente une chaîne de caractères. La propriété nodeTypedValue retourne l'objet Variant VT_BSTR. |
date | représente une date dans un sous-ensemble de format ISO 8601, sans les données horaires comme 2001-11-03. La propriété nodeTypedValue retourne l'objet Variant VT_DATE. |
dateTime | représente une date dans un sous-ensemble de format ISO 8601, avec un horaire optionnel et une zone non-optionnel comme 2001-10-09T20:00:10. La propriété nodeTypedValue retourne l'objet Variant VT_DATE. |
dateTime.tz | représente une date dans un sous-ensemble de format ISO 8601, avec un horaire optionnel et une zone non-optionnel comme 2001-10-09T20:00:10-10:03. La propriété nodeTypedValue retourne l'objet Variant VT_DATE. |
fixed.14.4 | représente un nombre sur un maximum de 14 chiffres à la gauche du point décimal et de 4 sur la droite. La propriété nodeTypedValue retourne l'objet Variant VT_CY. |
float | représente un nombre réel avec aucune limite sur les chiffres, et peut potentiellement posséder un signe dominant, des chiffres fractionnels et optionnellement un exposant. Les valeurs sont comprises dans un intervalle de 1.7976931348623157E+308 à 2.2250738585072014E-308. La propriété nodeTypedValue retourne l'objet Variant VT_DOUBLE. |
int | représente un nombre entier avec un signe optionnel et sans fraction et exposant. La propriété nodeTypedValue retourne l'objet Variant VT_I4. |
number | représente un nombre sans limite de chiffres et peut potentiellement avoir un signe dominant, des chiffres fractionnels, et un exposant optionnel. Les valeurs sont comprises dans un intervalle de 1.7976931348623157E+308 à 2.2250738585072014E-308. La propriété nodeTypedValue retourne l'objet Variant VT_BSTR. |
time | représente un horaire dans un sous-ensemble de format ISO 8601, sans date ou zone horaire comme 11:55:10. La propriété nodeTypedValue retourne l'objet Variant VT_DATE. |
time.tz | représente un horaire dans un sous-ensemble au format ISO 8601, sans date mais avec une zone de temps optionnelle comme 11:1217-11:20. La propriété nodeTypedValue retourne l'objet Variant VT_DATE. |
i1 | représente un entier représenté dans un octet avec un signe optionnel, pas de fraction et pas d'exposant comme 10, 127 ou -128. La propriété nodeTypedValue retourne l'objet Variant VT_I1. |
i2 | représente un entier dans un mot avec un signe optionnel et sans fraction et ni exposant comme 1, 806 ou -32768". La propriété nodeTypedValue retourne l'objet Variant VT_I2. |
i4 | représente un entier sur quatre octets avec un signe optionnel et sans fraction ni exposant comme 1, 806, -32768, 210586, -11110243". La propriété nodeTypedValue retourne l'objet Variant VT_I4. |
i8 | représente un entier sur huit octets avec un signe optionnel et sans fraction et ni exposant et une précision sur 19 chiffres. Les valeurs sont comprises dans un intervalle de -9,223,372,036,854,775,808 à 9,223,372,036,854,775,807. |
r4 | représente un nombre réel avec une précision de sept chiffres et peut potentiellement avoir un signe dominant, des chiffres fractionnés et optionnellement un exposant. Les valeurs sont comprises dans un intervalle de 3.40282347E+38F à 1.17549435E-38F. La propriété nodeTypedValue retourne l'objet Variant VT_FLOAT. |
r8 | représente un nombre réel avec une précision de quinze chiffres et peut potentiellement avoir un signe dominant, des chiffres fractionnés et optionnellement un exposant. Les valeurs sont comprises dans un intervalle de 1.7976931348623157E+308 à 2.2250738585072014E-308. La propriété nodeTypedValue retourne l'objet Variant VT_DOUBLE. |
ui1 | représente un entier non-signé sans fraction ni exposant comme 1 ou 255. La propriété nodeTypedValue retourne l'objet Variant VT_UI1. |
ui2 | représente un entier non-signésur deux octets sans fraction ni exposant comme 1, 255 ou 65535. La propriété nodeTypedValue retourne l'objet Variant VT_UI2. |
ui4 | représente un entier non-signé sur quatre octets sans fraction ni exposant comme 1, 806 ou 12056348912. La propriété nodeTypedValue retourne l'objet Variant VT_UI4. |
ui8 | représente un entier non-signé sur huit octets sans fraction ni exposant compris dans l'intervalle de 0 à 18,446,744,073,709,551,615. |
uri | représente un URI (Universal Resource Identifier) comme urn:schemas-microsoft-com:Office9. |
uuid | représente des chiffres hexadécimaux représentant des octets avec optionnellement traits d'union imbriqués qui sont ignorés comme 333C7BC4-460F-11D0-BC04-0080C7055A83. La propriété nodeTypedValue retourne l'objet Variant VT_BSTR. |
Les recommandations XML 1.0 du W3C (World Wide Web Consortium) définissent aussi des types énumérés (notations et enumerations) et un ensemble de types de symboles qui se sont référés à des types primitifs dans la documentation XML de Microsoft.
Les Types de donnéesType | Description |
---|---|
entity | représente le type XML ENTITY. |
entities | représente le type XML ENTITIES. |
enumeration | représente un type énuméré valable uniquement avec des attributs. |
id | représente le type XML ID. |
idref | représente le type XML IDREF. |
idrefs | représente le type XML IDREFS. |
nmtoken | représente le type XML NMTOKEN. |
nmtokens | représente le type XML NMTOKENS. |
notation | représente le type NOTATION. |
string | représente le type de chaîne de caractères. |
Les énumérations IXMLDOMNodeType spécifient des désignations valides pour le type de noeud du modèle d'objet du document (DOM). Le type de noeud détermine des valeurs valides et di le noeud peut avoir des noeuds enfants.
Les Types de donnéesConstante | Valeur |
---|---|
Description | |
NODE_ELEMENT | 1 (element) |
signifie qu'un noeud représente un élément, la propriété nodeTypeString retournant bien element. Un noeud élément peut avoir les types de noeud enfant : Element, Text, Comment, ProcessingInstruction, CDATASection, et EntityReference. Il peut être l'enfant de noeud Document, DocumentFragment, EntityReference, et Element. | |
NODE_ATTRIBUTE | 2 (attribute) |
signifie que le noeud représente un attribut ou un élément, la propriété nodeTypeString retournant attribute. Un noeud attribut peut avoir les types de noeud enfant : Text et EntityReference. Il n'apparaît pas comme un noeud enfant de n'importe quel type de noeud car n'étant pas considéré comme un noeud enfant d'un élément. | |
NODE_TEXT | 3 (text) |
signifie que le noeud représente le contenu textuel d'une balise, la propriété nodeTypeString retournant text. Un noeud textuel ne peut avoir des noeuds enfants. Le noeud textuel peut apparaître comme le noeud enfant d'un attribut, d'un fragment de document, d'un élément, et d'un référence d'entité. | |
NODE_CDATA_SECTION | 4 (cdatasection) |
signifie que le noeud représente un section CDATA (Character DATA), la propriété nodeTypeString retournant cdatasection. Les sections CDATA sont utilisées comme des blocs de textes qui ne seraient pas analysés comme du marquage XML. Un noeud CDATASection ne peut avoir de noeuds enfants. Il peut apparaître comme un enfant des noeuds DocumentFragment, EntityReference, et Element. | |
NODE_ENTITY_REFERENCE | 5 (entityreference) |
signifie que le noeud représente une référence à une entité dans le document XML, la propriété nodeTypeString retournant entityreference. Le noeud de référence d'entité s'applique à toutes les entités. Un noeud EntityReference peut avoir les types de noeud enfant : Element, ProcessingInstruction, Comment, Text, CDATASection, et EntityReference. Ce noeud peut apparaître comme l'enfant d'un attribut, d'un fragement de document d'un élément ou d'une référence d'entité. | |
NODE_ENTITY | 6 (entity) |
signifie que le noeud représente un entité développée, la propriété nodeTypeString retournant entity. Un noeud d'entité peut avoir des noeuds enfants qui représente l'entité développée comme des noeuds Text et EntityReference. Il peut apparaître comme le noeud enfant de DocumentType. | |
NODE_PROCESSING_INSTRUCTION | 7 (processinginstruction) |
signifie que le noeud représente une instruction de traitement, la propriété nodeTypeString retournant processinginstruction. Un noeud ProcessingInstruction ne peut avoir n'importe quel noeud enfant. Il peut appraître comme l'enfant des noeuds Document, DocumentFragment, Element, et EntityReference. | |
NODE_COMMENT | 8 (comment) |
signifie que le noeud représente un commentaire, la propriété nodeTypeString retournant comment. Un noeud Comment ne peut avoir de noeuds enfants. Il peut apparaître comme l'enfant de noeuds Document, DocumentFragment, Element, et EntityReference. | |
NODE_DOCUMENT | 9 (document) |
signifie que le noeud représente un document, soit la racine de l'arborescence d'un document XML, la propriété nodeTypeString retournant document. Ce noeud fournit un accès au document complet. Il est créé en utilisant l'identificateur ProgID Microsoft.XMLDOM ou par l'intermédiaire d'un ilôt de données (data island) en utilisant les balises <XML> ou <script language="XML">. Un noeud Document peut avoir les types de noeud enfant : Element (maximum of one), ProcessingInstruction, Comment, et DocumentType. Il ne peut apparaître comme un enfant d'un autre type de noeud. | |
NODE_DOCUMENT_TYPE | 10 (documenttype) |
signifie que le noeud représente un déclaration de type de document (DTD) indiquée par la balise <!DOCTYPE>, la propriété nodeTypeString retournant documenttype. Un noeud DocumentType peut avoir les types de noeud enfant : Notation et Entity. Il peut apparaître comme l'enfant d'un noeud Document. | |
NODE_DOCUMENT_FRAGMENT | 11 (documentfragment) |
signifie que le noeud représente un fragment de document, la propriété nodeTypeString retournant documentfragment. Le noeud DocumentFragment associe un noeud ou une sous-arborescence avec un document sans en réalité être contenu dans le document. Il peut avoir les types de noeud d'enfant : Element, ProcessingInstruction, Comment, Text, CDATASection, et EntityReference. Le noeud DocumentFragment ne peut pas apparaître comme l'enfant d'un type de noeud. | |
NODE_NOTATION | 12 (notation) |
signifie que le noeud représente une notation dans la DTD (document type declaration), la propriété nodeTypeString retournant notation. Un noeud Notation ne peut avoir de noeuds enfants. Il peut apparaître comme l'enfant du noeud DocumentType. |
Les codes cités ci-dessous, permettent de fixer des options pour les méthodes getOption ou SetOption de l'objet IServerXMLHTTPRequest.
Valeur = Objet_ServerXMLHTTPRequest.getOption(option) Objet_ServerXMLHTTPRequest.setOption(option) = Valeur
Constante | Valeur |
---|---|
Description | |
SXH_OPTION_URL_CODEPAGE | 0 |
signifie que la page de code (CodePage) est utilisée pour convertir la chaîne de caractères Unicode, représentant une adresse URL, spécifiée dans la méthode open. | |
SXH_OPTION_ESCAPE_PERCENT_IN_URL | 1 |
par défaut, signifie que le caractère d'échappement pourcent % est utilisé dans une URL pour traduire des caractères dangereux. | |
SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS | 2 |
signifie que l'indicateur peut être fixé pour ignorer les problèmes avec le certificat SSL (Secure Sockets Layer) du serveur. | |
SXH_OPTION_SELECT_CLIENT_SSL_CERT | 3 |
signifie que le nom du certificat client spécifié est stocké localement. |
Le statut de la requête obtenu à partir de la requête la propriété readyState est représenté par un entier sur quatre octets.
Valeur = Objet_HttpRequest.readyState
Constante | Valeur |
---|---|
Description | |
UNINITIALIZED | 0 |
L'objet a été créé, mais pas initialisé, c'est-à-dire que la méthode open n'a pas été appelé. | |
LOADING | 1 |
L'objet a été créé, mais la méthode send n'a pas été appelé. | |
LOADED | 2 |
La méthode send a été appelé et les statuts des entêtes sont disponibles, mais la réponse n'est pas encore disponible. | |
INTERACTIVE | 3 |
Plusieurs données ont été reçues. Il est possible d'appeler les propriétés responseBody et responseText pour obtenir les résultats partiels courants. | |
COMPLETED | 4 |
Toutes les données ont été reçues, et les données complètes sont disponibles dans les propriétés responseBody et responseText. |
Les codes cités ci-dessous, permettent de formater un index de liste par exemple, à partir de la méthode FormatIndex de l'objet IXTLRuntime.
Valeur = Objet_Runtime.formatIndex(Index, Format_Index)
Code | Description |
---|---|
1 | affiche un index selon un système de numérotation standard. |
01 | affiche un index selon un système de numérotation avec des zéros non-significatifs. |
a | affiche un index selon un séquence de lettres majuscules de A[A] à Z[Z] |
a | affiche un index selon un séquence de lettres minuscules de a[a] à z[z]. |
i | affiche un index selon la numérotation romaine en majuscules (I, II, III,...). |
i | affiche un index selon la numérotation romaine en minuscules (i, ii, iii,...). |
Les codes cités ci-dessous, permettent de formater une valeur numérique à partir de la méthode FormatNumber de l'objet IXTLRuntime.
Valeur = Objet_Runtime.formatNumber(Nombre, Format_Nombre)
Code | Description |
---|---|
# | affiche seulement les chiffres significatifs hormis les zéros non-significatifs. |
0 | affiche des zéros non-significatifs. |
? | ajoute des espaces pour des zéros non-significatifs de chaque côté du point décimal afin que les points décimaux s'alignent sur une police de point fixe. Il est également possible d'utiliser ce symbole pour des fractions qui ont des nombres variés de chiffres. |
. | indique la position du point décimal à l'intérieur d'un nombre. |
, | affiche une virgule comme séparateur des milliers. |
% | affiche un nombre comme un pourcentage. |
E- e- |
affiche un nombre dans le format scientifique, en fait la notation exponentielle. |
E+ e+ |
place un signe moins pour des exposants négatifs et un signe plus pour les exposants positifs. |
Les codes cités ci-dessous, permettent de formater une date à partir de la méthode FormatIndex de l'objet IXTLRuntime.
Valeur = Objet_Runtime.formatDate(Index, _ Format_Date, Destination_Locale)
Code | Description |
---|---|
M | affiche les mois de 1 à 12. |
MM | affiche les mois de 01 à 12 |
MMM | affiche les mois de Jan à Dec. |
MMMM | affiche les mois de Janvier à Décembre. |
MMMMM | affiche les mois comme la première lettre des mois. |
d | affiche les jours de 1 à 31 |
dd | affiche les jours de 01 à 31 |
ddd | affiche les jours de Dim à Sam |
dddd | affiche les jours de Dimanche à Samedi |
yy | affiche l'année de 00 à 99 |
yyyy | affiche l'année de 1900 à 9999 |
Les codes cités ci-dessous, permettent de formater une valeur horaire à partir de la méthode FormatTime de l'objet IXTLRuntime.
Valeur = Objet_Runtime.formatTime(Valeur_Temps, _ Format_Temps, Destination_Locale)
Code | Description |
---|---|
h | représente les heures sous le format 0 à 23 |
hh | représente les heures sous le format 00 à 23 |
m | représente les minutes sous le format 0 à 59 |
mm | représente les minutes sous le format 00 à 59 |
s | représente les secondes sous le format 0 à 59 |
ss | représente les minutes sous le format 00 à 59 |
AM/PM | insère un AM ou un PM pour un affichage sur douze heures. |
am/pm | insère un am ou un pm pour un affichage sur douze heures. |
A/P | insère un a ou un p pour un affichage sur douze heures. |
a | insère un a ou un p pour un affichage sur douze heures. |
[h]:mm | permet de laisser le temps s'écouler au-delà de la limite des 23 heures (25:15). |
[mm]:ss | permet de laisser le temps s'écouler au-delà de la limite des 59 minutes (68:15). |
[ss] | permet de laisser le temps s'écouler au-delà de la limite des 59 secondes (62). |
ss.00 | affiche une fraction de secondes. |
Erreur |
---|
Description |
MSG_E_FORMATINDEX_BADINDEX |
La valeur passée dans formatIndex a besoin d'être plus grand que zero. |
MSG_E_FORMATINDEX_BADFORMAT |
Le format de la chaîne de caractères et invalide. |
MSG_E_SYSTEM_ERROR |
Erreur système : %1. |
MSG_E_MISSINGEQUALS |
Le signe égal (=) est manquant entre l'attribut et sa valeur. |
MSG_E_EXPECTED_TOKEN |
Le symbole %1 est attendu, trouvé %2. |
MSG_E_UNEXPECTED_TOKEN |
Le symbole %1 n'est pas attendu. |
MSG_E_MISSINGQUOTE |
Un litéral chaîne de caractères a été attendu, mais n'est pas ouvert par un guillemet. |
MSG_E_COMMENTSYNTAX |
Une syntaxe incorrecte a été utilisée dans un commentaire. |
MSG_E_BADSTARTNAMECHAR |
Un nom a été commencé avec un caractère invalide. |
MSG_E_BADNAMECHAR |
Un nom contient un caractère invalide. |
MSG_E_BADCHARINSTRING |
Le caractère < ne peut être utilisé dans une valeur d'attribut. |
MSG_E_XMLDECLSYNTAX |
La syntaxe est invalide pour une déclaration XML. |
MSG_E_BADCHARDATA |
Un caractère invalide a été trouvé dans le contenu textuel. |
MSG_E_MISSINGWHITESPACE |
Un espace blanc requis est manquant. |
MSG_E_EXPECTINGTAGEND |
Le caractère > était attendu. |
MSG_E_BADCHARINDTD |
Un caractère invalide a été trouvé dans le DTD. |
MSG_E_BADCHARINDECL |
Un caractère invalide a été trouvé à l'intérieur d'une déclaration de DTD. |
MSG_E_MISSINGSEMICOLON |
Un caractère point-virgule était attendu. |
MSG_E_BADCHARINENTREF |
Un caractère invalide a été trouvé à l'intérieur d'une référence d'entité. |
MSG_E_UNBALANCEDPAREN |
Les paranthèses sont anormales. |
MSG_E_EXPECTINGOPENBRACKET |
Un caractère d'ouverture ([) était attendu. |
MSG_E_BADENDCONDSECT |
La syntaxe est invalide dans une section conditionnelle. |
MSG_E_INTERNALERROR |
Une erreur interne est survenu. |
MSG_E_UNEXPECTED_WHITESPACE |
Un espace blanc n'est pas permis à cet endroit. |
MSG_E_INCOMPLETE_ENCODING |
La fin de fichier (EOF) a été atteinte dans un état invalide pour l'encodage courant. |
MSG_E_BADCHARINMIXEDMODEL |
Le modèle de contenu mixte ne peut contenir ce caractère. |
MSG_E_MISSING_STAR |
Le modèle de contenu mixte doit être défini comme un zero ou plus ("*"). |
MSG_E_BADCHARINMODEL |
Un caractère invalide a été trouvé dans le modèle de contenu. |
MSG_E_MISSING_PAREN |
Un paranthèse est manquante. |
MSG_E_BADCHARINENUMERATION |
Un caractère invalide a été trouvé dans l'énumération ATTLIST. |
MSG_E_PIDECLSYNTAX |
La syntaxe est invalide dans une décalration d'instruction de traitement. |
MSG_E_EXPECTINGCLOSEQUOTE |
Un simple (') ou un double guillemet (") de fermeture est manquant. |
MSG_E_MULTIPLE_COLONS |
De multiples doubles-points ne sont pas permis dans un nom. |
MSG_E_INVALID_DECIMAL |
Un caractère invalide a été trouvé pour un chiffre décimal. |
MSG_E_INVALID_HEXADECIMAL |
Un caractère invalide a été trouvé pour un chiffre hexadécimal. |
MSG_E_INVALID_UNICODE |
Une valeur de caractère Unicode invalide a été trouvée pour cette plateforme. |
MSG_E_WHITESPACEORQUESTIONMARK |
Un espace blanc ou un point d'interrogation (?)est attendu. |
MSG_E_SUSPENDED |
L'analyseur est suspendu. |
MSG_E_STOPPED |
L'analyseur est stoppé. |
MSG_E_UNEXPECTEDENDTAG |
La fin d'une balise a été attendue à cet endroit. |
MSG_E_UNCLOSEDTAG |
Les balises suivantes n'étaient pas fermées : %1. |
MSG_E_DUPLICATEATTRIBUTE |
Un attribut est double. |
MSG_E_MULTIPLEROOTS |
Un seul élément racine est permis dans un document XML. |
MSG_E_INVALIDATROOTLEVEL |
La racine du document est invalide. |
MSG_E_BADXMLDECL |
La déclaration XML est invalide. |
MSG_E_MISSINGROOT |
Le document XML doit avoir un élément racine. |
MSG_E_UNEXPECTEDEOF |
La fin de fichier (EOF) n'est pas attenue. |
MSG_E_BADPEREFINSUBSET |
Les entités paramètres ne peuvent être utilisées à l'intérieur de déclarations de marquage dans un sous ensemble interne. |
MSG_E_PE_NESTING |
Le texte de remplacement pour une entité paramètre doit être convenablement encadrées par des paranthèses. |
MSG_E_INVALID_CDATACLOSINGTAG |
La chaîne de caractères ]]> n'est pas permisedans le contenu d'un élément. |
MSG_E_UNCLOSEDPI |
L'instruction de traitement n'a pas été fermée. |
MSG_E_UNCLOSEDSTARTTAG |
L'élément n'était pas fermé. |
MSG_E_UNCLOSEDENDTAG |
Le caractère de fin (>) d'un élément était manquant. |
MSG_E_UNCLOSEDSTRING |
Un littéral chaine de caractères n'était pas fermé. |
MSG_E_UNCLOSEDCOMMENT |
Un commentaire n'était pas fermé. |
MSG_E_UNCLOSEDDECL |
Une déclaration n'était pas fermée. |
MSG_E_UNCLOSEDMARKUPDECL |
Une déclaration de marquage n'était pas fermée. |
MSG_E_UNCLOSEDCDATA |
Une section CDATA n'était pas fermée. |
MSG_E_BADDECLNAME |
La déclaration a un nom invalide. |
MSG_E_BADEXTERNALID |
L'identificateur ID externe est invalide. |
MSG_E_BADELEMENTINDTD |
Un élément XML n'est pas permisà l'intéérieur d'une DTD. |
MSG_E_RESERVEDNAMESPACE |
Le préfixe d'espace de noms xml et ses variantes de casse n'est pas permis. |
MSG_E_EXPECTING_VERSION |
L'attribut version est requis à cet endroit. |
MSG_E_EXPECTING_ENCODING |
L'attribut encoding est requis à cet endroit. |
MSG_E_EXPECTING_NAME |
Au moins un nom est requis à cet endroit. |
MSG_E_UNEXPECTED_ATTRIBUTE |
L'attribut specified n'était pas attendu à cet endroit. L'attribut est sensible à la casse. |
MSG_E_ENDTAGMISMATCH |
La fin de balise %2 ne correspond pas à la balise de début %1. |
MSG_E_INVALIDENCODING |
Le système ne supporte pas l'encodage spécifié. |
MSG_E_INVALIDSWITCH |
Le changement de l'encodage courant n'est pas supporté. |
MSG_E_EXPECTING_NDATA |
Le mot-clé NDATA est manquant. |
MSG_E_INVALID_MODEL |
Le modèle de contenu est invalide. |
MSG_E_INVALID_TYPE |
Le type défini dans ATTLIST est invalide. |
MSG_E_INVALIDXMLSPACE |
L'attribut XML space a une valeur invalide. Il doit indiquer default ou preserve. |
MSG_E_MULTI_ATTR_VALUE |
De multiples noms ont été trouvés dans la valeur d'attribut alors qu'un seul était attendu. |
MSG_E_INVALID_PRESENCE |
La déclaration ATTDEF est invalide. Il est attendu #REQUIRED, #IMPLIED, ou #FIXED. |
MSG_E_BADXMLCASE |
Le nom XML est réservé est doit être en cass minuscule. |
MSG_E_CONDSECTINSUBSET |
Les sections conditionnelles ne sont pas permises dans un sous ensemble interne. |
MSG_E_CDATAINVALID |
La section CDATA n'est pas permise dans un DTD. |
MSG_E_INVALID_STANDALONE |
L'attribut standalone doit avoir la valeur yes ou no. |
MSG_E_UNEXPECTED_STANDALONE |
L'attribut standalone ne peut être utilisé dans des entités externes. |
MSG_E_DOCTYPE_IN_DTD |
Un DTD ne peut avoir une déclaration DOCTYPE. |
MSG_E_MISSING_ENTITY |
L'entité à laquelle il est fait référence est indéfinie. |
MSG_E_ENTITYREF_INNAME |
La référence d'entité est résolue à un caractère de nom invalide. |
MSG_E_DOCTYPE_OUTSIDE_PROLOG |
Il ne peut y avoir de déclaration DOCTYPE en dehors d'un prologue. |
MSG_E_INVALID_VERSION |
Le numéro de version est invalide. |
MSG_E_DTDELEMENT_OUTSIDE_DTD |
Il ne peut y avoir de déclaration de DTD en dehors d'un DTD. |
MSG_E_DUPLICATEDOCTYPE |
Il ne peut y avoir de multiples déclarations DOCTYPE. |
MSG_E_RESOURCE |
Un erreur de traitement de ressource %1 est survenue. |
XML_IOERROR |
Une erreur d'ouverture d'un fichier d'entrée %1 est survenue. |
XML_ENTITY_UNDEFINED |
Une référence a une entité indéfinie est survenue %1. |
XML_INFINITE_ENTITY_LOOP |
L'entité %1 contient une boucle sur une référence d'entité infinie. |
XML_NDATA_INVALID_PE |
Il ne peut y avoir le mot clé NDATA dans une déclaration d'entité paramètre. |
XML_REQUIRED_NDATA |
Il n'est pas possible d'utiliser une entité générale analysée %1 comme la valeur pour l'attribut %2. |
XML_NDATA_INVALID_REF |
Il n'est pas possible d'utiliser une entité générale non-analysée dans une référence d'entité. |
XML_EXTENT_IN_ATTR |
Il n'est pas possible de se référer à une entité générale analysée dans une valeur d'attribut. |
XML_STOPPED_BY_USER |
L'analyseur XML a été arrêté par l'utilisateur. |
XML_PARSING_ENTITY |
Une erreur s'est produite au moment de l'analyse d'entité %1. %2. |
XML_E_MISSING_PE_ENTITY |
L'entité paramètre doit être définie avant son utilisation. |
XML_E_MIXEDCONTENT_DUP_NAME |
Le même nom doit apparaître plus d'une fois dans une unique déclaration de contenu mixte %1. |
XML_NAME_COLON |
Une entité, une référence d'entité, une instruction de traîtement, les noms de notation ou les valeurs NMToken ne peut contenir un double-point (:). |
XML_ELEMENT_UNDECLARED |
L'élément %1 est utilisé alors qu'il n'a pas été déclaré dans un DTD ou un schéma. |
XML_ELEMENT_ID_NOT_FOUND |
L'attribut %1 se référe à l'identificateur ID %2, lequel n'est pas défini 'nimporte où dans le document. |
XML_DEFAULT_ATTRIBUTE |
Une erreur dans la valeur d'attribut par défaut définie dans le DTD ou le schéma est survenue. |
XML_XMLNS_RESERVED |
L'espace de noms réservé %1 ne peut être redéclaré. |
XML_EMPTY_NOT_ALLOWED |
L'élément ne peut être vide en accord avec le DTD ou le schéma. |
XML_ELEMENT_NOT_COMPLETE |
Le contenu de l'élément est incomplet en accord avec le DTD ou le schéma. |
XML_ROOT_NAME_MISMATCH |
Le nom de l'élément racine doit correspondre au nom de la déclaration DOCTYPE. |
XML_INVALID_CONTENT |
Le contenu de l'élément est invalide en accord avec le DTD ou le schéma. |
XML_ATTRIBUTE_NOT_DEFINED |
L'attribut %1 de cet élément n'est pas défini dans le DTD ou le schéma. |
XML_ATTRIBUTE_FIXED |
L'attribut %1 a une valeur qui ne correspond pas à la valeur fixée définie dans le DTD ou le schéma. |
XML_ATTRIBUTE_VALUE |
L'attribut %1 a une valeur invalide en accord avec le DTD ou le schéma. |
XML_ILLEGAL_TEXT |
Le texte n'est pas permis dans cet élément en accord avec le DTD ou le schéma. |
XML_MULTI_FIXED_VALUES |
Une déclaration d'attribut ne peut contenir de multiples valeurs fixées %1. |
XML_NOTATION_DEFINED |
La notation %1 est déjà déclarée. |
XML_ELEMENT_DEFINED |
L'élément %1 est déjà déclaré. |
XML_ELEMENT_UNDEFINED |
Un référence à un élément non-déclaré est survenu %1. |
XML_XMLNS_UNDEFINED |
RUne référence à un préfixe d'espace de noms est survenu %1. |
XML_XMLNS_FIXED |
L'attribut %1 doit être un attribut #FIXED. |
XML_E_UNKNOWNERROR |
Une erreur inconnue s'est produite %1. |
XML_REQUIRED_ATTRIBUTE_MISSING |
L'attribut requis %1 est manquant. |
XML_MISSING_NOTATION |
La déclaration %1 contient une référence à une notation indéfinie %2. |
XML_ATTLIST_DUPLICATED_ID |
Il n'est pas possible de définir de multiples attributs ID sur le même élément. |
XML_ATTLIST_ID_PRESENCE |
Un attribut de type ID doit avoir par défaut déclaré un #IMPLIED ou #REQUIRED. |
XML_XMLLANG_INVALIDID |
Le langage ID %1 est invalide. |
XML_PUBLICID_INVALID |
L'ID public %1 est invalide. |
XML_DTD_EXPECTING |
Attendu %1. |
XML_NAMESPACE_URI_EMPTY |
Seulement un espace de noms par défaut peut avoir un URI vide. |
XML_LOAD_EXTERNALENTITY |
Il ne peut charger une entité externe %1. |
XML_BAD_ENCODING |
Il est incapable de sauvegarder le caractère vers l'encodage. |
SCHEMA_ATTRIBUTEVALUE_NOSUPPORT |
Un espace de noms non-supporté a été trouvé à cet endroit. |
SCHEMA_SCHEMAROOT_EXPECTED |
Un définition incorrecte pour l'élément racine a été trouvée dans le schéma. |
SCHEMA_ELEMENT_NOSUPPORT |
L'élément %1 n'est pas autorisé dans ce contexte. |
SCHEMA_ETNAME_MISSING |
Une déclaration ElementType doit contenir un attribut name. |
SCHEMA_ETYPE_MISSING |
Une déclaration d'élément doit contenir un attribut type. |
SCHEMA_ETORDER_UNKNOWN |
Le schéma supporte seulement les types d'ordre seq, one, et many. |
SCHEMA_ELEMENTDT_NOSUPPORT |
Le contenu doit être textOnly en utilisant des types de données sur un ElementType. |
SCHEMA_ETORDER_DISABLED |
L'ordre doit être many lorsque le contenu est mixed. |
SCHEMA_ETCONTENT_UNKNOWN |
Le contenu doit être de type empty, eltOnly, textOnly, ou mixed. |
SCHEMA_ETMODEL_UNKNOWN |
La valeur du modèle doit être soit open ou closed. |
SCHEMA_ELEMENT_DISABLED |
Il ne peut contenir d'éléments enfants car le contenu est fixé à textOnly. |
SCHEMA_ELEMENT_MISSING |
Il doit fournir au moins un élément dans un groupe. |
SCHEMA_ATTRIBUTE_NOTSUPPORT |
L'attribut %1 sur un %2 n'est pas supporté. |
SCHEMA_ATNAME_MISSING |
La déclaration AttributeType doit dontenir un attribut name. |
SCHEMA_ATNAME_DUPLICATED |
La déclaration d'attribut est double. |
SCHEMA_ATREQUIRED_INVALID |
La valeur pour l'attribut required est invalide. |
SCHEMA_DTTYPE_UNKNOWN |
Le type de donnée de l'attribut est inconnu. |
SCHEMA_DTTYPE_DUPLICATED |
La déclaration du type de donnée est double. |
SCHEMA_ENUMERATION_MISSING |
Un élément avec un attribut values doit contenir un attribut type à la valeur enumeration. |
SCHEMA_DTVALUES_MISSING |
Il doit fournir un attribut values sur un élément qui contient un attribut type à la valeur enumeration. |
SCHEMA_ATYPE_MISSING |
La déclaration d'attribut doit contenir un attribut type. |
SCHEMA_ATYPE_UNDECLARED |
L'attribut spécifié doit être d'abord déclaré en utilisant une déclaration AttributeType. |
SCHEMA_GROUP_DISABLED |
Un group n'est pas autorisé à l'intérieur d'un ElementType qui a un modèle de contenu textOnly. |
SCHEMA_GMATTRIBUTE_NOTSUPPORT |
L'attribut %1 sur un groupe n'est pas supporté. |
SCHEMA_DTVALUES_VALUES_MISSING |
Les valeurs pour les types d'énumération sont manquantes. |
SCHEMA_ATTRIBUTE_DEFAULTVALUE |
La valeur par défaut %1 est invalide. |
SCHEMA_DTTYPE_DISABLED |
Le type de données n'est pas permis lorsque le modèle de contenu n'est pas en textOnly. |
SCHEMA_ELEMENT_EMPTY |
L'élément enfant n'est pas autorisé lorsque le modèle de contenu est empty. |
SCHEMA_ELEMENT_DATATYPE |
L'élément enfant n'est pas autorisé lorsque le type de données est fixé. |
SCHEMA_DTTYPE_MISSING |
Le type est manquant sur l'élément datatype. |
SCHEMA_MINOCCURS_INVALIDVALUE |
La valeur de l'attribut minOccurs doit être 0 ou 1. |
SCHEMA_MAXOCCURS_INVALIDVALUE |
La valeur de l'attribut maxOccurs doit être 1 ou *. |
SCHEMA_MAXOCCURS_MUSTBESTAR |
La valeur de l'attribut maxOccurs doit être * lorsque l'attribut order est fixé à many. |
SCHEMA_ELEMENTDT_EMPTY |
La valeur de l'attribut datatype ne peut être vide. |
SCHEMA_DOCTYPE_INVALID |
Le DOCTYPE n'est pas permis dans un schéma. |
Les types d'erreur | |
---|---|
DOM | XSL |
XQL | MIME |
Erreur |
---|
Description |
![]() |
XMLOM_DUPLICATE_ID |
L'ID %1 est double. |
XMLOM_DATATYPE_PARSE_ERROR |
Une erreur d'analyseur %1 comme le type de données %2 s'est produite. |
XMLOM_NAMESPACE_CONFLICT |
Il y a un conflit d'espace de noms pour l'espace de noms %1. |
XMLOM_OBJECT_EXPAND_NOTIMPL |
Il est incapable de développer un attribut avec la valeur object. |
XMLOM_DTDT_DUP |
Il n'est pas possible d'avoir deux attributs datatype dans un élément. |
XMLOM_INSERTPOS_NOTFOUND |
Le noeud de position inséré n'est pas trouvé. |
XMLOM_NODE_NOTFOUND |
Le noeud n'est pas trouvé. |
XMLOM_INVALIDTYPE |
Cette opération ne peut être exécutée avec un noeud de type %1. |
XMLOM_INVALID_XMLDECL_ATTR |
%1 n'est pas un attribut valide sur la déclaration XML, seuls les attributs version, encoding, ou standalone sont autorisés. |
XMLOM_INVALID_INSERT_PARENT |
L'insertion d'un noeud ou de son ancêtre sous lui-même n'est pas autorisée. |
XMLOM_INVALID_INSERT_POS |
Le noeud de position inséré doit être un enfant du noeud à insérer en-dessous. |
XMLOM_NO_ATTRIBUTES |
Les attributs ne sont pas permis sur les noeuds de type %1. |
XMLOM_NOTCHILD |
Le noeud paramètre n'est pas un enfant de ce noeud. |
XMLOM_CREATENODE_NEEDNAME |
createNode requiert un nom pour nodeType donné. |
XMLOM_UNEXPECTED_NS |
Le paramètre d'espace de noms est inattendu. |
XMLOM_MISSING_PARAM |
Le paramètre requis est manquant ou nulle ou bien vide. |
XMLOM_INVALID_NAMESPACENODE |
Un noeud d'espace de noms est invalide. |
XMLOM_READONLY |
Une tentative de modification a été effectuée sur un noeud en lecture seule. |
XMLOM_ACCESSDENIED |
L'accès est refusé. |
XMLOM_ATTRMOVE |
Les attributs doivent être enlevés avant leur ajout à un noeud différent. |
XMLOM_BADVALUE |
Les données sont invalides pour un type de noeud %1. |
XMLOM_USERABORT |
l'opération a été annulée par un demandeur. |
XMLOM_NEXTNODEABORT |
Il est incapable de récupérer la position de l'itérateur de la liste de noeud. |
XMLOM_INVALID_INDEX |
L'index doit être zero ou un nombre positif qui n'est pas plus grand que le nombre de caractères dans les données. |
XMLOM_INVALID_ATTR |
Le noeud fourni n'est pas un attribut spécifié sur ce noeud. |
XMLOM_INVALID_ONDOCTYPE |
Cette opération ne peut être exécutée sur un noeud DOCTYPE. |
XMLOM_INVALID_MODEL |
Il n'est pas possible de mélanger des modèles différents de threading dans le document. |
XMLOM_INVALID_DATATYPE |
Le type de donnée %1 n'est pas supporté. |
![]() |
XSL_PROCESSOR_STACKOVERFLOW |
La pile du processeur XSLT a provoqué un dépassement de mémoire probablement provoqué par un modèle récursif infini. |
XSL_PROCESSOR_UNEXPECTEDKEYWORD |
Le mot clé %1 ne peut être utilisé ici. |
XSL_PROCESSOR_BADROOTELEMENT |
L'élément racine de la feuille de style XSLT doit être <xsl:document> ou <xsl:template>. |
XSL_PROCESSOR_KEYWORDMAYNOTFOLLOW |
Le mot clé %1 ne peut pas suivre %2. |
XSL_PROCESSOR_INVALIDSCRIPTENGINE |
%1 n'est pas en langage de script. |
XSL_PROCESSOR_SCRIPTERROR_LINE |
Une ereur de script s'est produite à la ligne = %1, et la colonne = %2. |
XSL_PROCESSOR_METHODERROR |
Une erreur a été retournée à partir d'un appel de méthode ou de propriété. |
XSL_KEYWORD_MAYNOTCONTAIN |
Le mot clé %1 peut ne pas contenur %2. |
![]() |
XQL_EXPR_NOT_DOM_NODE |
L'expression ne retourne pas un noeud DOM (DOMNode). |
XQL_EXPR_NOT_QUERY_OR_INTEGER |
L'expression doit être une requête ou une constante de nombre entier. |
XQL_INCOMPLETE_QUERY |
L'expression de requête est incomplète. |
XQL_UNKNOWN_METHOD |
La méthode est inconnue. |
XQL_UNEXPECTED_CHAR |
Un caractère inattendu a été trouvé dans la requête. |
XQL_QUERY_INVALID_HERE |
%1 peut ne pas apparaître à la droite de / ou // ou bien être utilisé avec |. |
XQL_EXPR_NOT_STRING |
Expression must be a string constant. |
XQL_METHOD_NOT_SUPPORTED |
L'objet ne supporte pas cette méthode. |
XQL_INVALID_CAST |
L'expression ne peut être lancé avec ce type de donnée. |
XMLISLANDS_NOSCRIPTLETS |
Le moteur de script XML ne supporte pas les fragments de script. Cette erreur a été probablement provoqué en ayant une balise de script avec l'attribut de langue fixé à "XML" ou l'attribut de texte fixé à "text/xml" avant une autre balise de script sur la page. |
XQL_EXPR_NOT_QUERY_OR_STRING |
Le paramètre doit être une requête ou une constante de chaîne de caractères. |
XQL_EXPR_NOT_INTEGER |
Le paramètre doit être une constante en nombre entier. |
![]() |
XMLMIME_ERROR |
La page XML ne peut être affichée. Il est impossible de voir l'entrée XML en utilisat la feuille de style. |
XMLMIME_LINEPOS |
Ligne %1, Position %2 |
XMLMIME_SOURCENA |
Le fichier source XML est indisponible pour l'affichage. |
Les ilôts de données dans un page HTML permettent d'importer des informations XML à l'intérieur d'un balisage spécifique.
L'insertion d'un ilôt de données s'effectue par l'intermédiaire d'une balise <XML>.
<xml id="Identificateur">...</xml>
Le balisage précité peut soit contenir un arborescence XML valide, soit comprendre un attribut src pointant vers une page XML.
<xml id="Identificateur" src="Adresse"></xml>
Il est également possible d'intégrer des ilôts de données XML par l'intermédaire des balises <script> avec des valeurs d'attributs particulières.
<script type="text/xml" id="Identificateur"> Données XML... </script> <script language="xml" id="Identificateur"> Données XML... </script>
L'extraction des données s'accomplit en utilisant plusieurs attributs particuliers associés à certaines balises HTML standards capables de recevoir des informations textuelles, tels que <table> comme conteneur, <div>, <input> ou encore <span> pour afficher les informations XML.
<balise_Conteneur datasrc="#Identificateur_XML"> <balise datafld="Nom_Elément_XML"></balise> </balise_Conteneur> <table datasrc="#Identificateur"> <tr> <td> <input type="text" datafld="Nom_Elément"></input> </td> </tr> </table>
L'attribut DATAFLD accepte les niveaux hiérarchiques afin de localiser distinctement les éléments à afficher par rapport à leurs ancêtres dans l'arborescence de l'ilôt de données XML. Les éléments parent et enfant sont combinés au sein de l'attribut DATAFLD par l'intermédiaire d'un point
Les Instructions<Elément_Racine> <Sous_Elément> <Enfant>...</Enfant> </Sous_Elément> </Elément_Racine> <table datasrc="#Identificateur"> <tr> <td> <table datasrc="#Identificateur" datafld="Sous_Elément"> <tr> <td> <input type="text" datafld="Sous_Elément.Nom_Enfant"> </input> </td> </tr> </table> </td> </tr> </table>
Instruction |
---|
Description |
<xml...>...</xml> |
intègre un ilôt de données XML dans une page HTML. |
datasrc="Source_XML" |
insère le contenu du fichier XML pointé. |
datafld="Champ_XML" |
insère le contenu d'un élément XML. |
id="Identificateur" |
identifie de façon unique l'ilôt de données XML. |
<html> <head> <title>Démonstration des ilôts de données</title> </head> <body> <XML id="ilot_logitheque"> <logiciels> <categorie nom="XML et XSL"> <logiciel code=""> <nom>Cooktop 2.200</nom> <commentaire> Un éditeur XML, XSLT, XPath et DTD puissant et totalement gratuit. </commentaire> <editeur lien="http://xmleverywhere.com/cooktop/"> XML Everywhere </editeur> <langue>EN</langue> <plateforme>Win</plateforme> <prix monnaie="$US">00.00</prix> </logiciel> <logiciel code=""> <nom>XML Spy 3.5</nom> <commentaire> La version 4 bientôt disponible. </commentaire> <editeur lien="http://www.xmlspy.com/default.html"> Altova Inc. </editeur> <langue>EN</langue> <plateforme>Win</plateforme> <prix monnaie="$US">199,00</prix> </logiciel> <logiciel code=""> <nom>XMLwriter v1.21</nom> <commentaire> Permet de créer des documents XML. </commentaire> <editeur lien="http://xmlwriter.net/"> Wattle Software </editeur> <langue>EN</langue> <plateforme>Win</plateforme> <prix monnaie="$US">75,00</prix> </logiciel> <logiciel code=""> <nom>XML Procedure Editor 1.0</nom> <commentaire> Permet d'établir et de gérer vos procédures sous la forme de documents XML. </commentaire> <editeur lien="http://www.freva.com/XMLPEFR/"> Freva </editeur> <langue>FR</langue> <plateforme>Win</plateforme> <prix monnaie="Euro">129,00</prix> </logiciel> <logiciel code=""> <nom>XMetaL 2.1</nom> <commentaire> Logiciel puissant et flexible pour la création de documents XML. </commentaire> <editeur lien="http://www.softquad.com/top_frame.sq"> SoftQuad, Inc. </editeur> <langue>EN</langue> <plateforme>Win</plateforme> <prix monnaie="$US">495,00</prix> </logiciel> <logiciel code=""> <nom>Turbo XML v2.2</nom> <commentaire> Solution professionnelle de développement de documents XML. </commentaire> <editeur lien="http://216.122.205.184/solutions/turbo_xml/"> Extensibility, Inc </editeur> <langue>EN</langue> <plateforme>Win/Linux/ Unix/Mac</plateforme> <prix monnaie="$US">269,95</prix> </logiciel> <logiciel code=""> <nom>XML Directive</nom> <commentaire> Permet de diriger et d'organiser la gestion du cycle de vie d'actifs XML partout dans l'entreprise. </commentaire> <editeur lien="http://216.122.205.184/solutions/xml_directive/"> Extensibility, Inc </editeur> <langue>EN</langue> <plateforme>Win/Linux/Unix</plateforme> <prix monnaie="$US">9 600,00</prix> </logiciel> <logiciel code=""> <nom>UpCast v2.2.0 Single</nom> <commentaire> Permet de convertir des documents RTF en documents XML. </commentaire> <editeur lien="http://www.infinity-loop.de/en/prod_ucSingleOV.html"> Infinity-loop </editeur> <langue>EN</langue> <plateforme>Win/Linux/ Unix/Mac</plateforme> <prix monnaie="$US">99,00</prix> </logiciel> <logiciel code=""> <nom>XSLies 0.56</nom> <commentaire> Permet de créer des diaporamas sur le Web à partir du langage XSL ou XSLT. </commentaire> <editeur lien="http://lempinen.net/sami/xslies/index.html"> Sami Lempinen </editeur> <langue>EN</langue> <plateforme>Linux</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>DB/XML Vision 1.3</nom> <commentaire> Outil universel qui offre la puissance de la technologie de Query-in-and-structured-XML-out. </commentaire> <editeur lien="http://www.datamirror.com/products/dbxmlvision/default.asp"> DataMirror Corp. </editeur> <langue>EN</langue> <plateforme>Win/Linux</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>DB/XML Transform 2.0</nom> <commentaire> Fournit un moteur puissant pour la transformation de données bidirectionnelles entre XML, la base de données et des formats de texte. </commentaire> <editeur lien="http://www.datamirror.com/products/ dbxmltransform/default.asp"> DataMirror Corp. </editeur> <langue>EN</langue> <plateforme>Win/Linux</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>xPower Transform 1.0</nom> <commentaire> Fournit un moteur pour la configuration d'objet et la transformation de données et la conversion. </commentaire> <editeur lien="http://www.bdisystems.com/xtrans.html"> BDI Systems </editeur> <langue>EN</langue> <plateforme>Win/Linux</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>ScriptMaker 1.6</nom> <commentaire> Un outil pour écrire des scénarios à partir de documents XML. </commentaire> <editeur lien="http://web.ukonline.co.uk/ianto/"> Ian Pegler </editeur> <langue>EN</langue> <plateforme>Win</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>Xalan 1.1</nom> <commentaire> Un processeur XSL exécutant les recommandations du W3C en ce qui concerne XSLT et XPath. </commentaire> <editeur lien="http://xml.apache.org/xalan-c/index.html"> Apache Soft. Found. </editeur> <langue>EN</langue> <plateforme>Win/Linux/unix</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>Xerces 1.5.0</nom> <commentaire> Un analyseur syntaxique XML suivant les recommandations et les standars du W3C (DOM 1.0, DOM 2.0. SAXO 1.0, SAXO 2.0, Namespaces). </commentaire> <editeur lien="http://xml.apache.org/xerces-c/index.html"> Apache Soft. Found. </editeur> <langue>EN</langue> <plateforme>Win/Linux/Unix</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>Sabblotron 0.60</nom> <commentaire> Un processeur XSL rapide est compact supportant les recommandations du W3C. </commentaire> <editeur lien="http://www.gingerall.com/charlie-bin/ get/webGA/act/sablotron.act"> Ginger Alliance </editeur> <langue>EN</langue> <plateforme>Win/Linux/Unix</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>iXSLT Developer's Edition</nom> <commentaire> Un processeur XSLT conforme aux recommandations du W3C permettant de transformer des données XML. </commentaire> <editeur lien="http://www.infoteria.com/products/ product_page.jsp?id=/product/product_1.xml"> Infoteria </editeur> <langue>EN</langue> <plateforme>Win/Unix</plateforme> <prix monnaie="$US">150,00</prix> </logiciel> <logiciel code=""> <nom>iXSLT 10 Users Licences</nom> <commentaire> Un processeur XSLT conforme aux recommandations du W3C permettant de transformer des données XML. </commentaire> <editeur lien="http://www.infoteria.com/products/ product_page.jsp?id=/product/product_1.xml"> Infoteria </editeur> <langue>EN</langue> <plateforme>Win/Unix</plateforme> <prix monnaie="$US">600,00</prix> </logiciel> <logiciel code=""> <nom>Lotus XSL 2.0</nom> <commentaire> Un processeur XSLT conforme aux recommandations du W3C permettant de transformer des données XML. </commentaire> <editeur lien="http://www.alphaworks.ibm.com/formula/LotusXSL"> IBM </editeur> <langue>EN</langue> <plateforme>Win/Linux/ Unix/Mac</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>XT Version 19991105</nom> <commentaire> Un processeur XSL écrit entièrement en Java. </commentaire> <editeur lien="http://www.jclark.com/xml/xt.html"> James Clark </editeur> <langue>EN</langue> <plateforme>Win/Linux/ Unix/Mac</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> <logiciel code=""> <nom>XML::XSLT v0.30</nom> <commentaire> Un processeur XSL écrit entièrement en Perl. </commentaire> <editeur lien="http://xmlxslt.sourceforge.net/"> Geert Josten </editeur> <langue>EN</langue> <plateforme>Win/Linux/Unix</plateforme> <prix monnaie="$US">00,00</prix> </logiciel> </categorie> <categorie nom="Base de données"> <logiciel code="13414439"> <nom>Borland Kylix Developpement Serveur</nom> <commentaire> Accélérez vos developpement Web sous Linux ! </commentaire> <editeur lien="http://www.borland.com/"> Borland </editeur> <langue>US</langue> <plateforme>Win/Linux</plateforme> <prix monnaie="FRF">14 269,00</prix> </logiciel> <logiciel code="11406670"> <nom>ColdFusion Studio 4.5</nom> <commentaire> + 2 ans maintenance Maintenance de 2 ans pour COLD FUSION. </commentaire> <editeur lien="http://www.allaire.com/products/"> Allaire </editeur> <langue>US</langue> <plateforme>Win</plateforme> <prix monnaie="FRF">5 700,00</prix> </logiciel> <logiciel code="09604363"> <nom>FileMaker Server 5.0</nom> <commentaire> Pour une gestion de base de données facile. </commentaire> <editeur lien="http://www.filemaker.fr/products/index.html"> File Maker Int. </editeur> <langue>FR</langue> <plateforme>Win/Mac</plateforme> <prix monnaie="FRF">8 370,80</prix> </logiciel> <logiciel code="13400960"> <nom>Site Server 3.0, 5 licences</nom> <commentaire> Ajout de 5 licences pour Site Server 3.0. </commentaire> <editeur lien="http://www.microsoft.com/france/msdn/ technologies/SiteServer/default.asp"> Microsoft </editeur> <langue>FR</langue> <plateforme>Win</plateforme> <prix monnaie="FRF">2 264,40</prix> </logiciel> <logiciel code="13400954"> <nom>Site Server Commerce Edition 3.0</nom> <commentaire> Pour démarcher les clients en ligne. </commentaire> <editeur lien="http://www.microsoft.com/france/msdn/ technologies/SiteServer/default.asp"> Microsoft </editeur> <langue>FR</langue> <plateforme>Win</plateforme> <prix monnaie="FRF">46 235,58</prix> </logiciel> <logiciel code="13401031"> <nom>Visual InterDev 6.0 Professionnel</nom> <commentaire> Développez vos applications web professionnelles. </commentaire> <editeur lien="http://www.microsoft.com/france/vinterdev/default.asp"> Microsoft </editeur> <langue>FR</langue> <plateforme>Win</plateforme> <prix monnaie="FRF">3 854,81</prix> </logiciel> </categorie> </logiciels> </XML> <table id="logitheque" datasrc="#ilot_logitheque" border="1"> <tr> <th colspan="3"><div datafld="nom"></div></th> </tr> <tr> <th width="60%">Nom</th> <th width="10%">Langue</th> <th width="30%">Plateforme</th> </tr> <tr> <td colspan="3"> <table datasrc="#ilot_logitheque" datafld="logiciel" border="1" width="100%"> <tr> <th width="60%"> <div datafld="nom"></div> </th> <td width="10%"> <div datafld="langue"></div> </td> <td width="30%"> <div datafld="plateforme"></div> </td> </tr> <tr> <td colspan="3"> <table datasrc="#ilot_logitheque" datafld="editeur" border="1" rules="rows"> <tr> <td><b>Lien : </b></td> <td><div datafld="lien"></div></td> </tr> </table> <div datafld="commentaire"></div> </td> </tr> </table> </td> </tr> </table> </body> </html> |
L'ilôt de données inséré dans un document HTML est représenté par un objet spécifique possédant ses propres propriétés, méthodes et événements.
<XML id="Identificateur_Ilot">...</XML> <script language="Javascript"> Objet_XML = Identificateur_Ilot Objet_XML.Propriété | Méthode | Evénement </script>
L'objet DHTML Document contient une méthode XMLDocument permettant de retourner un ilôt de données contenu dans le document HTML.
Objet_XML = document.XMLDocument;
A partir de la palette d'outils dédiée à l'objet Data Islands XML, il est possible de manipuler l'arborescence de l'ilôt de données XML.
Les éléments du DOM (Document Object Model) sont, pour la plupart, utilisables sur l'objet d'ilôt de données XML.
Les PropriétésPropriété |
---|
Description |
Objet_XML.Objet_XML.canHaveHTML = True | False |
fixe ou récupère la valeur indiquant si l'objet peut contenir un balisage HTML. |
Chaîne_de_caractères = Objet_XML.id |
récupère la chaîne de caractères identifiant (ID) l'objet. |
True | False = Objet_XML.isContentEditable |
récupère la valeur indiquant si l'utilisateur édite le contenu de l'objet. |
True | False = Objet_XML.isDisabled |
récupère la valeur indiquant si l'utilisateur peut interagir sur l'objet. |
True | False = Objet_XML.isMultiLine |
récupère la valeur indiquant si le contenu de l'objet contient une ou plusieurs lignes. |
Set Objet_Element = Objet_XML.parentElement |
récupère l'objet parent dans l'arborescence de l'objet XML. |
enumReadyState = Objet_XML.readyState |
récupère l'état courant de l'objet. |
Objet_XML.recordset = Objet_Recordset |
fixe ou retourne à partir d'un objet source de données une référence vers le jeu d'enregistrements par défaut. |
Nom = Objet_XML.scopeName |
retourne l'espace de noms défini pour l'élément. |
Objet_XML.src = Adresse |
fixe ou retourne une adresse URL permettant de charger l'objet. |
Objet_XML.tagUrn = URN |
fixe ou retourne l'URN (Uniform Resource Name) spécifié dans la déclaration d'espace de noms. |
Set Objet_DOMDocument = Objet_XML.XMLDocument |
retourne une référence vers le DOM XML (XML Document Object Model) affichée par l'objet. |
Méthode |
---|
Description |
Identifiant = Objet_XML.addBehavior(Adresse_URL) |
attribue un comportement à l'élément. |
Composant = Objet_XML.componentFromPoint(Coord_X, Coord_Y) |
retourne le composant localisé aux coordonnées spécifiées via certains événements. |
True | False = Objet_XML.fireEvent(Evénement[, Objet_Evénement]) |
lance un événement spécifié sur l'objet. |
Set Objet_Attribut = Objet_XML.getAttributeNode(Nom) |
retourne un objet attribut référencé par la propriété attribute.name. |
Set Objet_Recordset = Objet_XML.namedRecordset(Nom[, Chemin]) |
retourne l'objet recordset correspondant au membre de données nommé à partir d'un objet source de données (DSO). |
Objet_XML.normalize() |
fusionne les objets TextNodepour produire un modèle d'objet de document normalisé. |
Information = Objet_XML.parseError.Propriété |
retourne par l'intermédiaire de ses propriétés les information à propos de l'erreur en cours. |
Ref_Objet_Attribut = Objet_XML.removeAttributeNode(Objet_Attribut) |
enlève un objet attribute à partir de l'objet. |
True | False = Objet_XML.removeBehavior(ID) |
sépare un comportement de l'élément. |
Ref_Objet_Attribut = Objet_XML.setAttributeNode(Objet_Attribut) |
fixe un objet attribute comme une partie de l'objet. |
Evénement |
---|
Description |
ondataavailable |
est lancé périodiquement lorsque les données arrivent à partir des sources de données qui transmettent d'une façon asynchrone leurs données. |
ondatasetchanged |
est lancé lorsqe le jeu de données exposé par un objet source de données change. |
ondatasetcomplete |
est lancé pour indiquer que toutes les données sont disponibles à partir de l'objet source de données. |
onreadystatechange |
est lancé lorsque l'état de l'objet a changé. |
onrowenter |
est lancé pour indiquer que la ligne courante a été modifiée dans la source de onnées et les nouvelles valeurs de données sont disponibles sur l'objet. |
onrowexit |
est lancé juste avant le contrôle de source de données modifie la ligne courante dans l'objet. |
onrowsdelete |
est lancé lorsque les lignes ont été supprimées du jeu d'enregistrements. |
onrowsinserted |
est lancé juste après que de nouvelles lignes soient insérées dans le jeu d'enregistrements courant. |
Les événements sont utilisable de diverses manières.
<ELEMENT Evénement="Gestionnaire" ... > |
---|
Utilisable sur toutes les plateformes. |
Objet_XML.Evénement="Gestionnaire" |
Utilisable en JScript et Javascript. |
Objet.Evénement = GetRef("Gestionnaire") |
utilisable sous VBScript. |
<script for="objet" event="Evénemement">...</script> |
Utilisable uniquement sur Internet Explorer. |
<html> <head> <title>Affichage des caractéristiques d'une arborescence XML</title> </head> <body> <XML id="Donnee_XML" src="logitheque.xml"></XML> <a href="javascript:Analyse()">Lancer l'analyse du document</a> <SPAN id="Affichage"></SPAN> <script language="Javascript" type="text/javascript"> var Tab_TypeNoeud = new Array('ELEMENT', 'ATTRIBUT', 'TEXTE', 'CDATA SECTION', 'ENTITY REFERENCE', 'ENTITY', 'PROCESSING INSTRUCTION', 'COMMENT', 'DOCUMENT', 'DOCUMENT TYPE', 'DOCUMENT FRAGMENT', 'NOTATION'); function Analyse() { var tab1 = '<table border="1" cellpadding="3"' + 'cellspacing="3" width="60%">' + '<tr><th width="10%">Niveau</th>' + '<th width="45%">Nom du Noeud</th>' + '<th width="45%">Type du Noeud</th></tr><tr>' + '<th colspan="3">Valeur du Noeud</th></tr>'; var tab2 = '</table>'; var Info; var Fichier_XML = Donnee_XML; if (Fichier_XML.parseError.errorCode != 0) { Info = '<h3>Le fichier XML est invalide.</h3>'; Info += '<table><tr><td><b>Code d'erreur</b></td><td><b>: </b>' + Fichier_XML.parseError.errorCode + '</td></tr>'; Info += '<tr><td><b>Description</b></td><td><b>: </b>' + Fichier_XML.parseError.reason + '</td></tr>'; Info += '<tr><td><b>Fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.filepos + '</td></tr>'; Info += '<tr><td><b>Adresse du fichier</b></td><td><b>: </b>' + Fichier_XML.parseError.url + '</td></tr>'; Info += '<tr><td><b>Ligne responsable</b></td><td><b>: </b>' + Fichier_XML.parseError.srcText + '</td></tr>'; Info += '<tr><td><b>Numéro de Ligne</b></td><td><b>: </b>' + Fichier_XML.parseError.line + '</td></tr>'; Info += '<tr><td><b>Numéro de Colonne</b></td><td><b>: </b>' + Fichier_XML.parseError.linepos + '</td></tr></table>'; document.write(Info); return; } Affichage.innerHTML = tab1 + AffichageNoeudEnfant(Fichier_XML, 0) + tab2; } function AffichageNoeudEnfant(Noeud, Niveau) { var Resultat = ''; var Longueur = 0; var Num_Noeud = 0; var Liste_Attribut; var Num_Attribut; Resultat += '<tr><th>' + Niveau + '</th><td>' + Noeud.nodeName + '</td><td>' + Tab_TypeNoeud[Noeud.nodeType - 1] + '</td></tr>' + '<tr><td colspan="3">' + Noeud.nodeValue + '</td></tr>'; Liste_Attribut = Noeud.attributes; if (Liste_Attribut != null) { Longueur = Liste_Attribut.length; if (Longueur > 0) { for (Num_Attribut = 0; Num_Attribut < Longueur; Num_Attribut++) Resultat += '<tr><th>' + Niveau + '</th>' + '<td>' + Liste_Attribut(Num_Attribut).nodeName + '</td><td>' + Tab_TypeNoeud[Liste_Attribut(Num_Attribut).nodeType - 1] + '</td></tr><tr><td colspan="3">' + Liste_Attribut(Num_Attribut).nodeValue + '</td></tr>'; } } Longueur = Noeud.childNodes.length; if (Longueur > 0) for (Num_Noeud = 0; Num_Noeud < Longueur; Num_Noeud++) Resultat += AffichageNoeudEnfant(Noeud.childNodes(Num_Noeud), Niveau + 1); return Resultat; } </script> </body> </html> |
Les ilôts de données peuvent être manipulés à l'aide des éléments, propriétés et méthodes du modèle d'objet de document XML, voire même d'instructions ADO (ActiveX Data Objects).
Objet.Propriété | méthode
La propriété childNodes appliquée à l'objet Data Islands XML ou à l'un de ses noeuds éléments, retourne soit une liste de noeuds enfants, soit si un index est spécifié un noeud.
Collection_Noeuds = Objet.childNodes Objet_Noeud = Objet.childNodes(Index)
La propriété attributes dans les mêmes conditions que celles précitées, retourne soit une liste d'attributs, soit un noeud attribut.
Collection_Atributs = Objet.attributes Objet_Attribut = Objet.attributes(Index)
De même, les valeurs des différents noeuds composant l'arborescence de l'ilôt de donnés XML, sont toutes extractibles par l'intermédiaire de propriétés ou méthodes appropriées.
Valeur = Objet.nodeValue
Le type d'un noeud est déterminé par l'intermédiaire de la propriété nodeType.
Type = Objet.nodeType
Le parcours dans l'arborescence de l'ilôt de données XML s'accomplit par l'utilisation des méthodes de déplacement movePrevious, moveNext, moveFirst, moveLast, etc. du langage ADO (ActiveX Data Objects).
Objet.recordset.Méthode_Déplacement
Le modèle d'objet propose également des solutions de parcours dans les éléments XML.
Exemple [voir]Objet_XML.nodeFromID(Chaîne_ID) Objet_Noeud = Objet_Node.parentNode Objet_Noeud = Objet_Node.firstChild Objet_Noeud = Objet_Node.lastChild Objet_Noeud = Objet_Node.nextSibling Objet_Noeud = Objet_Node.previousSibling Objet_Noeud = Collection_Noeuds.item(Index) Objet_Noeud = Collection_Noeuds.nextNode()
<html> <head> <title>Parcours dans un jeu d'enregistrements</title> </head> <body> <XML id="logitheque" src="logitheque.xml"></XML> <table> <tr> <td> <input type="submit" value=" << " onclick="logitheque.recordset.MoveFirst()"> </input> <input type="submit" value=" < " onclick="if (!logitheque.recordset.BOF) logitheque.recordset.MovePrevious()"> </input> <input id="Code" type="text" size="20" datasrc="#logitheque" datafld="nom"> </input> <input type="submit" value=" > " onclick="if (!logitheque.recordset.EOF) logitheque.recordset.MoveNext()"> </input> <input type="submit" value=" >> " onclick="logitheque.recordset.MoveLast()"> </input> </td> </tr> </table> <table datasrc="#logitheque" datafld="logiciel" border="1" frame="box" rules="rows"> <tr> <td> <b> <div id="Title" datasrc="#logitheque" datafld="nom"></div> </b> </td> <td> <div id="Title" datasrc="#logitheque" datafld="langue"></div> </td> </tr> <tr> <td colspan="2"> <div id="Title" datasrc="#logitheque" datafld="commentaire"></div> </td> </tr> </table> <table> <tr> <td> <input type="submit" value=" << " onclick="logitheque.recordset.MoveFirst()"> </input> <input type="submit" value=" < " onclick="if (!logitheque.recordset.BOF) logitheque.recordset.MovePrevious()"> </input> <input id="Code" type="text" size="20" datasrc="#logitheque" datafld="nom"> </input> <input type="submit" value=" > " onclick="if (!logitheque.recordset.EOF) logitheque.recordset.MoveNext()"> </input> <input type="submit" value=" >> " onclick="logitheque.recordset.MoveLast()"> </input> </td> </tr> </table> </body> </html> |
Les fichiers à plat sont des fichiers textuels possédant une structure ordonnée à l'image notamment, des fichiers de configurations (ini) ou des fichiers statistiques (log).
Les données contenues dans ce genre de fichiers peuvent être facilement extraites du fait de leur parfaite organisation.
212.30.116.74 GET /coursasp/formulaire.html HTTP/1.1 200 11085 216.206.88.135 GET /coursvbscript/sommaire.html HTTP/1.0 200 11660 ... |
Chaque champ dans cet exemple, est délimité par un espace blanc et chaque ligne par un saut de ligne (chr(10)) et un retour chariot (chr(13)). Le caractère de délimitation pourrait être n'importe quel caractère comme une virgule (,) ou un point-virgule (;).
Il est possible de rencontrer d'autres types de fichiers à plat comme ceux à largeur fixe ou à enregistrements balisés.
Les fichiers à largeur fixe diffère dans la mesure où chaque champ possède un nombre d'octets déterminé.
212.30.116.74 GET /coursasp/formulaire.html HTTP/1.1 200 11085 ... ' 15 octets 4 octets 50 octets 8 octets 3 octets 6 octets chr(10) chr(13) ... |
Les fichiers à enregistrements balisés contiennent un balisage spécifique représentant un type d'information pour chacune des lignes.
H 212.30.116.74 GET /coursasp/formulaire.html HTTP/1.1 200 11085 J 212.30.116.74 GET /javascript/initialisation.js HTTP/1.1" 200 9065 J 212.30.116.74 GET /coursasp/javascript/navigation.js HTTP/1.1 200 2517 S 212.30.116.74 GET /style/sommaire.css HTTP/1.1 200 1332 ... ' P représente une page HTML, ' J représente un script externe, ' S représente une feuille de style. |
Avant d'écrire un programme permettant d'extraire les informations précisément, il est impératif d'analyser attentivement la structure du fichier à plat afin de définir non seulement son type mais aussi les délimiteurs, les champs et les lignes.
65.116.145.133 - - "GET,/coursjavascript/style.html,HTTP/1.1" 200 16169 212.30.116.74 - - "GET,/javascript/initialisation.js,HTTP/1.1" 200 9065 ... |
Dans ce cas, les délimiteurs ne sont pas identiques pour tous les champs bien qu'il s'agisse d'un fichier à plat délimité.
Subséquemment à l'étude du fichier, il est nécessaire d'établir un dictionnaire des données comportant l'emplacement du champ dans la ligne, son nom, son type de données, ses valeurs possibles et éventuellement une description.
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
|||||||||
|
Ensuite, il faut penser à étudier la structure d'accueil pour les informations extraites du fichier à plat.
Pour un fichier XML, l'élément racine, les éléments parents et enfants ainsi que les attributs doivent être déterminés de sorte à convenir le plus judcieusement possible aux contraintes d'une application.
<statistique> <client adresse_ip="valeur"> <document poids="valeur" protocole="valeur" code="valeur" methode="valeur"> valeur </document> <document poids="valeur" protocole="valeur" code="valeur" methode="valeur"> valeur </document> ... </client> ... </statistique>
Il ne reste désormais plus qu'à entreprendre l'élaboration d'un programme permettant de sérialiser automatiquement un fichier à plat en fichier XML.
Exemple [voir]<% Const OpenFileForReading = 1 Dim obj_fso, obj_dom, obj_log, racine, noeud Dim obj_client, obj_document, obj_protocole, obj_code, obj_methode Dim adresse_ip, methode, document, protocole, code, poids Dim tableau, elt_adresse, i, trouve i = 1 Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") fichier = Server.MapPath("fichier_log.txt") Set obj_log = obj_fso.OpenTextFile(fichier, OpenFileForReading) Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") Set racine = obj_dom.createElement("statistique") obj_dom.appendChild racine Do While Not obj_log.AtEndOfStream trouve = false ligne = obj_log.ReadLine tableau = Split(ligne, " ", -1, 1) elt_adresse = Split(tableau(3), ",", -1, 1) adresse_ip = tableau(0) methode = Right(elt_adresse(0), Len(elt_adresse(0)) - 1) document = elt_adresse(1) protocole = Left(elt_adresse(2), Len(elt_adresse(2)) - 1) code = tableau(4) poids = tableau(5) Set obj_client = obj_dom.createElement("client") obj_client.setAttribute "adresse_ip", adresse_ip Set obj_document = obj_dom.createElement("document") Set document_txt = obj_dom.createTextNode(document) obj_document.setAttribute "poids", poids obj_document.setAttribute "protocole", protocole obj_document.setAttribute "code", code obj_document.setAttribute "methode", methode obj_document.appendChild document_txt Response.Write "<br><b>Ligne n°" & i & "</b><br>---------<br>" & adresse_ip _ & "<br>" & methode & "<br>" & document & "<br>" _ & protocole & "<br>" & code & "<br>" & poids & "<br><br>" If racine.hasChildNodes Then For Each noeud In racine.childNodes If noeud.attributes.item(0).value = adresse_ip Then Response.Write i & " " & noeud.nodeName & " : " _ & noeud.attributes.item(0).value _ & " = " & adresse_ip & "<br>" noeud.appendChild obj_document trouve = true End If i = i + 1 Next End If If trouve = false OR (racine.hasChildNodes AND trouve = false) Then obj_client.appendChild obj_document racine.appendChild obj_client End If i = i + 1 Loop obj_dom.save(Server.MapPath("fichier_log.xml")) Response.Write "Le fichier de statistique au format texte" _ & " est disponible à l'adresse suivante :<br>" _ & Server.MapPath("fichier_log.xml") obj_log.close Set obj_log = Nothing %> |
Les fichiers à plat peuvent également être générés à partir d'une source XML.
Dans ce cas de sérialisation, il suffit de décomposer la structure XML selon le type de fichier à plat souhaîté.
Il est possible d'utiliser aussi bien le modèle d'objet de document XML qu'une feuille de style de transformation XSLT. Bien que cette dernière semble parfaitement convenir pour ce genre de processus, nous nous attacherons à développer un programme basé sur le DOM XML.
A l'instar de la transformation d'un fichier à plat vers un fichier XML, une étude méticuleuse de la source XML et du résultat textuel envisagé est nécessaire afin de déterminer le type de fichier à plat, les lignes, les champs et les délimiteurs.
Exemple [voir]Fichier source XML <statistique> <client adresse_ip="valeur"> <document poids="valeur">valeur</document> <protocole>valeur</protocole> <code>valeur</code> <methode>valeur</methode> </client> ... </statistique> Modèle de fichier à plat 65.116.145.133 /courscss/style.html 16169 HTTP/1.1 200 GET adresse_ip document poids protocole code methode
<% Dim obj_dom Dim fichier, ligne, champ, texte, delimiteur Dim racine, noeud, enfant, attribut, attributs Set obj_dom = Server.CreateObject("MSXML2.DOMDocument") obj_dom.async = False fichier = Server.MapPath("fichier_log.xml") obj_dom.load(fichier) Set racine = obj_dom.documentElement delimiteur = " " For Each noeud In racine.childNodes Set attributs = noeud.attributes Set attribut = attributs.item(0) champ = champ & attribut.value & delimiteur For Each enfant In noeud.childNodes champ = champ & enfant.text & delimiteur Set attributs = Nothing Set attributs = enfant.attributes If attributs.length > 0 Then Set attribut = attributs.item(0) champ = champ & attribut.value & delimiteur End If Next ligne = ligne & champ & chr(10) & chr(13) Next Response.write "<b>Le contenu du fichier log :" _ & "</b><br>" & ligne Set obj_fso = Server.CreateObject("Scripting.FileSystemObject") set texte = obj_fso.CreateTextFile("c:\fichier_stat.txt", True) texte.Write ligne texte.close Set texte = Nothing Set fichier = Nothing %> |
Le langage XML est en passe de devenir un support de stockage de données indispensable pour la mise en oeuvre d'un site Web dynamique. Le langage ASP intègre déjà de nombreux outils permettant de travailler en conjonction avec des documents XML.
Un document XML possède des informations parfaitement ordonnées exploitables par une application ASP.
<?xml version="1.0"?> <!DOCTYPE racine SYSTEM "http://adresse.web.com/dtD"> <racine> <element attribut="Valeur"/> <element_2>Contenu_Textuel</element_2> <[CDATA[Texte]]> </racine>
Il est possible de manipuler tous les composants d'une arborescence XML, c'est-à-dire, de parcourir les différents noeuds, d'extraire les informations contenues dans ces derniers, d'en insérer de nouveaux, de mettre à jour leur contenu ou encore d'en supprimer.
Le chargement d'un document XML dans une page ASP à partir du modèle d'objet de document s'accomplit en créant tout d'abord une instance de l'objet DOM puis en utilisant la méthode de chargement load.
Dim Objet_Document Set Objet_Document = _ Server.CreateObject("MSXML2.DOMDocument") Objet_Document.load("Disque:\Chemin\Fichier.xml")
Le ProgID fournit en argument dans la méthode createObject fait appel par défaut à la version 3.0 du parseur MSXML. L'ajout d'un numéro de version à la fin de la chaîne de caractères permet d'appeler explicitement la version de MSXML désirée.
'Sollicitation de msxml4.dll (c:\winnt\system32\) Set Objet_Document = _ Server.CreateObject("MSXML2.DOMDocument.4.0") 'Sollicitation de msxml3.dll (c:\winnt\system32\) Set Objet_Document = _ Server.CreateObject("MSXML2.DOMDocument.3.0")
Par ailleurs, la méthode load retournant une valeur booléenne en fonction du déroulement du processus, peut être utilisée pour détecter un échec de chargement du fichier XML concerné et ainsi prévoir une procédure adaptée.
if Objet_Document.load("Disque:\Chemin\Fichier.xml") Then Response.Write "Le chargement s'est déroulé avec succès." Else Response.Write "Un échec s'est produit lors du chargement." End If
La méthode MapPath de l'objet ASP Server permet de résoudre un chemin relatif en une adresse physique complète sur le serveur.
fichier = Server.MapPath("../fichier.xml") Objet_Document.load(fichier)
Par défaut, le chargement du fichier XML s'effectue de manière asynchrone. Cela permet de vérifier l'état de l'instruction de chargement load. La méthode readyState associée à un événement onreadystatechange peut alors retourner une valeur enumReadyState reflétant l'état du processus de chargement d'un fichier XML.
Objet_Document.onreadystatechange = Gestionnaire_Evénement; Etat = Objet_Document.readyState;
Si aucune fonction de ce genre n'est nécessaire, il est possible de ne pas conserver un chargement asynchrone et partant de fixer la propriété async à la valeur False. Mais dans ce cas, l'analyseur XML ne rend la main que lorsque le document est complétement chargé et analysé et partant disponible pour la suite du programme.
Objet_Document.async = False
Par ailleurs, le fichier est chargé avec une propriété validateOnParse fixée par défaut à True. Elle est utilisée pour l'analyse du document XML par rapport à sa définition de type de document (DTD) ou à son schéma. Si cette fonctionnalité n'est pas obligatoire pour le document à traiter, la valeur False peut être attribuée à la propriété validateOnParse afin d'éviter l'opération de validation.
Objet_Document.validateOnParse = True (Par défaut) | False
La méthode loadXML permet le chargement d'un document XML exprimée sous la forme d'une chaîne de caractères bien formé.
Objet_Document.loadXML_ ("<?xml version=""1.0""?><racine>...</racine>")
Suite à la manipulation d'une arborescence XML, il est nécessaire de conserver les modifications apportées au document.
La méthode save permet de sauvegarder un document XML dans un fichier au format adéquat.
Objet_Document.save(Nom_Fichier)
Il est possible d'enregistrer l'objet DOMDocument dans un fichier XML, dans l'objet ASP Response, un autre objet DOMDocument ou dans tout autres objets supportant la persistance.
Objet_Document.save(Response)
A la fin du traîtement de l'objet DOMDocument, la référence doit être libérée dans VBScript par une affectation présentée ci-dessous.
Exemple [voir]Set Objet_Document = Nothing
<html> <head> <script language="JScript"> var Objet_Document, Objet_Erreur; function chargement() { Objet_Document = new ActiveXObject("Msxml2.DOMDocument"); Objet_Erreur = Objet_Document.parseError; Objet_Document.onreadystatechange = affiche_etat; Objet_Document.async = false Objet_Document.validateOnParse = false Objet_Document.load(adresse.value); return; } function affiche_etat() { var Etat; Etat = Objet_Document.readyState; if (Etat == 0) { affichage.innerHTML += "Le chargement n'a pas commencé" + " (readyState = " + Etat + ").<br>"; } if (Etat == 1) { affichage.innerHTML += "Le chargement est en cours" + " (readyState = " + Etat + ").<br>"; } if (Etat == 2) { affichage.innerHTML += "Le chargement du fichier est terminé" + " (readyState = " + Etat + ").<br>"; } if (Etat == 3) { affichage.innerHTML += "Le fichier est en cours d'analyse" + " (readyState = " + Etat + ").<br>"; } if (Etat == 4) { if (Objet_Erreur.errorCode == 0) { affichage.innerHTML += "Le chargement et l'analyse sont terminés" + " (readyState = " + Etat + ").<br>"; + "<h2>Opération réussie !<h2>" } else { affichage.innerHTML += "<h2>Le chargement a échoué.</h2>" + "<br>Une erreur d'analyse s'est produite." + "<br>Code : " + Objet_Erreur.code + "<br>Raison : " + Objet_Erreur.reason + "<br>Texte : " + Objet_Erreur.srcText + "<br>URL : " + Objet_Erreur.url + "<br>Position : " + Objet_Erreur.filePos + "<br>Ligne : " + Objet_Erreur.line + "<br>Colonne : " + Objet_Erreur.linePos; } } return; } </script> </head> <body> Adresse : <input type="text" size="80" id="adresse" value="http://laltruiste.com/coursdomxml/exemples/logitheque.xml"> <input type="button" value="Chargement" onclick="jscript:chargement()"> <hr> <div id="resultat" style="font-size:12pt; font-weight:bold; color:blue"> </div> </body> </html> |
Le modèle d'objet de document contient des interfaces et de nombreuses méthodes ou propriétés permettant de récupérer des informations ciblées dans un document XML.
Chaque noeud d'un document XML est représenté par un objet spécifique. Néanmoins, le noeud générique Node peut contenir n'importe lequel d'entre eux.
Les ObjetsObjet | Description |
---|---|
Document | représente le document XML complet susceptible de contenir tous les autres noeuds. |
Node | correspond à n'importe lequel des noeuds dans l'arborescence d'un document XML, y compris ce-dernier <Noeud>...</Noeud>, noeud="valeur", .... |
Attribute | représente un noeud attribut ayant pour valeur un noeud texte, <Element Attribut="Valeur"/>. |
CDATASection | représente une section CDATA, <![CDATA[Texte...]]>. |
CharacterData | représente un noeud CDATASection, Comment ou Text. |
Comment | représente un commentaire <!-- Commentaire -->. |
DocumentType | représente la définition de type de document ne pouvant contenir que des noeuds entités ou notations, <!DOCTYPE...[...]> |
Element | représente un noeud élément ayant éventuellement pour valeur un noeud texte, <Element> [Valeur] </Element>. |
Entity | représente une entité dans une DTD, <!ENTITY...>. |
EntityReference | représente une référence d'entité contenu dans un noeud texte, &Référence_Entité;. |
Notation | représente une notation dans une DTD, <!NOTATION...>. |
ProcessingInstruction | représente une instruction de traîtement <?Instruction Valeur?>. |
SchemaCache | représente un espace de noms et un schéma dans le document. |
Text | représente un noeud ou un ensemble de noeuds textuel. Ce noeud est présent dans les attributs et les éléments. |
La méthode nodeFromID récupère un noeud par l'intermédiaire de son identificateur.
Objet_Noeud = Objet_Document.nodeFromID(Identificateur)
La méthode selectSingleNode retourne le noeud sélectionné à l'aide d'une expression XSL ou XPath.
Objet_Noeud = Objet.selectSingleNode(Expression)
La méthode getAttributeNode renvoie un noeud attribut par l'intermédiaire de son nom.
Objet_Attribut = Objet_Element.getAttributeNode(Nom)
Par ailleurs, des collections permettent de regrouper plusieurs objets résultant d'une partie de l'arborescence XML d'un document. Ces collections peuvent être obtenues à l'aide de propriétés ou de méthodes appliquées à des objets susceptibles de contenir des noeuds, à l'image des éléments contenant des attributs et d'autres éléments.
Les CollectionsCollection | Description |
---|---|
NamedNodeMap | représente une collection d'attributs, d'entités ou de notations. |
NodeList | représente une liste de noeuds. |
DocumentFragment | représente un fragment de document. |
SchemaCollection | représente les espaces de noms et les schémas dans le document. |
Selection | représente un ou plusieurs noeuds sélectionnés par une expression XPath. |
La méthode selectNodes retourne une collection de noeuds résultant d'une expression XSL ou XPath.
Set Collection_Noeuds = Objet.selectNodes(Expression)
La méthode getElementsByTagName renvoie une collection d'éléments correspondant à un nom précis. Cette méthode est essentiellement applicable à un document et aux éléments.
Set Collection_Elements = Objet.getElementByTagNames(Nom)
La propriété attributes retourne une collection d'attributs provenant d'un noeud élément en cours.
Set Liste_Attributs = Objet_Element.attributes
La collection NodeList contient une liste de noeuds dépendant du noeud en cours sans distinction de type. Ainsi, la liste de noeuds de l'objet Document peut être composé d'une instruction de traîtement, d'une déclaration de type de document et d'un élément racine.
La méthode ChildNodes de l'objet Document permet d'extraire une liste de noeuds enfants.
Set Liste_Noeuds = Objet_Document.childNodes
Il est possible de parcourir une liste de noeuds par l'intermédiaire d'une boucle For...To...Next et des méthodes length et item.
For i = 0 To Liste_Noeuds.length - 1 Response.Write Liste_Noeuds.item(i).value Next
L'objet Node peut être extrait par la méthode item à l'intérieur d'une collection de noeuds ou d'un objet selection.
Set Objet_Noeud = Liste_Noeuds.item(Index) Set Objet_Noeud = Objet_selection.item(Index)
Plus spécifiquement, la méthode getNamedItem permet d'accéder à un noeud attribut par l'intermédiaire de son nom.
Set Objet_Attribut = Liste_Attributs.getNamedItem(Nom)
La méthode nextNode permet d'atteindre le prochain noeud dans la collection nodeList ou dans un objet Selection. La méthode peekNode est équivalente à celle précité hormis que la position de ligne n'est pas avancée.
Set Objet_Noeud = Liste_Noeuds.nextNode Set Objet_Noeud = objet_Selection.nextNode Set Objet_Noeud = Objet_selection.peekNode
Il est possible de récupérer tous les noeuds d'une collection en utilisant une boucle For Each... appliquée à une liste de noeuds NodeList.
For Each Objet_Noeuds In Liste_Noeuds Response.Write Objet_Noeuds.value Next
L'objet Document dispose de propriétés pouvant retourner directement le premier (firstChild) ou le dernier (lastChild) noeud enfant.
Set Premier_Noeud = Objet_Document.FirstChild Set Dernier_Noeud = Objet_Document.lastChild
Les noeuds possédent également des propriétés dont la fonction est d'accéder à leur frère direct en amont (previousSibling) ou en aval (nextSibling).
Set Frere_Precedent = Objet_Noeud.previousSibling Set Frere_Suivant = Objet_Noeud.nextSibling
D'autres noeuds précis tels que le noeud racine (documentElement), le type de document (docType) ou le contenu textuel (text) sont également directement récupérable à partir de l'objet Document.
Set Noeud_Racine = Objet_Document.documentElement Set Noeud_DTD = Objet_Document.docType Set Contenu_Texte = Objet_Document.text
A partir d'un noeud enfant quelconque dans l'arborescence d'un document XML, la propriété parentNode permet de remonter à l'ascendance de l'interface et la propriété ownerDocument, au noeud document dont il dépend.
Exemple [voir]Set Noeud_Parent = Objet_Noeud.parentNode Set Objet_Document = Objet_Noeud.ownerDocument
<% Dim Objet_Document Dim Objet_NodeList Dim noeud, resultat Dim oEditeur, oCommentaire Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = false fichier = Server.MapPath("logitheque.xml") Objet_Document.load fichier If Objet_Document.parseError.errorCode <> 0 Then Response.Write "Une erreur s'est produite " _ & "lors de l'analyse du fichier !" Else Set Objet_NodeList = Objet_Document.getElementsByTagName("logiciel") For i = 0 To Objet_NodeList.length - 1 Step 2 set noeud = Objet_NodeList.item(i) set oEditeur = noeud.selectSingleNode("editeur") set oCommentaire = noeud.selectSingleNode("commentaire") resultat = resultat & "<tr><td>" _ & noeud.attributes.item(0).nodeValue _ & "</td><td> : <b style='color:blue'>" _ & noeud.firstchild.text & "</b></td></td><td>" _ & oEditeur.text & "</td></td><td>" _ & oCommentaire.text & "</td></tr>" Next Response.Write "<h3>La liste comporte " & Objet_NodeList.length _ & " noeuds.</h3><hr><table><tr><th>Code</th>" _ & "<th>Nom</th></tr>" & resultat & "</table>" End If %> |
Les interfaces du modèle d'objets de document XML, possèdent chacune certaines caractèristiques propres à elles-mêmes et extractibles par l'intermédiaire de propriétés adéquates.
Tout d'abord, le nom de l'objet en cours peut être récupéré par l'intermédiaire de la propriété nodeName applicable à tous les noeuds et plus spécifiquement pour les éléments tagName.
Nom_Noeud = Objet.nodeName Nom_Noeud = Objet_Element.tagName
Les propriétés nodetype et nodeTypeString retournent le type du noeud en cours respectivement sous forme d'un nombre entier et d'une chaîne de caractères.
Type_Valeur = Objet_Noeud.nodeType Type_Chaine = Objet_Noeud.nodeTypeString
Ce genre de fonctionnalités permet de construire des programmes conditionnels en fonction du noeud rencontré. Par exemple, un noeud textuel ne peut contenir d'autres noeuds, donc dans le cadre du parcours automatique d'une arborescence, il serait inutile de tester la présence d'enfants. De même, la détection d'un noeud précis, comme une instruction de traitement peut se faire par l'intermédiaire d'une condition If comprise dans une boucle.
Les types de noeudsFor Each Objet_Noeud In Liste_Noeuds Dim Tampon If Objet_Noeud.nodeType = 7 Then Tampon = Tampon & Objet_Noeud.value End If Next
Type (num - chaîne) | Description |
---|---|
NODE_ELEMENT (1 - element) |
Noeud élément. |
NODE_ATTRIBUTE (2 - attribute) |
Noeud attribut. |
NODE_TEXT (3 - text) |
Noeud textuel. |
NODE_CDATA_SECTION (4 - cdatasection) |
Noeud section CDATA. |
NODE_ENTITY_REFERENCE (5 - entityreference) |
Noeud référence d'entité. |
NODE_ENTITY (6 - entity) |
Noeud entité. |
(7 - processinginstruction) |
Noeud instruction de traîtement. |
NODE_COMMENT (8 - comment) |
Noeud commentaire. |
NODE_DOCUMENT (9 - document) |
Noeud racine. |
NODE_DOCUMENT_TYPE (10 - documenttype) |
Noeud de définiton de type de document. |
NODE_DOCUMENT_FRAGMENT (11 - documentfragment) |
Noeud fragment de document. |
NODE_NOTATION (12 - notation) |
Noeud notation. |
Par ailleurs, La méthode de noeuds hasChildNodes détermine si l'objet en cours contient une descendance.
True | False = Objet.hasChildNodes
La propriété length renvoie le nombre de noeuds à l'intérieur d'une collection.
Nombre_Items = Collection_Objets.length
Ces deux dernières propriétés peuvent servir à construire une structure conditionnelle déterminant si le'objet en cours possède des noeuds enfants ainsi que leur nombre.
If Objet.hasChildNodes Then For i = 0 To Objet.ChildNodes.length - 1 Set Noeud = Objet.ChildNodes.item(i) Response.write "<h2>Noeuds Enfants</h2>" & "Nom : " & Noeud.nodeName _ & "Valeur : " & Noeud.value _ & "Type : " & Noeud.nodeTypeString Next Else Response.write "Nom : " & Objet.nodeName _ & "Valeur : " & Objet.value _ & "Type : " & Objet.nodeTypeString End If
La propriété value retourne la valeur contenue au sein du noeud courant.
Valeur = Objet_Noeud.value
la propriété nodeTypedValue contient la valeur du noeud courant exprimée dans un type de donnée précisé en l'occurrence par la propriété dataType.
Objet_Noeud.dataType = Type Valeur = Objet_Noeud.nodeTypedValue
La méthode getAttribute extrait une valeur d'attribut par l'intermédiaire de son nom.
Valeur = Objet_Element.getAttribute(Nom)
Plusieurs méthodes ou propriété existent dans le DOM XML afin de récupérer des chaînes de caractères sur des noeuds.
Lorsque la propriété text est utilisée pour récupérer le contenu textuel d'un noeud, le résultat comprend non seulement la chaîne de caractères dans le noeud courant mais également celles dans les noeuds descendants.
<?xml version="1.0"?> <racine attribut="valeur racine"> Texte libre <element attribut_2="valeur attribut_2"> Valeur de l'élément </element> <(CDATA[Texte CDATA]]> <element_2> Valeur du deuxième élément </element_2> </racine> Response.Write Objet_Document.text ' Retourne Texte libre Valeur de l'élément Texte CDATA Valeur du deuxième élément
En définitive, seules les valeurs textuelles des éléments et des sections CDATA sont prises en compte, toutes les autres sont ignorées, comme les attributs, les commentaires et les instructions de traitement.
La propriété data récupère les données textuelles des noeuds CharacterData, Comment, Text ou ProcessingInstruction.
Chaine_Caracteres = Objet_Texte.data
La méthode splitText découpe un noeud textuel en deux à la position indiquée et insère le nouveau frère immédiatement après le noeud amputé.
Set Nouveau_Noeud = Noeud_Texte.splitText(Position)
La méthode subStringData récupére un intervalle de la valeur de chaîne de caractères d'un noeud textuel. La sous-chaîne est extraite à partir d'une position et jusqu'à un nombre indiqué.
Texte = Noeud_Texte.substringData(Position, Nombre)
La propriété length appliquée à un noeud textuel retourne le nombre total de caractères.
Exemple [voir]Nombre_Caractères = Objet_Texte.length
<html><body> <% Dim Objet_Document Dim racine, Objet_CDATA, Noeud_Frere Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") fichier = Server.MapPath("livre.xml") Objet_Document.async = false Objet_Document.load fichier Set racine = Objet_Document.documentElement Response.Write "<h1>La collection comprend " & racine.childNodes.length _ & " livres.</h1><hr>" affichage = Visualise_Noeud(Objet_Document, 0) & "<hr>" _ & "<h2>Le document a été modifié</h2>" & ajout() 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 Function ajout() Set Objet_Node = Objet_Document.selectSingleNode _ ("//livre[nom = ""ASP, ADO, and XML Complete""]") Set Objet_CDATA = Objet_Document.createCDATASection(" " _ & "<p>Un livre de <b>Kurt Gagle</b>," _ & " auteur également de...</p>") Objet_Node.insertBefore Objet_CDATA, Objet_Node.firstChild Set Noeud_frere = Objet_Node.childNodes.item(1) modification = modification & "<u>La section CDATA suivante a " _ & "été ajoutée avant le noeud <b>" _ & Noeud_Frere.NodeName & " (" & Noeud_Frere.text _ & ")</b> :</u>" & Objet_CDATA.text Set Objet_Node = Nothing Set Noeud_Frere = Nothing Set Objet_Node = Objet_Document.selectSingleNode _ ("//livre[nom = ""XSLT Programmer's reference""]") Set Nouvel_Objet_CDATA = Objet_CDATA.cloneNode(true) Nouvel_Objet_CDATA.replaceData 19, 10, "Michael Kay" Nouvel_Objet_CDATA.replaceData 43, 12, "de nombreux ouvrages" Set Noeud_frere = Objet_Node.childNodes.item(1) Objet_Node.insertBefore Nouvel_Objet_CDATA, Objet_Node.firstChild Set Noeud_frere = Objet_Node.childNodes.item(1) modification = modification & "<u>La section CDATA suivante a " _ & "été ajoutée avant le noeud <b>" _ & Noeud_Frere.NodeName & " (" & Noeud_Frere.text _ & ")</b> :</u>" & Nouvel_Objet_CDATA.text Set Objet_Node = Nothing Set Noeud_Frere = Nothing Set oLivre4 = Objet_Document.selectSingleNode("//livre[3]/nom") Set Objet_Node = Objet_Document.selectSingleNode _ ("//livre[nom = ""Mastering Active Server Pages 3""]") Set Nouvel_Objet_CDATA = Objet_CDATA.cloneNode(true) Nouvel_Objet_CDATA.replaceData 19, 10, "Russell Jones" Nouvel_Objet_CDATA.replaceData 45, Nouvel_Objet_CDATA.length, _ "du livre " & oLivre4.text & "." Set Noeud_frere = Objet_Node.childNodes.item(1) Objet_Node.insertBefore Nouvel_Objet_CDATA, Objet_Node.firstChild Set Noeud_frere = Objet_Node.childNodes.item(1) modification = modification & "<u>La section CDATA suivante a " _ & "été ajoutée avant le noeud <b>" _ & Noeud_Frere.NodeName & " (" & Noeud_Frere.text _ & ")</b> :</u>" & Nouvel_Objet_CDATA.text ajout = modification End Function Objet_Document.save(Server.MapPath("livre.xml")) affichage2 = Visualise_Noeud(Objet_Document, 0) Set Objet_Node = Nothing Set Noeud_Frere = Nothing Set Objet_Document = Nothing %> <div><%= affichage %></div> <hr> <div><%= affichage2 %></div> </body></html> |
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 %> |
Suite à la manipulation d'une arborescence XML, il peut être nécessaire de conserver les modifications apportées au document.
La méthode save de l'objet DOMDocument, permet de sauvegarder un document XML dans un fichier au format adéquat.
Exemple [voir]Objet_Document.save(Nom_Fichier)
Fichier : librairie.xml <?xml version="1.0" encoding="iso-8859-1"?> <librairie> <livre code="2841771431"> <titre>XML IN A NUTSHELL</titre> <auteur id="29754995016048">HAROLD</auteur> <editeur>O'REILLY</editeur> </livre> <livre code="284082812X"> <nom>XML ETAPE PAR ETAPE</nom> <auteur id="29754995016048">YOUNG M.</auteur> <editeur>MICROSOFT PRESS</editeur> </livre> <livre code="2744011002"> <titre>LE CAMPUS DEVEL. WEB AVEC XHTML XML</titre> <auteur id="29754995016048">LADD ERIC</auteur> <editeur>CAMPUSPRESS FRANCE</editeur> </livre> </librairie> Fichier : traitement.asp <% Set Objet_Document = Server.CreateObject("MSXML2.DOMDocument") Objet_Document.async = False Objet_Document.load Server.MapPath("librairie.xml") Set Objet_Texte = _ Objet_Document.createTextNode(_ "LE CAMPUS DEVELOPPEUR WEB AVEC XHTML XML") Set oTitre = Objet_Document.documentElement.lastChild.firstChild Set Ancien_Titre = oTitre.firstChild oTitre.replaceChild Objet_Texte, Ancien_Titre Objet_Document.save Server.MapPath("librairie.xml") Set Objet_Document = Nothing %> |
Le langage XML devenant le support de base de données de prédilection sur Internet, ActiveX Data Objects fournissant une interface entre des sources de données et des applications web, se devait de prendre en charge les documents XML. Depuis sa version 2.1, ADO a développé diverses fonctionnalités destinées à manipuler du XML.
Le langage ADO (ActiveX Data Objects) permet d'ouvrir des jeux d'enregistrements à partir de diverses sources XML telles qu'un fichier, un flux de données, un objet ASP Request ou même un objet DOMDocument.
L'ouverture d'un document XML par un objet Recordset se réalise selon différentes étapes.
Set Objet_Recordset = Server.CreateObject("ADODB.Recordset") Set Objet_Recordset.ActiveConnection = Nothing Objet_Recordset.CursorLocation = adUseClient Objet_Recordset.CursorType = adOpenStatic Objet_Recordset.LockType = adLockReadOnly Objet_Recordset.Source = adresse_fichier.xml Objet_Recordset.Open
L'objet Recordset ne parvient à ouvrir que des fichiers XML spécialement formaté et validé par un schéma. En fait, seuls des fichiers XML résultant d'un jeu d'enregistrements de base de données sont capables d'être directement traîtés par l'objet Recordset.
Espaces de noms des schémasDéclaration |
---|
Description |
xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" |
indique un espace de noms XML-Data contenant les éléments et attributs que définit le schéma du jeu d'enregistrement courant. |
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" |
indique la spécification des définitions des type de données. |
xmlns:rs="urn:schemas-microsoft-com:rowset" |
indique un espace de noms contenant les éléments et les attributs spécifiques aux propriétés et attributs d'un objet Recordset. |
xmlns:z="#RowsetSchema" |
indique le schéma du jeu d'enregistrement courant. |
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <s:Schema id="RowsetSchema"> <s:ElementType name="row" content="eltOnly" ...> <s:AttributeType name="attribut" rs:number="1" ...> <s:datatype dt:type="type_données" dt:maxlength="taille_max" .../> </s:AttributeType> ... <s:extends type="rs:rowbase"/> </s:ElementType> </s:Schema> <rs:data> <z:row attribut="valeur".../> ... </rs:data> </xml>
Constituant un autre moyen d'ouvrir un fichier XML, l'objet ADO Stream possède un rôle central dans la conjonction entre le langage ActiveX Data Objects et le XML (eXtended Makup Language).
En effet, un flux de données binaires ou textuelles contenant des informations XML peut être aisément manipulé par l'objet Stream. Ce dernier est utilisé pour la lecture et l'écriture dans le flux mais aussi pour la réception de la source XML et l'envoi du résultat soit à un fichier, soit à un objet ASP Response, soit à un objet DOMDocument.
Dim Objet_Stream Set Objet_Stream = Server.CreateObect("ADODB.Stream") Objet_Stream.open adresse_fichier.xml
Une autre moyen permet de charger un fichier XML dans un objet Stream en utilisant la méthode LoadFromFile.
Objet_Stream.open Objet_Stream.loadFromFile adresse_fichier.xml
Un objet Stream peut être ouvert à vide puis rempli par un contenu XML par l'intermédiaire de la méthode WriteText.
Objet_Stream.open Objet_Stream.WriteText Chaîne_XML
L'objet Stream est tout à fait capable de charger un fichier XML non-compatible. Mais si par la suite, il doit être traité par l'objet Recordset, il est necessaire qu'il réponde aux critères exigés par ce-dernier.
Un objet Stream comportant un flux XML, peut servir à ouvrir un Recordset de la même manière qu'un fichier XML.
Objet_Recordset.Source = Objet_Stream
L'objet ASP Request contenant des données XML suite à un traîtement quelconque, peut délivrer son contenu à un objet Recordset ou Stream.
Exemple avec Recordset [voir]Const adCmdFile = 256 Objet_Recordset.Open Request, , , , adCmdFile Objet_Stream.open Request
<%@ Language=VBScript %> <!-- #include file="adovbs.inc" --> <html> <body> <% Dim i Dim Objet_Recordset Dim Resultat Set Objet_Recordset = Server.CreateObject("ADODB.Recordset") Objet_Recordset.CursorLocation = adUseClient Objet_Recordset.CursorType = adOpenStatic Objet_Recordset.LockType = adLockReadOnly fichier = Server.MapPath("livre.xml") Objet_Recordset.Source = fichier Objet_Recordset.Open Resultat = "<table border='1'>" Resultat = Resultat & "<tr>" For i = 0 to Objet_Recordset.Fields.Count - 1 Resultat = Resultat & "<th>" & Objet_Recordset.Fields(i).Name & "</th>" Next Resultat = Resultat & "</tr>" Objet_Recordset.MoveNext Do While Not Objet_Recordset.EOF Resultat = Resultat & "<tr>" For i = 0 to Objet_Recordset.Fields.Count - 1 Resultat = Resultat & "<td>" & Objet_Recordset.Fields(i).Value & "</td>" Next Objet_Recordset.MoveNext Resultat = Resultat & "</tr>" Loop Resultat = Resultat & "</table>" %> <% Objet_Recordset.Close Set Objet_Recordset = Nothing %> <h1>Contenu de la collection de livres</h1> <%= Resultat %> <br> <hr> <h3>Le fichier est située à l'adresse suivante :</h2> <blockquote><%= fichier %></blockquote> </body> </html> |
<%@ Language=VBScript %> <!-- #include file="adovbs.inc" --> <html> <body> <% Dim Objet_Stream, Objet_Recordset Dim Contenu_XML Set Objet_Stream = Server.CreateObject("ADODB.Stream") Objet_Stream.Charset = "Windows-1252" Objet_Stream.Open fichier = Server.mapPath("livre.xml") Objet_Stream.LoadFromFile fichier Contenu_XML = Objet_Stream.ReadText(adReadAll) Objet_Stream.Close Set Objet_Stream = Server.CreateObject("ADODB.Stream") Objet_Stream.Open Objet_Stream.WriteText Contenu_XML Objet_Stream.SaveToFile Server.mapPath("livre_copie.xml"), _ adSaveCreateOverWrite Set Objet_Recordset = Server.CreateObject("ADODB.Recordset") Set Objet_Recordset.ActiveConnection = nothing Objet_Recordset.CursorLocation = adUseClient Objet_Recordset.CursorType = adOpenStatic Objet_Recordset.LockType = adLockReadOnly Set Objet_Recordset.Source = Objet_Stream Objet_Recordset.Open Objet_Stream.Close Set Objet_Stream = Nothing Resultat = "<table border='1'>" Resultat = Resultat & "<tr>" For i = 0 to Objet_Recordset.Fields.Count - 1 Resultat = Resultat & "<td><b>" _ & Objet_Recordset.Fields(i).Name & "</b></td>" Next Objet_Recordset.MoveNext Resultat = Resultat & "</tr>" Do while not Objet_Recordset.EOF Resultat = Resultat & "<tr>" For i = 0 to Objet_Recordset.Fields.Count - 1 Resultat = Resultat & "<td>" _ & Objet_Recordset.Fields(i).Value & "</td>" Next Objet_Recordset.MoveNext Resultat = Resultat & "</tr>" Loop Resultat = Resultat & "</table>" Objet_Recordset.Close Set Objet_Recordset = Nothing %> <h1>Contenu de la collection de livres</h1> <%= Resultat %> <br> <hr> <h3>Une copie du fichier "<%= fichier %>" est située à l'adresse suivante :</h2> <blockquote> <%= Server.mapPath("livre_copie.xml") %> </blockquote> </body> </html> Fichier : livre.xml <xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema"> <s:Schema id="RowsetSchema"> <s:ElementType name="row" content="eltOnly"> <s:AttributeType name="id" rs:number="1" rs:writeunknown="true"> <s:datatype dt:type="string" dt:maxlength="7" rs:fixedlength="true" rs:maybenull="false"/> </s:AttributeType> <s:AttributeType name="nom" rs:number="2" rs:writeunknown="true"> <s:datatype dt:type="string" dt:maxlength="50" rs:maybenull="false"/> </s:AttributeType> <s:AttributeType name="editeur" rs:number="3" rs:writeunknown="true"> <s:datatype dt:type="string" dt:maxlength="25" rs:maybenull="false"/> </s:AttributeType> <s:AttributeType name="commentaire" rs:number="4" rs:writeunknown="true"> <s:datatype dt:type="string" dt:maxlength="250" rs:maybenull="false"/> </s:AttributeType> <s:extends type="rs:rowbase"/> </s:ElementType> </s:Schema> <rs:data> <z:row id="ASP0012" nom="ASP, ADO, and XML Complete" editeur="Sybex" commentaire="Develop dynamic Web applications with ASP, ADO and XML."/> <z:row id="XSL1207" nom="XSLT Programmer's reference" editeur="Wrox Press" commentaire="This book is for programmers who want to learn how to use XSLT language to develop web applications."/> <z:row id="ASP0342" nom="Mastering Active Server Pages 3" editeur="Sybex" commentaire="This book is Microsoft's technology for delivering dynamic, interactive Web applications."/> <z:row id="VBS8920" nom="Visual Basic Developper's guide to ASP and IIS" editeur="Sybex" commentaire="This core components of web application development for programmers using Microsoft technologies are ASP and IIS."/> </rs:data> </xml> |
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> |