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> |