Sdílet prostřednictvím


Komponenty se zástupnými znaky a ověřování obsahu

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL databáze v Microsoft Fabric

Komponenty se zástupnými znaky slouží ke zvýšení flexibility v tom, co se může v modelu obsahu zobrazovat. Tyto komponenty jsou podporovány v jazyce XSD následujícími způsoby:

  • Součásti zástupných znaků elementu Jsou reprezentovány elementem <xsd:any> .

  • Komponenty zástupných znaků atributu. Jsou reprezentovány elementem <xsd:anyAttribute> .

Prvky zástupných znaků <xsd:any> a <xsd:anyAttribute> podporují použití atributu processContents. To vám umožní zadat hodnotu, která určuje, jak aplikace XML zpracovávají ověřování obsahu dokumentu přidruženého k těmto prvkům se zástupnými znaky. Toto jsou různé hodnoty a jejich účinek:

  • Striktní hodnota určuje, že obsah je plně ověřen.

  • Hodnota přeskočení určuje, že se obsah neověřuje.

  • Laxní hodnota určuje, že jsou ověřeny pouze prvky a atributy, pro které jsou k dispozici definice schématu.

cs-CZ: Laxní validace a xs:anyType elementy

Specifikace schématu XML používá laxní ověřování pro prvky typu anyType . Vzhledem k tomu, že SQL Server 2005 (9.x) nepodporuje laxní ověřování, bylo použito přísné ověřování pro prvky anyType. Od verze SQL Server 2008 (10.0.x) je podporována volná validace. Obsah prvků typu anyType se ověří pomocí laxního ověření.

Následující příklad znázorňuje laxní ověření. Element e schématu je typu anyType . Příklad vytvoří typové proměnné XML a znázorňuje laxní ověření 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

Následující příklad je úspěšný, protože ověření <e> je úspěšné:

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

Následující příklad je úspěšný. Instance je přijata, i když ve schématu není definován žádný prvek <c> :

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

Instance XML v následujícím příkladu je odmítnuta, protože definice <a> elementu neumožňuje řetězcovou hodnotu.

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

Viz také