共用方式為


通配符元件和內容驗證

通配符元件可用來增加允許出現在內容模型中的彈性。 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 驗證來驗證。

以下範例說明鬆散的驗證。 架構元素 eanyType 型態的 。 此範例會建立具類型的 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  

另請參閱

伺服器上 XML 結構描述集合的需求與限制