Componenti jolly e convalida del contenuto

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di Azure

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. Sono rappresentati dall'elemento <xsd:any>.

  • Attributo componenti jolly. Sono rappresentati dall'elemento <xsd:anyAttribute>.

Entrambi gli elementi dei caratteri jolly, <xsd:any> e <xsd:anyAttribute>, supportano l'utilizzo 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 (9.x) non supportava la convalida di tipo lax, per gli elementi di tipo anyType veniva applicata la convalida di tipo strict. A partire da SQL Server 2008 (10.0.x), è 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

Vedi anche