Compartilhar via


Formulários canônicos e restrições de padrão

A faceta de padrão XSD permite a restrição do espaço léxico de tipos simples. Quando uma restrição de padrão é colocada em um tipo para o qual há mais de uma representação lexical possível, alguns valores podem causar um comportamento inesperado após a validação.

Esse comportamento ocorre porque representações léxicos desses valores não são armazenadas no banco de dados. Portanto, os valores são convertidos em suas representações canônicas quando serializados como saída. Se um documento contiver um valor cujo formulário canônico não esteja em conformidade com a restrição de padrão para seu tipo, o documento será rejeitado se um usuário tentar reinseri-lo.

Para evitar isso, o SQL Server rejeita qualquer documento XML que contenha valores que não podem ser reinseridos devido à violação das restrições de padrão por seus formulários canônicos. Por exemplo, o valor "33.000" não é validado em relação a um tipo derivado de xs:decimal com uma restrição de padrão de "33\.0+". Embora "33.000" esteja em conformidade com esse padrão, a forma canônica, "33", não.

Portanto, você deve ter cuidado ao aplicar facetas padrão a tipos derivados dos seguintes tipos primitivos: boolean, , decimal, float, double, dateTime, , time, date, , hexBinarye base64Binary. O SQL Server emite um aviso quando você adiciona esses componentes a uma coleção de esquemas.

A serialização imprecisa de valores de ponto flutuante tem um problema semelhante. Devido ao algoritmo de serialização de ponto flutuante usado pelo SQL Server, é possível que valores semelhantes compartilhem a mesma forma canônica. Quando um valor de ponto flutuante é serializado e reinserido, seu valor pode mudar ligeiramente. Em casos raros, isso pode resultar em um valor que viola uma das seguintes facetas para seu tipo na reinserção: enumeração, minInclusive, minExclusive, maxInclusive ou maxExclusive. Para evitar isso, o SQL Server rejeita quaisquer valores de tipos derivados xs:float ou xs:double que não podem ser serializados e reinseridos.

Consulte Também

Requisitos e limitações para coleções de esquema XML no servidor