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