ワイルドカード コンポーネントと内容検証Wildcard Components and Content Validation

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

ワイルドカード コンポーネントは、コンテンツ モデルで使用できる表現の柔軟性を高めるために使用されます。Wildcard components are used to increase flexibility in what is allowed to appear in a content model. ワイルドカード コンポーネントは、次のように XSD 言語でサポートされています。These components are supported in the XSD language in the following ways:

  • 要素ワイルドカード コンポーネント。Element wildcard components. これらは <xsd:any> 要素で表現されます。These are represented by the <xsd:any> element.

  • 属性ワイルドカード コンポーネント。Attribute wildcard components. これらは <xsd:anyAttribute> 要素で表現されます。These are represented by the <xsd:anyAttribute> element.

両方のワイルドカード文字要素 ( <xsd:any> および <xsd:anyAttribute> ) で processContents 属性を使用できます。Both wildcard character elements, <xsd:any> and <xsd:anyAttribute>, support the use of a processContents attribute. この属性を使用して、ワイルドカード文字要素で関連付けられるドキュメントの内容の違反を、XML アプリケーションで検証する方法を示す値を指定できます。This lets you specify a value that indicates how XML applications handle the validation of document content associated with these wildcard character elements. 検証方法を示す値には、次のようにそれぞれ異なる効果があります。These are the different values and their effect:

  • strict 値は、内容を完全に検証することを指定します。The strict value specifies that the contents are fully validated.

  • skip 値は、内容を検証しないことを指定します。The skip value specifies that the contents are not validated.

  • lax 値は、スキーマ定義が有効な要素と属性だけを検証することを指定します。The lax value specifies that only elements and attributes for which schema definitions are available are validated.

lax 検証と xs:anyType 要素Lax Validation and xs:anyType Elements

XML スキーマの仕様では、 anyType 型の要素には lax 検証が使用されています。The XML Schema specification uses lax validation for elements of the anyType type. SQL Server 2005 (9.x)SQL Server 2005 (9.x) では lax 検証をサポートしていなかったので、 anyType型の要素にも strict 検証が適用されていました。Because SQL Server 2005 (9.x)SQL Server 2005 (9.x) did not support lax validation, strict validation was applied for elements of the anyType. SQL Server 2008SQL Server 2008からは lax 検証がサポートされるようになったため、Beginning with SQL Server 2008SQL Server 2008, lax validation is supported. anyType 型の要素の内容は lax 検証を使用して検証されます。Content of elements of type anyType will be validated using lax validation.

次の例は、lax 検証を示しています。The following example illustrates the lax validation. スキーマ要素 eanyType 型です。The schema element e is of the anyType type. この例では、型指定された xml 変数を作成し、 anyType 型の要素の lax 検証を示します。The example creates typed xml variables and illustrates the lax validation of the element of the anyType type.

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> の検証が成功するので、次の例は成功します。The following example succeeds, because the validation of <e> is successful:

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

次の例は成功します。The following example succeeds. 要素 <c> はスキーマで定義されていませんが、インスタンスは受け入れられます。The instance is accepted, even though no element <c> is defined in the schema:

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

次の例の XML インスタンスは拒否されます。これは、 <a> 要素の定義で文字列値が許可されていないためです。The XML instance in the following example is rejected, because the definition of the <a> element does not allow a string value.

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

参照See Also

サーバー上の XML スキーマ コレクションの要件と制限Requirements and Limitations for XML Schema Collections on the Server