Ver una colección de esquemas XML almacenada
Después de importar una colección de esquemas XML mediante CREATE XML SCHEMA COLLECTION, los componentes del esquema se almacenan en los metadatos. Puede utilizar la función intrínseca xml_schema_namespace para reconstruir la colección de esquemas XML. La función devuelve una instancia de tipo de datos xml.
Por ejemplo, la siguiente consulta recupera una colección de esquemas XML (ProductDescriptionSchemaCollection) del esquema relacional de producción de la base de datos AdventureWorks.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection')
GO
Si sólo desea ver un esquema de la colección de esquemas XML, puede especificar XQuery en el resultado de tipo xml devuelto por xml_schema_namespace.
SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
')
GO
La siguiente consulta, por ejemplo, recupera información de garantía del producto y de mantenimiento del esquema XML a partir de la colección de esquemas 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
También puede pasar el espacio de nombres de destino opcional como tercer parámetro a la función xml_schema_namespace con el fin de recuperar un esquema específico de la colección, tal y como muestra la consulta siguiente:
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain')
GO
Al crear una colección de esquemas XML mediante CREATE XML SCHEMA COLLECTION en la base de datos, la instrucción almacena los componentes de esquema en los metadatos. Observe que sólo se almacenarán aquellos componentes de esquema que SQL Server pueda interpretar. No se almacenarán comentarios, anotaciones ni atributos que no sean XSD. Por tanto, el esquema reconstruido por xml_schema_namespace será funcionalmente equivalente al esquema original, pero no tendrá necesariamente la misma apariencia. Por ejemplo, no se observarán los mismos prefijos del esquema original. El esquema devuelto por xml_schema_namespace utiliza t como el prefijo para el espacio de nombres de destino y ns1, ns2, etc., para otros espacios de nombres.
Si desea conservar una copia idéntica de los esquemas XML, debería guardarlos en un archivo o en una tabla de base de datos en una columna de tipo xml.
La vista de catálogo sys.xml_schema_collections también devuelve información sobre las colecciones de esquemas XML. La información consiste en el nombre la colección, la fecha de creación y el nombre del propietario.