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

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

와일드카드 구성 요소는 콘텐츠 모델에 표시할 수 있는 기능의 유연성을 높이는 데 사용됩니다. 이러한 구성 요소는 다음과 같은 방법으로 XSD 언어로 지원됩니다.

  • 요소 와일드카드 구성 요소입니다. 이러한 항목은 요소로 <xsd:any> 표시됩니다.

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

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

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

  • 건너뛰기 값은 내용의 유효성을 검사하지 않도록 지정합니다.

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

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

XML 스키마 사양은 anyType 형식의 요소에 대해 lax 유효성 검사를 사용합니다. SQL Server 2005(9.x)는 느슨한 유효성 검사를 지원하지 않았기 때문에 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

다음 예제의 XML 인스턴스는 요소의 <a> 정의에서 문자열 값을 허용하지 않으므로 거부됩니다.

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

참고 항목