Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La facette de modèle XSD permet de restreindre l’espace lexical des types simples. Lorsqu’une restriction de modèle est mise sur un type pour lequel il existe plusieurs représentations lexicales possibles, certaines valeurs peuvent entraîner un comportement inattendu lors de la validation.
Ce comportement se produit parce que les représentations lexicales de ces valeurs ne sont pas stockées dans la base de données. Par conséquent, les valeurs sont converties en représentations canoniques lorsqu’elles sont sérialisées en tant que sortie. Si un document contient une valeur dont le formulaire canonique ne respecte pas la restriction de modèle pour son type, le document est rejeté si un utilisateur tente de le réinsérer.
Pour éviter cela, SQL Server rejette tout document XML qui contient des valeurs qui ne peuvent pas être réinsérées, en raison de la violation des restrictions de modèle par leurs formes canoniques. Par exemple, la valeur « 33.000 » ne valide pas par rapport à un type dérivé de xs :decimal avec une restriction de modèle « 33\.0 + ». Bien que « 33.000 » soit conforme à ce modèle, la forme canonique , « 33 », ne le fait pas.
Par conséquent, vous devez être prudent lorsque vous appliquez des facettes de modèle aux types dérivés des types primitifs suivants : boolean, , decimalfloat, , double, , dateTime, , hexBinarytimedateet .base64Binary SQL Server émet un avertissement lorsque vous ajoutez des composants de ce type à une collection de schémas.
La sérialisation imprécise des valeurs à virgule flottante présente un problème similaire. En raison de l’algorithme de sérialisation à virgule flottante utilisé par SQL Server, il est possible que des valeurs similaires partagent la même forme canonique. Lorsqu’une valeur à virgule flottante est sérialisée, puis réinsérée, sa valeur peut changer légèrement. Dans de rares cas, cela peut entraîner une valeur qui enfreint l’une des facettes suivantes pour son type de réinsération : énumération, minInclusive, minExclusive, maxInclusive ou maxExclusive. Pour éviter cela, SQL Server rejette toutes les valeurs de types dérivés xs:float ou xs:double qui ne peuvent pas être sérialisées et réinsérées.
Voir aussi
Conditions requises et limitations pour les collections de schémas XML sur le serveur