Exibindo uma coleção de esquema XML armazenada
Depois de você importar uma coleção de esquema XML usando CREATE XML SCHEMA COLLECTION, os componentes do esquema são armazenados nos metadados. É possível usar a função intrínseca xml_schema_namespace para reconstruir a coleção de esquema XML. Essa função retorna uma instância de tipo de dados xml.
Por exemplo, a consulta a seguir recupera uma coleção de esquema XML (ProductDescriptionSchemaCollection) do esquema relacional de produção no banco de dados AdventureWorks2008R2.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection')
GO
Para ver apenas um esquema da coleção de esquema XML, é possível especificar XQuery em relação ao resultado do tipo xml que é retornado pelo xml_schema_namespace.
SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
')
GO
Por exemplo, a consulta a seguir recupera informações do esquema XML sobre garantia e manutenção do produto da coleção de esquema XML ProductDescriptionSchemaCollection.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
')
GO
Também é possível passar o namespace opcional de destino como o terceiro parâmetro para a função xml_schema_namespace para recuperar esquema específico da coleção, conforme mostrado na consulta a seguir:
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain')
GO
Quando você cria uma coleção de esquema XML usando CREATE XML SCHEMA COLLECTION no banco de dados, a instrução armazena os componentes do esquema nos metadados. Observe que apenas os componentes de esquema que o SQL Server entende são armazenados. Todos os comentários, anotações ou atributos não-XSD não são armazenados. Portanto o esquema reconstruído pelo xml_schema_namespace é funcionalmente equivalente ao esquema original, mas não necessariamente terá a mesma aparência. Por exemplo, você não verá os mesmos prefixos que existiam no esquema original. O esquema retornado pelo xml_schema_namespace usa t como o prefixo do namespace de destino e ns1, ns2 e assim por diante, para outros namespaces.
Para manter uma cópia idêntica dos esquemas XML, você deve salvar o esquema XML em um arquivo ou em uma tabela do banco de dados em uma coluna de tipo xml.
A exibição do catálogo de sys.xml_schema_collections também retorna informações sobre coleções de esquema XML. Essas informações incluem o nome da coleção, a data de criação e o proprietário da coleção.