Composants génériques et validation du contenu

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Les composants génériques sont utilisés pour accroître la flexibilité en termes d'éléments pouvant apparaître dans un modèle de contenu. Ils sont pris en charge comme suit dans le langage XSD :

  • Composants génériques éléments. Ils sont représentés par l'élément <xsd:any>.

  • Composants génériques attributs. Ils sont représentés par l'élément <xsd:anyAttribute>.

Les deux éléments de caractères génériques et <xsd:anyAttribute>, <xsd:any> prennent en charge l’utilisation d’un processContents attribut. Grâce à lui, vous pouvez préciser une valeur indiquant comment les applications XML vont gérer la validation du contenu des documents associé à ces éléments de caractères génériques. Les valeurs possibles et leurs effets sont décrits ci-dessous :

  • La valeur strict indique que le contenu est entièrement validé.

  • La valeur skip spécifie que le contenu n’est pas validé.

  • La valeur lax indique que sont validés uniquement les éléments et les attributs pour lesquels des définitions de schéma sont disponibles.

Validation lax et éléments xs:anyType

La spécification de schéma XML utilise la validation de type lax pour les éléments du type anyType . Étant donné que SQL Server 2005 (9.x) ne prenait pas en charge la validation lax, la validation stricte a été appliquée pour les éléments de anyType. À compter de SQL Server 2008 (10.0.x), la validation lax est prise en charge. Le contenu des éléments de type anyType sera validé à l'aide de la validation de type lax.

L'exemple suivant illustre la validation de type lax. L'élément de schéma e est de type anyType . L'exemple crée des variables xml typées et illustre la validation de type lax de l'élément de type 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'exemple ci-dessous aboutit, car la validation de <e> réussit.

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

L'exemple ci-dessous aboutit. L'instance est acceptée, bien qu'aucun élément <c> ne soit défini dans le schéma :

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

L’instance XML de l’exemple suivant est rejetée, car la définition de l’élément <a> n’autorise pas de valeur de chaîne.

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

Voir aussi