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 usare la funzione intrinseca xml_schema_namespace. Questa funzione restituisce un'istanza del tipo di dati xml
.
Ad esempio, la query seguente recupera un insieme 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 dello schema che SQL Server comprendere. 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 usa t come prefisso per lo spazio dei nomi di destinazione e ns1, ns2e 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 anche informazioni sulle raccolte di XML Schema, che includono il nome, la data di creazione e il proprietario della raccolta.