Een opgeslagen XML-schemaverzameling weergeven
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Nadat u een XML-schemaverzameling hebt geïmporteerd met behulp van CREATE XML SCHEMA COLLECTION, worden de schemaonderdelen opgeslagen in de metagegevens. U kunt de xml_schema_namespace intrinsieke functie gebruiken om de XML-schemaverzameling te reconstrueren. Deze functie retourneert een xml- datatype-instantie.
Met de volgende query wordt bijvoorbeeld een XML-schemaverzameling (ProductDescriptionSchemaCollection
) opgehaald uit het relationele productieschema in de AdventureWorks2022
-database.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection');
GO
Als u slechts één schema uit de XML-schemaverzameling wilt zien, kunt u XQuery opgeven op basis van het xml- typeresultaat dat wordt geretourneerd door xml_schema_namespace
.
SELECT xml_schema_namespace(N'RelationalSchemaName',N'XmlSchemaCollectionName').query('
/xs:schema[@targetNamespace="TargetNameSpace"]
');
GO
Met de volgende query worden bijvoorbeeld xml-schemagegevens voor productgarantie en onderhoud opgehaald uit de ProductDescriptionSchemaCollection
XML-schemaverzameling.
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection').query('
/xs:schema[@targetNamespace="https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain"]
');
GO
U kunt de optionele doelnaamruimte ook doorgeven als de derde parameter aan de functie xml_schema_namespace
om een specifiek schema op te halen uit de verzameling, zoals wordt weergegeven in de volgende query:
SELECT xml_schema_namespace(N'Production',N'ProductDescriptionSchemaCollection', N'https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelWarrAndMain');
GO
Wanneer u een XML-schemaverzameling maakt met behulp van CREATE XML SCHEMA COLLECTION in de database, slaat de instructie de schemaonderdelen op in de metagegevens. Alleen de schemaonderdelen die SQL Server begrijpt, worden opgeslagen. Opmerkingen, aantekeningen of niet-XSD-kenmerken worden niet opgeslagen. Daarom is het schema dat door xml_schema_namespace is gereconstrueerd, functioneel gelijk aan het oorspronkelijke schema, maar ziet het er niet noodzakelijkerwijs hetzelfde uit. U ziet bijvoorbeeld niet dezelfde voorvoegsels als in het oorspronkelijke schema. Het schema dat door xml_schema_namespace wordt geretourneerd, gebruikt t als voorvoegsel voor de doelnaamruimte en ns1, ns2enzovoort voor andere naamruimten.
Als u een identieke kopie van de XML-schema's wilt behouden, moet u het XML-schema opslaan in een bestand of in een databasetabel in een xml- typekolom.
De sys.xml_schema_collections catalogusweergave retourneert ook informatie over XML-schemaverzamelingen. Deze informatie omvat de naam van de verzameling, de aanmaakdatum en de eigenaar van de verzameling.