Aracılığıyla paylaş


Joker karakter bileşenleri ve içerik doğrulama

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Joker karakter bileşenleri, içerik modelinde görünmesine izin verilen öğelerde esnekliği artırmak için kullanılır. Bu bileşenler XSD dilinde aşağıdaki yollarla desteklenir:

  • Öğe joker karakter bileşenleri. Bunlar öğesiyle <xsd:any> temsil edilir.

  • Joker karakter öznitelik bileşenleri. Bunlar öğesiyle <xsd:anyAttribute> temsil edilir.

Her iki joker karakter öğesi de, <xsd:any> ve <xsd:anyAttribute>, processContents özniteliğinin kullanılmasını destekler. Bu, XML uygulamalarının bu joker karakter öğeleriyle ilişkili belge içeriğini doğrulamayı nasıl işlediğini gösteren bir değer belirtmenize olanak tanır. Farklı değerler ve bunların etkisi şunlardır:

  • katı değeri, içeriğin tam olarak doğrulandığını belirtir.

  • Atlama değeri, içeriğin doğrulanmamış olduğunu belirtir.

  • lax değeri, yalnızca şema tanımlarının kullanılabildiği öğelerin ve özniteliklerin doğrulandığını belirtir.

Lax doğrulaması ve xs:anyType öğeleri

XML Şeması belirtimi, gevşek doğrulamayı anyType türündeki öğeler için kullanır. SQL Server 2005 (9.x) gevşek doğrulamayı desteklemediğinden , anyType öğeleri için katı doğrulama uygulandı. SQL Server 2008 'den (10.0.x) başlayarak, gevşek doğrulama desteklenir. anyType türünde öğelerin içeriği, lax doğrulaması kullanılarak doğrulanır.

Aşağıdaki örnekte, lax doğrulaması gösterilmektedir. Şema öğesi eanyType türündedir. Örnek, türü belirlenmiş xml değişkenleri oluşturur ve anyType türünün öğesinin gevşek doğrulamasını gösterir.

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

Doğrulaması başarılı olduğundan <e> aşağıdaki örnek başarılı olur:

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>1</a><b>data</b></e>';
GO

Aşağıdaki örnek başarılı olur. Şemada hiçbir öğe <c> tanımlanmasa bile örnek kabul edilir:

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>1</a><c>Wrong</c><b>data</b></e>';
GO

Aşağıdaki örnekteki XML örneği, öğesinin <a> tanımı bir dize değerine izin vermediğinden reddedilir.

DECLARE @var XML(SC);
SET @var = '<e xmlns="http://ns"><a>Wrong</a><b>data</b></e>';
SELECT @var;
GO

Ayrıca bakınız