Affichage d'une collection de schémas XML stockée

Après avoir importé une collection de schémas XML par le biais de l'instruction CREATE XML SCHEMA COLLECTION, les composants du schéma sont stockés dans les métadonnées. Vous pouvez passer par la fonction intrinsèque xml_schema_namespace pour reconstruire la collection de schémas XML. Cette fonction renvoie une instance de type de données xml.

Par exemple, la requête suivante reprend une collection de schémas XML (à savoir ProductDescriptionSchemaCollection) à partir du schéma relationnel de production se trouvant dans la base de données AdventureWorks.

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection')
GO

Si vous ne voulez consulter qu'un seul schéma de la collection de schémas XML, vous pouvez spécifier une requête XQuery portant sur le résultat de type xml renvoyé par la fonction xml_schema_namespace.

SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
')
GO

Par exemple, la requête suivante extrait les informations du schéma XML traitant des garanties et de l'entretien des produits à partir de la collection de schémas XML nommée ProductDescriptionSchemaCollection.

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
')
GO

Vous pouvez également transmettre l'espace de noms cible facultatif en tant que troisième paramètre à la fonction xml_schema_namespace pour extraire un schéma spécifique de la collection, comme illustré dans la requête suivante :

SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain')
GO

Lors de la création d'une collection de schémas XML par le biais de l'instruction CREATE XML SCHEMA COLLECTION dans la base de données, l'instruction stocke les composants du schéma dans les métadonnées. Notez que seuls les composants de schéma que SQL Server comprend sont stockés. Les commentaires, les annotations et les attributs non XSD ne sont pas stockés. Le schéma ainsi reconstruit par xml_schema_namespace est donc équivalent au schéma d'origine d'un point de vue fonctionnel, mais n'y ressemble pas nécessairement. Par exemple, vous n'y verrez pas les mêmes préfixes que dans le schéma d'origine. Le schéma renvoyé par la fonction xml_schema_namespace utilise t en tant que préfixe dans l'espace de noms cible et ns1, ns2, etc., pour les autres espaces de noms.

Pour conserver une copie identique des schémas XML, vous devez sauvegarder ces derniers dans des fichiers ou dans des colonnes de type xml d'une table tirée d'une base de données.

La vue de catalogue sys.xml_schema_collections retourne également des informations concernant les collections de schémas XML. Ces informations comprennent le nom de la collection, la date de création et le propriétaire de la collection.