Componentes curingas e validação de conteúdo
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
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>
.
Ambos 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 strict especifica que o conteúdo é completamente validado.
O valor ignorar 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 permissiva e elementos xs:anyType
A especificação do Esquema XML usa validação lax para elementos do tipo anyType . Como o SQL Server 2005 (9.x) não oferece suporte à validação permissiva, a validação rigorosa foi aplicada para os elementos do anyType. A partir do SQL Server 2008 (10.0.x), há suporte para validação permissiva. 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 apresentado 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