Wildcard Components and Content Validation

Symbol wieloznaczny składników są używane w celu zwiększenia elastyczności dozwolonych w modelu zawartości.Składniki te są obsługiwane w języku XSD w następujący sposób:

  • Element składniki symboli wieloznacznych.Są one reprezentowane przez <xsd: wszystkie> element.

  • Atrybut składników symboli wieloznacznych.Są one reprezentowane przez <xsd:anyAttribute> element.

Oba elementy znaków wieloznacznych <xsd: wszystkie> i <xsd:anyAttribute>, obsługują processContents atrybut. Dzięki temu można określić wartość, która wskazuje, jak aplikacje XML obsługują sprawdzanie poprawności zawartości dokumentu skojarzonego z tych elementów znak symbolu wieloznacznego.Są to różne wartości i ich wpływ:

  • The strict value specifies that the contents are fully validated.

  • The skip value specifies that the contents are not validated.

  • The lax value specifies that only elements and attributes for which schema definitions are available are validated.

Sprawdzanie poprawności łagodnymi i xs:anyType elementy

Używa specyfikacji schematu XML łagodnymi Sprawdzanie poprawności elementów anyType typu.Ponieważ SQL Server 2005 nie obsługuje sprawdzania poprawności łagodnymi, ścisłe sprawdzanie poprawności zastosowano dla elementów anyType.Zaczyna się od SQL Server 2008, sprawdzanie poprawności łagodnymi jest obsługiwany. Zawartość elementów tego typu anyType będzie sprawdzany przy użyciu łagodnymi sprawdzania poprawności.

Poniższy przykład ilustruje łagodnymi sprawdzania poprawności.Element schematu e jest anyType typu.W przykładzie zostanie utworzony maszynowy XML zmiennych i ilustruje łagodnymi sprawdzania poprawności elementu anyType typu.

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

W poniższym przykładzie powiedzie się, ponieważ sprawdzanie poprawności <e> został zakończony pomyślnie:

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

W poniższym przykładzie zakończy się pomyślnie.Wystąpienie jest akceptowany, nawet jeśli żaden element <c> jest zdefiniowane w schemacie:

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

Wystąpienie XML w następującym przykładzie zostanie odrzucony, ponieważ definicja <a> element nie zezwala na ciąg znaków.

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