Partager via


Composants génériques et validation de contenu

Les composants génériques sont utilisés pour augmenter la flexibilité de ce qui est autorisé à apparaître dans un modèle de contenu. Ces composants sont pris en charge dans le langage XSD de la manière suivante :

  • Composants génériques d’élément. Ceux-ci sont représentés par l’élément <xsd :any> .

  • Composants génériques d’attribut. Elles sont représentées par l’élément <xsd :anyAttribute> .

Les éléments caractères génériques suivants, <xsd :any> et <xsd :anyAttribute>, prennent en charge l’utilisation d’un attribut processContents . Cela vous permet de spécifier une valeur qui indique comment les applications XML gèrent la validation du contenu du document associé à ces éléments de caractères génériques. Il s’agit des différentes valeurs et de leur effet :

  • La valeur stricte spécifie que le contenu est entièrement validé.

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

  • La valeur lax spécifie que seuls les éléments et attributs pour lesquels les définitions de schéma sont disponibles sont validés.

Validation lax et éléments xs:anyType

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

L’exemple suivant illustre la validation lax. L’élément e de schéma est de type anyType . L’exemple crée des variables xml typées et illustre la validation laxiste de l’élément du 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 suivant est concluant, car la validation de <e> est réussie.

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

L’exemple suivant réussit. L’instance est acceptée, même si aucun élément <c> n’est 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 une 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

Conditions requises et limitations pour les collections de schémas XML sur le serveur