쿼리에 주석이 추가된 XSD 스키마 사용(SQLXML 4.0)

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

템플릿에 XDR 스키마에 대한 XPath 쿼리를 지정하는 방식으로 주석이 추가된 스키마에 대해 쿼리를 지정하여 데이터베이스에서 데이터를 검색할 수 있습니다.

<sql:xpath-query> 요소를 사용하면 주석이 추가된 스키마로 정의된 XML 뷰에 대해 XPath 쿼리를 지정할 수 있습니다. XPath 쿼리를 실행할 주석이 추가된 스키마는 sql:xpath-query> 요소의<mapping-schema 특성을 사용하여 식별됩니다.

템플릿은 하나 이상의 쿼리를 포함하는 유효한 XML 문서입니다. FOR XML 및 XPath 쿼리는 문서 조각을 반환합니다. 템플릿은 문서 조각의 컨테이너 역할을 하며 단일 최상위 요소를 지정하는 방법을 제공합니다.

이 항목의 예에서는 템플릿을 통해 주석이 추가된 스키마에 대해 XPath 쿼리를 지정하여 데이터베이스에서 데이터를 검색합니다.

예를 들어 주석이 추가된 다음 스키마를 참조하십시오.

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

이해하기 쉽도록 이 XSD 스키마는 Schema2.xml이라는 파일에 저장됩니다. 따라서 다음 템플릿 파일(Schema2T.xml)에 주석이 추가된 스키마에 대한 XPath 쿼리를 지정할 수 있었습니다.

<sql:xpath-query   
     xmlns:sql="urn:schemas-microsoft-com:xmlsql"  
     >  
          Person.Contact[@ContactID="1"]  
</sql:xpath-query>  

그러면 SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들어서 사용하여 템플릿 파일의 일부로 쿼리를 실행할 수 있습니다. 자세한 내용은 주석이 추가된 XDR 스키마(SQLXML 4.0에서는 사용되지 않음)를 참조하세요.

인라인 매핑 스키마 사용

주석이 추가된 스키마를 템플릿에 직접 포함한 다음 이 템플릿에 인라인 스키마에 대한 XPath 쿼리를 지정할 수 있습니다. 이 템플릿은 Updategram일 수도 있습니다.

템플릿에는 여러 개의 인라인 스키마가 포함될 수 있습니다. 템플릿에 포함된 인라인 스키마를 사용하려면 xsd:schema> 요소에< 고유한 값이 있는 id 특성을 지정한 다음, #idvalue 사용하여 인라인 스키마를 참조합니다. ID 특성은 XDR 스키마에 사용되는 sql:id({urn:schemas-microsoft-com:xml-sql}id)와 동작에서 동일합니다.

예를 들어 다음 템플릿에서는 주석이 추가된 두 개의 인라인 스키마를 지정합니다.

<ROOT xmlns:sql='urn:schemas-microsoft-com:xml-sql'>  
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'  
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'  
        id='InLineSchema1' sql:is-mapping-schema='1'>  
  <xsd:element name='Employees' ms:relation='HumanResources.Employee'>  
    <xsd:complexType>  
      <xsd:attribute name='LoginID'   
                     type='xsd:string'/>  
      <xsd:attribute name='Title'   
                     type='xsd:string'/>  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
  
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'  
        xmlns:ms='urn:schemas-microsoft-com:mapping-schema'  
        id='InLineSchema2' sql:is-mapping-schema='1'>  
  <xsd:element name='Contacts' ms:relation='Person.Contact'>  
    <xsd:complexType>  
  
      <xsd:attribute name='ContactID'   
                     type='xsd:string' />  
      <xsd:attribute name='FirstName'   
                     type='xsd:string' />  
      <xsd:attribute name='LastName'   
                     type='xsd:string' />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  
  
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'   
        mapping-schema='#InLineSchema1'>  
    /Employees[@LoginID='adventure-works\guy1']  
</sql:xpath-query>  
  
<sql:xpath-query xmlns:sql='urn:schemas-microsoft-com:xml-sql'   
        mapping-schema='#InLineSchema2'>  
    /Contacts[@ContactID='1']  
</sql:xpath-query>  
</ROOT>  

이 템플릿에서는 두 개의 XPath 쿼리도 지정합니다. <각 xpath-query> 요소는 mapping-schema 특성을 지정하여 매핑 스키마를 고유하게 식별합니다.

템플릿에서 인라인 스키마를 지정하는 경우 xsd:schema 요소에 sql:is-mapping-schema>주석도 지정해야 합니다.< sql:is-mapping-schema는 부울 값(0=false, 1=true)을 사용합니다. sql:is-mapping-schema="1"이 있는 인라인 스키마는 인라인 주석이 있는 스키마로 처리되며 XML 문서에 반환되지 않습니다.

sql:is-mapping-schema 주석은 템플릿 네임스페이스 urn:schemas-microsoft-com:xml-sql에 속합니다.

이 예를 테스트하려면 로컬 디렉터리에 템플릿(InlineSchemaTemplate.xml)을 지정한 다음 SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들어서 사용하여 템플릿을 실행합니다. 자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하세요.

템플릿(XPath 쿼리가 있는 경우) 또는 updategram의 updg:sync> 요소에서 sql:xpath-query 요소에<mapping-schema 특성을 <지정하는 것 외에도 다음을 수행할 수 있습니다.>

  • 템플릿의 ROOT> 요소(전역 선언)에서<mapping-schema 특성을 지정합니다. 그런 다음 이 매핑 스키마는 명시적 매핑 스키마 주석이 없는 모든 XPath 및 updategram 노드에서 사용되는 기본 스키마 가 됩니다.

  • ADO Command 개체를 사용하여 매핑 스키마 특성을 지정합니다.

xpath-query 또는 updg:sync> 요소에 지정된 mapping-schema 특성의 우선 순위가 가장 높으며 ADO Command 개체의 우선 순위가 가장 낮습니다.<<>

템플릿에서 XPath 쿼리를 지정하고 XPath 쿼리가 실행되는 매핑 스키마를 지정하지 않으면 XPath 쿼리는 dbobject 형식 쿼리로 처리됩니다. 예를 들어 다음 템플릿을 참조하십시오.

<sql:xpath-query   
     xmlns:sql="urn:schemas-microsoft-com:xmlsql">  
          Production.ProductPhoto[@ProductPhotoID='100']/@LargePhoto  
</sql:xpath-query>  

이 템플릿에서는 XPath 쿼리만 지정하고 매핑 스키마는 지정하지 않습니다. 따라서 이 쿼리는 Production.ProductPhoto가 테이블 이름이고 @ProductPhotoID='100'이 ID 값이 100인 제품 사진을 찾는 조건자인 dbobject 형식 쿼리로 처리됩니다. @LargePhoto 는 값을 검색할 열입니다.