Jokerteckenkomponenter och innehållsverifiering

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Wildcard-komponenter används för att öka flexibiliteten i vad som får förekomma i en innehållsmodell. Dessa komponenter stöds på XSD-språket på följande sätt:

  • Elementens jokerteckenkomponenter. Dessa representeras av elementet <xsd:any> .

  • Attributkomponenter för jokertecken. Dessa representeras av elementet <xsd:anyAttribute> .

Både jokerteckenelement <xsd:any> och <xsd:anyAttribute>, stöder användning av ett processContents attribut. På så sätt kan du ange ett värde som anger hur XML-program hanterar valideringen av dokumentinnehåll som är associerat med dessa jokerteckenelement. Det här är de olika värdena och deras effekt:

  • Det strikta värdet anger att innehållet är fullständigt verifierat.

  • Skip-värdet anger att innehållet inte valideras.

  • Det lax värde anger att endast element och attribut för vilka schemadefinitioner är tillgängliga verifieras.

Lax-validering och xs:anyType-element

XML-schema-specifikationen använder lätt validering för element av typen anyType. Eftersom SQL Server 2005 (9.x) inte hade stöd för slapp validering tillämpades strikt validering för element i anyType. Från och med SQL Server 2008 (10.0.x) stöds slapp validering. Innehåll av element av typen anyType verifieras med hjälp av slapp validering.

I följande exempel visas den slappa valideringen. Schemaelementet e är av typen anyType . Exemplet skapar inskrivna XML-variabler och illustrerar den slappa valideringen av elementet av typen anyType .

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

Följande exempel lyckas eftersom valideringen av <e> lyckas:

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

Följande exempel lyckas. Instansen accepteras, även om inget element <c> har definierats i schemat:

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

XML-instansen i följande exempel avvisas eftersom definitionen av elementet <a> inte tillåter ett strängvärde.

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

Se även