Condividi tramite


Componenti jolly e convalida del contenuto

I componenti jolly vengono utilizzati per consentire una maggiore flessibilità riguardo agli elementi che è possibile includere in un modello di contenuto. Tali componenti vengono supportati nel linguaggio XSD nei modi seguenti:

  • Elemento componenti jolly. Questi elementi sono rappresentati dall'elemento <xsd:any> .

  • Attributo componenti jolly. Questi elementi sono rappresentati dall'elemento <xsd:anyAttribute> .

Entrambi gli elementi carattere jolly, <xsd:any> e <xsd:anyAttribute>, supportano l'uso di un attributo processContents . Questo attributo consente di specificare un valore che indica il modo in cui le applicazioni XML gestiscono la convalida del contenuto di documenti associato a tali elementi dei caratteri jolly. Valori diversi e relativo effetto:

  • Il valore strict specifica che viene eseguita la convalida completa del contenuto.

  • Il valore skip specifica che non viene eseguita la convalida del contenuto.

  • Il valore lax specifica che viene eseguita solo la convalida di elementi e attributi per i quali sono disponibili definizioni di schemi.

Elementi della convalida lax e del tipo xs:anyType

La specifica di XML Schema utilizza la convalida lax per elementi del tipo anyType . Poiché SQL Server 2005 non supportava la convalida lax, è stata applicata la convalida rigorosa per gli elementi di anyType. A partire da SQL Server 2008, è supportata la convalida lax. Il contenuto degli elementi del tipo anyType sarà convalidato utilizzando la convalida lax.

L'esempio seguente illustra la convalida lax. L'elemento schema e è del tipo anyType . L'esempio crea variabili xml tipizzate e illustra la convalida lax dell'elemento di tipo 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  

L'esempio seguente è corretto in quanto la convalida di <e> ha esito positivo:

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

L'esempio seguente ha esito positivo. L'istanza è accettata, anche se non è definito alcun elemento <c> nello schema:

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

L'istanza XML nell'esempio seguente è rifiutata, perché la definizione dell'elemento <a> non consente un valore della stringa.

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

Vedere anche

Requisiti e limitazioni per le raccolte di XML Schema nel server