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. Esses são representados pelo elemento <xsd:any>.
Componentes curinga de atributo. Esses são representados pelo elemento <xsd:anyAttribute>.
Os elementos de caractere curinga, <xsd:any> e <xsd:anyAttribute>, oferecem 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 sctrict 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 o SQL Server 2005 não oferece suporte à validação incerta, 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 de tipo anyType serão validados usando 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
Referência
Requisitos e limitações de uso de coleções de esquema XML no servidor