Udostępnij za pośrednictwem


Wyświetlanie przechowywanej kolekcji schematów XML

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Po zaimportowaniu kolekcji schematów XML przy użyciu CREATE XML SCHEMA COLLECTIONskładniki schematu są przechowywane w metadanych. Funkcja wewnętrzna xml_schema_namespace umożliwia odtworzenie kolekcji schematów XML. Ta funkcja zwraca wystąpienie typu danych xml.

Na przykład następujące zapytanie pobiera kolekcję schematów XML (ProductDescriptionSchemaCollection) ze schematu relacyjnego produkcji w bazie danych AdventureWorks2022.

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

Jeśli chcesz wyświetlić tylko jeden schemat z kolekcji schematów XML, możesz wykonać zapytanie XQuery względem wyniku typu xml, który został zwrócony przez xml_schema_namespace.

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

Na przykład, następujące zapytanie pobiera informacje o schemacie XML dla gwarancji i konserwacji produktu z kolekcji schematów 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

Możesz również przekazać opcjonalną docelową przestrzeń nazw jako trzeci parametr do funkcji xml_schema_namespace w celu pobrania określonego schematu z kolekcji, jak pokazano w poniższym zapytaniu:

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

Podczas tworzenia kolekcji schematów XML przy użyciu funkcji CREATE XML SCHEMA COLLECTION w bazie danych instrukcja przechowuje składniki schematu w metadanych. Przechowywane są tylko składniki schematu, które rozumie program SQL Server. Wszelkie komentarze, adnotacje lub atrybuty inne niż XSD nie są przechowywane. W związku z tym schemat zrekonstruowany przez xml_schema_namespace jest funkcjonalnie równoważny oryginalnemu schematowi, ale niekoniecznie będzie wyglądać tak samo. Na przykład, nie zobaczysz tych samych prefiksów, które miałeś w oryginalnym schemacie. Schemat zwracany przez xml_schema_namespace używa t jako prefiksu docelowej przestrzeni nazw i ns1, ns2itd. dla innych przestrzeni nazw.

Jeśli chcesz zachować identyczną kopię schematów XML, powinieneś zapisać swój schemat XML w pliku lub w tabeli bazy danych w kolumnie typu xml.

Widok katalogu sys.xml_schema_collections zwraca również informacje o kolekcjach schematów XML. Te informacje obejmują nazwę kolekcji, datę utworzenia i właściciela kolekcji.

Zobacz też