通配符元件可用來增加允許出現在內容模型中的彈性。 XSD 語言支援這些元件的方式如下:
元素通配符元件。 這些是由 <xsd:any> 元素表示。
屬性通配符組件。 這些是由 xsd:anyAttribute> 元素表示<。
通配符元素 <xsd:any> 和 <xsd:anyAttribute> 都支援使用 processContents 屬性。 這可讓您指定值,指出 XML 應用程式如何處理與這些通配符元素相關聯的檔案內容驗證。 這些是不同的值及其效果:
strict 值會指定內容已完整驗證。
skip 值會指定不會驗證內容。
lax 值指定只會驗證可用的架構定義的元素和屬性。
寬鬆驗證與 xs:anyType 元素
XML 架構規格會針對 anyType 類型的元素使用 lax 驗證。 因為 SQL Server 2005 不支援 lax 驗證,因此會針對 anyType 的專案套用嚴格的驗證。 從 SQL Server 2008 開始,支援寬鬆驗證。 anyType 類型的項目內容將會使用 lax 驗證來驗證。
以下範例說明鬆散的驗證。 架構元素 e 是 anyType 型態的 。 此範例會建立具類型的 xml 變數,並展示對 anyType 類型元素的寬鬆驗證。
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
下列範例會成功,因為驗證 <e> 成功:
DECLARE @var XML(SC)
SET @var = '<e xmlns="http://ns"><a>1</a><b>data</b></e>'
GO
下列範例會成功。 即使在架構中未定義任何元素 <c>,仍會接受此實例。
DECLARE @var XML(SC)
SET @var = '<e xmlns="http://ns"><a>1</a><c>Wrong</c><b>data</b></e>'
GO
下列範例中的 XML 實例遭到拒絕,因為 元素的定義 <a> 不允許字串值。
DECLARE @var XML(SC)
SET @var = '<e xmlns="http://ns"><a>Wrong</a><b>data</b></e>'
SELECT @var
GO