Visualizzazione di un insieme di schemi XML archiviato
Dopo aver importato un insieme di schemi XML tramite l'istruzione CREATE XML SCHEMA COLLECTION, i componenti di schema vengono archiviati nei metadati. Per ricostruire l'insieme di schemi XML, è possibile utilizzare la funzione intrinseca xml_schema_namespace. Questa funzione restituisce un'istanza del tipo di dati xml.
Ad esempio, la query seguente restituisce un insieme di schemi XML (ProductDescriptionSchemaCollection
) dallo schema relazionale di produzione nel database AdventureWorks.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection')
GO
Se si desidera visualizzare solo uno schema dell'insieme di schemi XML, è 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 dello schema XML relativo alla manutenzione e alla garanzia dei prodotti dall'insieme 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 dall'insieme, è 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 un insieme di schemi XML 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 degli schemi XML, è 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 sugli insiemi di schemi XML, che includono il nome, la data di creazione e il proprietario dell'insieme.
Vedere anche
Riferimento
Gestione di insiemi di schemi XML sul server