Wyświetlanie przechowywanej kolekcji schematów XML
Dotyczy:SQL Server
Azure SQL Database
Azure 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.