Condividi tramite


Visualizzazione di una raccolta di XML Schema archiviata

Dopo aver importato una raccolta di XML Schema tramite l'istruzione CREATE XML SCHEMA COLLECTION, i componenti di schema vengono archiviati nei metadati. Per ricostruire la raccolta di XML Schema, è possibile utilizzare la funzione intrinseca xml_schema_namespace. Questa funzione restituisce un'istanza del tipo di dati xml.

Ad esempio, la query seguente restituisce una raccolta di XML Schema (ProductDescriptionSchemaCollection) dallo schema relazionale di produzione nel database AdventureWorks2012 .

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

Se si desidera visualizzare solo uno schema della raccolta di XML Schema, è possibile specificare una query XQuery sul risultato di tipo xml restituito dalla funzione xml_schema_namespace.

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

Ad esempio, la query seguente recupera le informazioni di XML Schema relative alla manutenzione e alla garanzia dei prodotti dalla raccolta di schemi ProductDescriptionSchemaCollection.

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

Per recuperare uno schema specifico dalla raccolta, è inoltre possibile passare lo spazio dei nomi di destinazione facoltativo come terzo parametro della funzione xml_schema_namespace, come illustrato nella query seguente:

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

Quando si crea una raccolta di XML Schema nel database tramite l'istruzione CREATE XML SCHEMA COLLECTION, i componenti di schema vengono archiviati nei metadati. Si noti che vengono archiviati solo i componenti di schema riconosciuti da SQL Server. Non vengono archiviati commenti, annotazioni o attributi non XSD. Dal punto di vista funzionale, pertanto, lo schema ricostruito dalla funzione xml_schema_namespace è equivalente allo schema originale, ma l'aspetto non sarà necessariamente identico. Ad esempio, non verranno visualizzati gli stessi prefissi dello schema originale. Lo schema restituito dalla funzione xml_schema_namespace utilizza t come prefisso per lo spazio dei nomi di destinazione e ns1, ns2 e così via per gli altri spazi dei nomi.

Se si desidera mantenere una copia identica di XML Schema, è consigliabile salvarli in un file o in una tabella di database all'interno di una colonna di tipo xml.

La vista del catalogo sys.xml_schema_collections restituisce inoltre informazioni sulle raccolte di XML Schema, che includono il nome, la data di creazione e il proprietario della raccolta.

Vedere anche

Riferimento

Raccolte di XML Schema (SQL Server)