Поделиться через


Просмотр хранимой коллекции схем XML

После импорта коллекции XML-схем с помощью команды Создать коллекцию схем XMLкомпоненты схемы будут храниться в метаданных. Для восстановления коллекции схем XML можно использовать встроенную функцию xml_schema_namespace. Эта функция возвращает xml экземпляр типа данных.

Например, следующий запрос извлекает коллекцию XML-схем (ProductDescriptionSchemaCollection) из рабочей реляционной схемы в базе данных AdventureWorks2012 .

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

Если вы хотите увидеть только одну схему из коллекции схем XML, можно указать XQuery для xml результата типа, возвращаемого xml_schema_namespace.

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

Например, следующий запрос находит сведения об XML-схеме поддержки и гарантий на продукт в коллекции 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  

Можно также передать целевое пространство имен как необязательный третий параметр в функцию xml_schema_namespace, чтобы получить из коллекции конкретную схему, как показано в следующем запросе:

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

Когда в базе данных создается коллекция XML-схем с помощью инструкции CREATE XML SCHEMA COLLECTION, она сохраняет компоненты схемы в метаданных. Обратите внимание, что хранятся только компоненты схемы, которые понимает SQL Server. Любые комментарии, заметки или атрибуты, отличные от XSD, не хранятся. Следовательно, схема, повторно сконструированная посредством функции xml_schema_namespace , функционально эквивалентна первоначальной схеме, но не обязательно будет выглядеть так же. Например, вы не увидите одинаковые префиксы, которые были в исходной схеме. Схема, возвращаемая функцией xml_schema_namespace , использует префикс t для целевого пространства имен и префиксы ns1, ns2и так далее для всех остальных.

Если вы хотите сохранить идентичную копию XML-схем, следует сохранить XML-схему в файле или в таблице базы данных в столбце xml типа.

Представление каталога sys.xml_schema_collections также возвращает сведения о коллекциях XML-схем. Сюда входят, например сведения об имени коллекции, дате создания и владельце коллекции.

См. также

Коллекции XML-схем (SQL Server)