주석이 추가된 XSD 스키마 소개(SQLXML 4.0)

XSD(XML 스키마 정의) 언어를 사용하여 관계형 데이터의 XML 뷰를 만들 수 있습니다. 그런 다음 XPath(XML Path Language) 쿼리를 사용하여 뷰를 쿼리할 수 있습니다. 이는 CREATE VIEW 문을 사용하여 뷰를 만들고 뷰에 대해 SQL 쿼리를 지정하는 것과 유사합니다.

XML 스키마는 XML 문서의 구조뿐만 아니라 문서 내의 데이터에 대한 다양한 제약 조건을 설명합니다. 스키마에 대해 XPath 쿼리를 지정하면 XPath 쿼리가 실행되는 스키마에 따라 반환되는 XML 문서의 구조가 결정됩니다.

XSD 스키마에서는 <xsd:schema> 요소로 전체 스키마를 묶습니다. 즉, 모든 요소 선언을 <xsd:schema> 요소 내에 포함해야 합니다. 스키마가 있는 네임스페이스와 스키마에서 사용되는 네임스페이스를 정의하는 특성을 <xsd:schema> 요소의 속성으로 설정할 수 있습니다.

유효한 XSD 스키마에는 <xsd:schema> 요소가 다음과 같이 정의되어 있어야 합니다.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<!-- additional schema definitions here -->
</xsd:schema>

<xsd:schema> 요소는 http://www.w3.org/2001/XMLSchema에 있는 XML 스키마 네임스페이스 사양에서 파생됩니다.

XSD 스키마에 주석 추가

데이터베이스에 대한 매핑을 설명하는 주석을 XSD 스키마에 추가하여 데이터베이스를 쿼리하고 결과를 XML 문서 형식으로 반환할 수 있습니다. 주석을 사용하여 XSD 스키마를 데이터베이스 테이블 및 열에 매핑할 수 있습니다. XSD 스키마로 생성된 XML 뷰에 대해 XPath 쿼리를 지정하여 데이터베이스를 쿼리하고 결과를 XML 형식으로 얻을 수 있습니다.

[!참고]

Microsoft SQLXML 4.0의 XSD 스키마 언어는 SQL Server 2000에서 주석이 추가된 XDR(XML-Data Reduced) 스키마 언어에 도입된 주석을 지원합니다. 주석이 추가된 XDR은 SQLXML 4.0에서 더 이상 사용되지 않습니다.

관계형 데이터베이스 컨텍스트에서는 임의의 XSD 스키마를 관계형 저장소에 매핑하는 것이 유용합니다. 이를 수행하는 한 가지 방법은 XSD 스키마에 주석을 추가하는 것입니다. 주석이 추가된 XSD 스키마를 매핑 스키마라고 하며 매핑 스키마는 XML 데이터가 관계형 저장소에 매핑되는 방법에 대한 정보를 제공합니다. 매핑 스키마는 궁극적으로 관계형 데이터에 대한 XML 뷰로 생각할 수 있습니다. 이러한 매핑을 사용하여 관계형 데이터를 XML 문서로 검색할 수 있습니다.

주석에 대한 네임스페이스

XSD 스키마에서 주석은 urn:schemas-microsoft-com:mapping-schema 네임스페이스를 사용하여 지정합니다. 다음 예와 같이 네임스페이스를 지정하는 가장 간단한 방법은 <xsd:schema> 태그에 네임스페이스를 지정하는 것입니다.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
...
</xsd:schema>

사용된 네임스페이스 접두사는 임의로 지정되었습니다. 이 설명서에서 sql 접두사는 주석 네임스페이스를 나타내고 이 네임스페이스의 주석을 다른 네임스페이스의 주석과 구별하기 위해 사용되었습니다.

주석이 추가된 XSD 스키마 예

다음 예에서 XSD 스키마는 <Person.Contact> 요소로 구성됩니다. <Employee> 요소에는 ContactID 특성과 <FirstName><LastName> 자식 요소가 있습니다.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"  
                     type="xsd:string" /> 
        <xsd:element name="LName"
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

해당 요소와 특성을 데이터베이스 테이블 및 열에 매핑하기 위해 이 XSD 스키마에 주석을 추가합니다.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
  <xsd:element name="Contact" sql:relation="Person.Contact" >
   <xsd:complexType>
     <xsd:sequence>
        <xsd:element name="FName"
                     sql:field="FirstName" 
                     type="xsd:string" /> 
        <xsd:element name="LName"  
                     sql:field="LastName"  
                     type="xsd:string" />
     </xsd:sequence>
        <xsd:attribute name="ConID" 
                       sql:field="ContactID" 
                       type="xsd:integer" />
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

매핑 스키마에서 sql:relation 주석을 사용하여 <Contact> 요소를 예제 AdventureWorks 데이터베이스의 Person.Contact 테이블에 매핑합니다. ConID, FName 및 LName 특성은 sql:field 주석을 사용하여 Person.Contact 테이블의 ContactID, FirstName 및 LastName 열에 매핑됩니다.

주석이 추가된 이 XSD 스키마는 관계형 데이터에 대한 XML 뷰를 제공합니다. 이 XML 뷰는 XPath 언어를 사용하여 쿼리할 수 있습니다. SQL 쿼리에서 행 집합을 반환하는 것과는 달리 XPath 쿼리에서는 XML 문서를 결과로 반환합니다.

[!참고]

매핑 스키마에서 지정된 관계형 값(예: 테이블 이름 및 열 이름)의 대/소문자 구분은 SQL Server에서 대/소문자 구분 데이터 정렬 설정을 사용하고 있는지 여부에 따라 결정됩니다. 자세한 내용은 데이터 정렬 및 유니코드 지원을 참조하십시오.

관련 자료

XSD(XML 스키마 정의 언어), XPath(XML Path Language) 및 XSLT(Extensible Stylesheet Language Transformations)에 대한 자세한 내용은 다음 웹 사이트를 참조하십시오.

참고 항목

참조

주석 스키마 보안 고려 사항(SQLXML 4.0)

주석이 추가된 XDR 스키마(SQLXML 4.0에서는 더 이상 사용되지 않음)