Freigeben über


Wildcardkomponenten und Inhaltsüberprüfung

Mithilfe von Wildcardkomponenten wird die Flexibilität hinsichtlich der erlaubten Elemente in einem Inhaltsmodell erhöht. Diese Komponenten werden auf folgende Weise in der XSD-Sprache unterstützt:

  • Element-Wildcard-Komponenten. Diese werden durch das <Element "xsd:any> " dargestellt.

  • Attribut-Wildcardkomponenten. Diese werden durch das <xsd:anyAttribute-Element> dargestellt.

Sowohl Wildcardzeichenelemente, <xsd:any> als auch <xsd:anyAttribute>, unterstützen die Verwendung eines processContents-Attributes. Auf diese Weise können Sie einen Wert angeben, der angibt, wie XML-Anwendungen die Überprüfung von Dokumentinhalten behandeln, die diesen Wildcardzeichenelementen zugeordnet sind. Dies sind die unterschiedlichen Werte und deren Wirkung:

  • Der strenge Wert gibt an, dass der Inhalt vollständig überprüft wird.

  • Der Skip-Wert gibt an, dass der Inhalt nicht überprüft wird.

  • Der lax-Wert gibt an, dass nur Elemente und Attribute überprüft werden, für die Schemadefinitionen verfügbar sind.

Lockere Validierung und xs:anyType-Elemente

Die XML-Schemaspezifikation verwendet eine lax-Überprüfung für Elemente des anyType-Typs . Da sql Server 2005 die Lax-Überprüfung nicht unterstützt hat, wurde eine strenge Überprüfung auf Elemente des anyType-Elements angewendet. Ab SQL Server 2008 wird die lax-Überprüfung unterstützt. Der Inhalt von Elementen vom Typ anyType wird mithilfe der lax-Überprüfung überprüft.

Im folgenden Beispiel wird die lockere Validierung veranschaulicht. Das Schemaelement e weist den anyType-Typ auf. Im Beispiel werden typierte XML-Variablen erstellt und die laxe Überprüfung des Elements des anyType-Typs veranschaulicht.

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  

Das folgende Beispiel ist erfolgreich, da die Überprüfung <e> erfolgreich ist:

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

Das folgende Beispiel ist erfolgreich. Die Instanz wird akzeptiert, obwohl kein Element <c> im Schema definiert ist:

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

Die XML-Instanz im folgenden Beispiel wird abgelehnt, da die Definition des <a> Elements keinen Zeichenfolgenwert zulässt.

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

Siehe auch

Anforderungen und Einschränkungen für XML-Schemasammlungen auf dem Server