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és
Propriété
Description
Valeur = Objet_SchemaCollection.length
retourne le nombre d'espaces de noms en cours dans la collection.
Les Méthodes
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.
Exemple [voir]
</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>