Compartilhar via


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

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.