Compartilhar via


Componentes curinga e validação de conteúdo

Componentes curinga são usados para aumentar a flexibilidade do que é permitido aparecer em um modelo de conteúdo. Esses componentes têm suporte na linguagem XSD das seguintes maneiras:

  • Componentes curinga de elemento. Eles são representados pelo< elemento xsd:any>.

  • Componentes curinga de atributo. Eles são representados pelo< elemento xsd:anyAttribute>.

Ambos os elementos de caractere curinga, <xsd:any> e <xsd:anyAttribute>, dão suporte ao uso de um atributo processContents . Isso permite especificar um valor que indica como aplicativos XML tratam a validação do conteúdo do documento associado a esses elementos de caracteres curinga. Estes são os diferentes valores e seus efeitos:

  • O valor strict especifica que o conteúdo é completamente validado.

  • O valor skip especifica que o conteúdo não é validado.

  • O valor lax especifica que apenas elementos e atributos para os quais definições de esquema estão disponíveis são validados.

Validação incerta e elementos xs:anyType

A especificação do Esquema XML usa validação lax para elementos do tipo anyType . Como SQL Server 2005 não deu suporte à validação frouxa, a validação estrita foi aplicada para elementos do anyType. A partir do SQL Server 2008, há suporte para a validação incerta. Conteúdo de elementos do tipo anyType serão validados usando a validação incerta.

O exemplo a seguir ilustra a validação incerta. O elemento do esquema e é do tipo anyType . O exemplo cria variáveis xml com tipo e ilustra a validação incerta do elemento do 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  

O exemplo a seguir tem êxito, porque a validação de <e> tem êxito:

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

O seguinte exemplo tem êxito. A instância é aceita, embora nenhum elemento <c> esteja definido no esquema:

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

A instância XML no exemplo a seguir é rejeitada, porque a definição do elemento <a> não permite um valor de cadeia de caracteres.

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

Consulte Também

Requisitos e limitações para o uso de Coleções de Esquemas XML no servidor