다음을 통해 공유


와일드카드 구성 요소 및 콘텐츠 유효성 검사

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

와일드 카드 구성 요소를 사용하여 콘텐츠 모델에 표시되는 항목의 유연성을 향상시키는 방법을 알아봅니다. 이러한 구성 요소는 다음과 같은 방법으로 XSD 언어로 지원됩니다.

  • 요소 와일드카드 구성 요소입니다. 이는 <xsd:any> 요소로 표시됩니다.

  • 특성 와일드카드 구성 요소입니다. 이는 <xsd:anyAttribute> 요소로 표시됩니다.

<xsd:any><xsd:anyAttribute> 와일드카드 문자 요소는 모두 processContents 특성의 사용을 지원합니다. 이렇게 하면 XML 애플리케이션이 이러한 와일드카드 문자 요소와 관련된 문서 콘텐츠의 유효성 검사를 처리하는 방법을 나타내는 값을 지정할 수 있습니다. 이러한 값은 서로 다른 값과 그 효과입니다.

  • strict 값은 콘텐츠의 유효성이 완전히 검사되도록 지정합니다.

  • skip 값은 콘텐츠의 유효성을 검사하지 않도록 지정합니다.

  • lax 값은 스키마 정의를 사용할 수 있는 요소와 특성만 유효성을 검사할 수 있도록 지정합니다.

Lax 유효성 검사 및 xs:anyType 요소

XML 스키마 사양은 anyType 형식의 요소에 대해 lax 유효성 검사를 사용합니다. SQL Server 2005(9.x)는 lax 유효성 검사를 지원하지 않았기 때문에 anyType의 요소에 대해 엄격한 유효성 검사가 적용되었습니다. SQL Server 2008(10.0.x)부터 lax 유효성 검사가 지원됩니다. anyType 형식 요소의 콘텐츠는 lax 유효성 검사를 사용하여 유효성을 검사합니다.

다음 예에서는 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

다음 예에서 <a> 요소의 정의는 문자열 값을 사용할 수 없기 때문에 XML 인스턴스가 거부됩니다.

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

참고 항목