Symbol wieloznaczny składników i poprawności zawartości

Symbol wieloznaczny składniki są używane do zwiększenia elastyczności w 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: wszelkie> elementu.

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

Zarówno elementy znaków wieloznacznych <xsd: wszelkie> i <xsd:anyAttribute>, obsługuje 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:

  • Ściśle wartość określa, czy zawartość są w pełni zatwierdzone.

  • Pominąć wartość określa, że zawartość nie są sprawdzane.

  • Lax określa wartość sprawdzania poprawności tylko elementy i atrybuty schematu, których definicje są dostępne.

Lax sprawdzania poprawności i xs:anyType elementy

Używa specyfikacji schematu XML lax sprawdzania poprawności dla elementów anyType typu.Ponieważ SQL Server 2005 nie obsługuje sprawdzania poprawności lax, ścisłe sprawdzanie poprawności zastosowano dla elementów anyType. Począwszy od SQL Server 2008, obsługiwane sprawdzanie poprawności lax.Zawartość elementów typu anyType będą sprawdzane przy użyciu lax sprawdzania poprawności.

Poniższy przykład ilustruje lax sprawdzania poprawności.Element schematu e jest anyType typu.W przykładzie tworzone maszynowy xml zmiennych i ilustruje lax 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

Poniższy przykład powiedzie się, ponieważ sprawdzanie poprawności <e> jest pomyślne:

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

Poniższy przykład powiedzie się.Zaakceptowane wystąpienie, nawet jeśli żaden element <c> jest zdefiniowany w schemacie:

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

XML wystąpienie w następującym przykładzie zostanie odrzucony, ponieważ definicja <a> elementu nie zezwala na wartości ciąg.

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