Share via


Wildcard-onderdelen en inhoudsvalidatie

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Wildcardcomponenten worden gebruikt om de flexibiliteit te vergroten van wat in een inhoudsmodel is toegestaan. Deze onderdelen worden op de volgende manieren ondersteund in de XSD-taal:

  • Elementen met jokertekens. Deze worden vertegenwoordigd door het <xsd:any> element.

  • Attribuut wildcard-onderdelen. Deze worden vertegenwoordigd door het <xsd:anyAttribute> element.

Zowel jokertekenelementen als <xsd:any><xsd:anyAttribute>, ondersteunen het gebruik van een processContents kenmerk. Hiermee kunt u een waarde opgeven die aangeeft hoe XML-toepassingen de validatie verwerken van documentinhoud die is gekoppeld aan deze elementen met jokertekens. Dit zijn de verschillende waarden en het effect ervan:

  • De strikte waarde geeft aan dat de inhoud volledig is gevalideerd.

  • De waarde voor overslaan geeft aan dat de inhoud niet wordt gevalideerd.

  • De lax-waarde geeft aan dat alleen elementen en kenmerken waarvoor schemadefinities beschikbaar zijn, worden gevalideerd.

Lax-validatie en xs:anyType-elementen

De specificatie van het XML-schema maakt gebruik van laxvalidatie voor elementen van het anyType-type . Omdat SQL Server 2005 (9.x) geen ondersteuning biedt voor laxvalidatie, is strikte validatie toegepast op elementen van het anyType. Vanaf SQL Server 2008 (10.0.x) wordt laxvalidatie ondersteund. Inhoud van elementen van het type anyType wordt gevalideerd met laxvalidatie.

In het volgende voorbeeld wordt de niet-strikte validatie geïllustreerd. Het schema-element e is van het anyType-type . In het voorbeeld worden getypte XML-variabelen gemaakt en wordt de laxvalidatie van het element van het anyType-type geïllustreerd.

CREATE XML SCHEMA COLLECTION SC AS '
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://ns">
   <element name="e" type="anyType"/>
   <element name="a" type="byte"/>
   <element name="b" type="string"/>
</schema>';
GO

Het volgende voorbeeld slaagt omdat de validatie <e> is geslaagd:

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>1</a><b>data</b></e>';
GO

Het volgende voorbeeld slaagt. Het exemplaar wordt geaccepteerd, ook al is er geen element <c> gedefinieerd in het schema:

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>1</a><c>Wrong</c><b>data</b></e>';
GO

Het XML-exemplaar in het volgende voorbeeld wordt geweigerd, omdat de definitie van het <a> element geen tekenreekswaarde toestaat.

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>Wrong</a><b>data</b></e>';
SELECT @var;
GO

Zie ook