형식화된 XML과 형식화되지 않은 XML

xml 유형의 변수, 매개 변수 및 열을 만들 수 있습니다. 선택적으로 XML 스키마 컬렉션을 xml 유형의 변수, 매개 변수 또는 열과 연결할 수 있습니다. 이 경우 xml 데이터 형식 인스턴스를 형식화되었다고 합니다. 그렇지 않은 경우에는 XML 인스턴스를 형식화되지 않았다고 합니다.

XML 스키마는 다음을 제공합니다.

  • 유효성 검사 제약 조건
    형식화된 xml 인스턴스가 할당 또는 수정될 때마다 SQL Sever가 인스턴스의 유효성을 검사합니다.
  • 인스턴스 데이터에 대한 데이터 형식 정보
    스키마는 xml 데이터 형식 인스턴스에 있는 특성 및 요소의 유형에 대한 정보를 제공합니다. 유형 정보는 값에 대해 보다 정확한 작업 의미를 제공합니다. 예를 들어 숫자 산술 연산은 문자열 값이 10진수 값에서 수행할 수 있습니다. 따라서 형식화된 XML 저장소는 형식화되지 않은 XML보다 더욱 간결하게 만들 수 있습니다.

형식화된 xml 변수, 매개 변수 또는 열을 만들려면 먼저 XML 스키마 컬렉션 만들기에 따라 XML 스키마 컬렉션을 등록해야 합니다. 그런 다음 XML 스키마 컬렉션을 xml 데이터 형식의 변수, 매개 변수 또는 열과 연결할 수 있습니다. 다음 예에서는 이러한 수행 방법을 보여 줍니다.

다음 예에서는 XML 스키마 컬렉션 이름을 지정하기 위해 두 부분으로 된 명명 규칙이 사용됩니다. 첫 번째 부분은 AdventureWorks 스키마 이름이고 두 번째 부분은 XML 스키마 컬렉션 이름입니다.

1. xml 유형의 변수를 만들고 스키마 컬렉션에 연결

다음 예에서는 xml 유형의 변수를 만들고 이를 스키마 컬렉션에 연결합니다. 이 예에서 지정된 스키마 컬렉션은 이미 AdventureWorks 데이터베이스로 가져온 상태입니다.

DECLARE @x xml (Production.ProductDescriptionSchemaCollection) 

2. xml 유형의 열이 포함된 테이블을 만들고 열에 대한 스키마 지정

다음 예에서는 xml 유형의 열이 포함된 테이블을 만들고 이 열에 대한 스키마를 지정합니다.

CREATE TABLE T1(
 Col1 int, 
 Col2 xml (Production.ProductDescriptionSchemaCollection)) 

3. xml 유형의 매개 변수를 저장 프로시저에 전달

다음 예에서는 xml 유형의 매개 변수를 저장 프로시저에 전달하고 해당 변수에 대한 스키마를 지정합니다.

CREATE PROCEDURE SampleProc 
  @ProdDescription xml (Production.ProductDescriptionSchemaCollection) 
AS 

XML 스키마 컬렉션에 대한 다음 내용에 유의하십시오.

  • XML 스키마 컬렉션은 XML 스키마 컬렉션 만들기를 사용하여 등록한 데이터베이스에서만 사용할 수 있습니다.
  • 또한 문자열을 형식화된 xml 데이터 형식으로 형변환하는 경우 구문 분석 시 지정된 컬렉션에 있는 XML 스키마 네임스페이스에 따라 유효성 검사와 형식 지정이 수행됩니다.
  • 형식화된 xml 데이터 유형을 형식화되지 않은 xml 데이터 유형으로 형변환하거나 그 반대로도 할 수 있습니다.

SQL Server에서 XML을 생성하는 다른 방법은 XML 인스턴스 생성을 참조하십시오. XML을 생성한 다음 xml 데이터 형식 변수에 할당하거나 xml 유형의 열에 저장하여 추가 처리를 수행할 수 있습니다.

데이터 형식 계층에서 xml 데이터 형식은 sql_variant 및 사용자 정의 유형 아래, 기본 제공 유형 위에 표시됩니다.

4. 형식화된 xml 열을 제한하기 위한 패싯 지정

형식화된 xml 열의 경우 열에 저장된 각 인스턴스에 대해 최상위의 단일 요소만 허용하도록 열을 제한할 수 있습니다. 이렇게 하려면 다음 예에서와 같이 테이블을 만들 때 선택 항목인 DOCUMENT 패싯을 지정합니다.

CREATE TABLE T(Col1 xml 
   (DOCUMENT Production.ProductDescriptionSchemaCollection))
GO
DROP TABLE T
GO

기본적으로 형식화된 xml 열에 저장된 인스턴스는 XML 문서가 아닌 XML 콘텐츠로 저장됩니다. 이러한 설정은 다음의 경우에 허용됩니다.

  • 0개 이상의 최상위 요소
  • 최상위 요소에 있는 텍스트 노드

또한 다음 예에서와 같이 CONTENT 패싯을 추가하여 이 동작을 명시적으로 지정할 수 있습니다.

CREATE TABLE T(Col1 xml(CONTENT Production.ProductDescriptionSchemaCollection))
GO -- Default

xml 유형(형식화된 xml)을 정의하는 모든 곳에 선택 항목인 DOCUMENT/CONTENT 패싯을 지정할 수 있습니다. 예를 들어 형식화된 xml 변수를 만들 때 다음과 같이 DOCUMENT/CONTENT 패싯을 추가할 수 있습니다.

declare @x xml (DOCUMENT Production.ProductDescriptionSchemaCollection)

참고 항목

개념

XML 인스턴스 생성
XML DML(XML 데이터 수정 언어)
xml 데이터 형식
예제 XML 응용 프로그램

관련 자료

xml 데이터 형식 메서드

도움말 및 정보

SQL Server 2005 지원 받기