Aracılığıyla paylaş


Kanonik formlar ve desen sınırlamaları

xsd desen model için Basit türlerin sözlü alan kısıtlaması sağlar.Desen kısıtlama olan birden fazla olası sözlü sunumu için bir türde koyduğunuzda, bazı değerler doğrulama sırasında beklenmeyen davranışlara neden olabilir.

Bu değerler, sözlü sunularını veritabanında saklanması nedeniyle, bu davranış oluşur.Bu nedenle, değerler çıktı olarak sıralanmış, kurallı kendi sunumlarını dönüştürülür.Bir belge, kanonik türü için desen kısıtlama ile uyumlu bir değer içeriyorsa, bir kullanıcı yeniden dener belge reddedilir.

Bunu önlemek için SQL Server herhangi bir xml belgesi içeren değerleri yeniden, edilemiyor taktıysanız, desen kısıtlamaları tarafından ihlali nedeniyle reddederkurallı kendi formlarına. Örneğin, değeri "33.000" türetilen bir tür karşı doğrulamaz xs:decimal "33\.0+" bir desen kısıtlaması ile."33.000 Rağmen" Bu desen (kanonik, "33") ile uyumludur ve desteklemez.

Bu nedenle, aşağıdaki temel türlerinden türetilmiþ türleri için desen özellikleri uyguladığınızda dikkatli olmalısınız: boolean, decimal, float, double, dateTime, time, date, hexBinary, and base64Binary.SQL Server issues a warning when you add any such components to a schema collection.

Kayan nokta deðerlerinin günümüzdeki serileştirmek benzer bir sorun vardır.Kayan nokta türü seri hale getirme algoritması tarafından kullanılan nedeniyle SQL Server, onu olası benzer değerleri paylaşan aynı kanonik form.Kayan nokta değeri seri ve daha sonra yeniden taktıysanız, değerini biraz değişebilir.Nadiren de olsa, bunu kendi türüne reinsertion için aşağıdaki özellikleri birini ihlal eden bir değer neden olabilir: Numaralandýrma, minInclusive, minExclusive, maxInclusive, veya maxExclusive.Bunu önlemek için SQL Server ondan türetilmiş türlerinden herhangi değerleri reddeder xs:float veya xs:double , yapamazsınız sıralanmış ve yeniden taktıysanız.