Compartir a través de


Componentes comodín y validación de contenido

Los componentes comodín se usan para aumentar la flexibilidad en lo que se permite que aparezcan en un modelo de contenido. Estos componentes se admiten en el lenguaje XSD de las maneras siguientes:

  • Componentes de elementos comodín. Estos se representan mediante el <elemento xsd:any> .

  • Componentes de comodín de atributo. Estos se representan mediante el <elemento xsd:anyAttribute> .

Ambos elementos de carácter comodín, <xsd:any> y <xsd:anyAttribute>, admiten el uso de un atributo processContents. Esto le permite especificar un valor que indica cómo las aplicaciones XML controlan la validación del contenido del documento asociado a estos elementos de caracteres comodín. Estos son los distintos valores y su efecto:

  • El valor estricto especifica que el contenido está totalmente validado.

  • El valor skip especifica que el contenido no se valida.

  • El valor lax especifica que solo se validan los elementos y atributos para los que están disponibles las definiciones de esquema.

Validación laxa y elementos xs:anyType

La especificación de esquema XML usa la validación lax para los elementos del tipo anyType . Dado que SQL Server 2005 no admite la validación lax, se aplicó una validación estricta para los elementos de anyType. A partir de SQL Server 2008, se admite la validación lax. El contenido de los elementos de tipo anyType se validará mediante la validación lax.

En el ejemplo siguiente se ilustra la validación poco estricta. El elemento e schema es del tipo anyType . En el ejemplo se crean variables xml con tipo y se ilustra la validación laxa del elemento de 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  

El ejemplo siguiente se realiza correctamente, ya que la validación de <e> es correcta:

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

El siguiente ejemplo tiene éxito. La instancia se acepta, aunque no haya ningún elemento <c> definido en el esquema:

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

Se rechaza la instancia XML del ejemplo siguiente, porque la definición del <a> elemento no permite un valor de cadena.

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

Véase también

Requisitos y limitaciones de las colecciones de esquemas XML en el servidor