Condividi tramite


Visualizzare una raccolta di schemi XML archiviata

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

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 schemi XML, è possibile usare 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 AdventureWorks2022 .

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

Vedi anche