다음을 통해 공유


sql:relationship을 사용하여 관계 지정(XDR 스키마)

중요 정보중요

이 항목은 레거시 응용 프로그램에 대한 참조용으로 포함되었습니다. 이 기능에 대해서는 이후 개발 작업이 진행되지 않습니다. 새 개발 작업에서는 이 기능을 사용하지 마십시오. 대신 주석이 추가된 XSD 스키마를 사용하여 XML 뷰를 만드십시오. 자세한 내용은 주석이 추가된 XSD 스키마 소개(SQLXML 4.0)을 참조하십시오. 주석이 추가된 기존 XDR 스키마를 XSD 스키마로 변환할 수 있습니다. 자세한 내용은 주석이 추가된 XDR 스키마를 해당 XSD 스키마로 변환(SQLXML 4.0)을 참조하십시오.

XML 문서의 요소는 서로 관련될 수 있습니다. 이 요소는 계층적으로 중첩될 수 있으며 요소 간에 ID, IDREF 또는 IDREFS 관계를 지정할 수 있습니다.

예를 들어 XDR 스키마에서 <Customer> 요소가 <Order> 자식 요소를 포함합니다. <Customer> 요소는 AdventureWorks 데이터베이스의 Sales.Customer 같은 고객 데이터를 보유하는 테이블에 매핑됩니다. <Order> 요소는 동일한 데이터베이스의 Sales.SalesORderHeader 같은 주문 데이터를 보유하는 테이블에 매핑됩니다. 이러한 기본 테이블인 Sales.Customer와 Sales.SalesOrderHeader는 고객 주문과 관련하여 서로 관련되어 있습니다. Sales.SalesOrderHeader 테이블의 CustomerID는 Sales.Customer 테이블의 CustomerID 기본 키를 참조하는 외래 키입니다. <sql:relationship> 주석을 사용하면 매핑 스키마 요소 간에 이러한 관계를 설정할 수 있습니다.

주석이 추가된 XDR 스키마에서 <sql:relationship> 주석은 요소가 매핑되는 기본 테이블 간의 기본 키 및 외래 키 관계를 기반으로 스키마 요소를 계층적으로 중첩하는 데 사용됩니다. <sql:relationship> 주석을 지정할 때는 다음 사항을 식별해야 합니다.

  • 기본 테이블(Sales.Customer)과 외래 테이블(Sales.SalesOrderHeader)

  • 필수 조인 조건(Sales.SalesOrderHeader의 CustomerID는 Sales.Customer 테이블의 CustomerID 기본 키를 참조하는 외래 키임)

이 정보는 각 <customer> 요소에 대해 관련된 <order> 요소를 자식 요소로 표시하는 등의 적절한 계층을 생성하는 데 사용됩니다.

테이블 이름과 필요한 조인 정보를 제공하려면 다음 특성을 <sql:relationship> 주석과 함께 지정합니다. 이러한 특성은 sql:relationship 요소에만 사용할 수 있습니다.

  • key-relation
    기본 관계(테이블)를 지정합니다.

  • key
    key-relation의 기본 키를 지정합니다. 기본 키를 여러 열로 구성하는 경우 값을 지정할 때 이러한 열 사이에 공백을 사용합니다. 여러 열로 구성된 키에 대해 지정한 값과 해당 외래 키 간에는 위치 매핑이 있습니다.

  • foreign-relation
    외래 관계(테이블)를 지정합니다.

  • foreign-key
    key-relation의 key를 참조하는 foreign-relation의 외래 키를 지정합니다. 외래 키를 여러 특성(열)으로 구성하는 경우 외래 키 값을 지정할 때 이러한 특성(열) 사이에 공백을 사용합니다. 여러 열로 구성된 키에 대해 지정한 값과 해당 외래 키 간에는 위치 매핑이 있습니다.

[!참고]

key 및 foreign-key에 대한 Microsoft SQL Server 데이터 형식은 필요에 따라 암시적으로 변환될 수 있도록 해야 합니다.

sql:relationship 태그는 주석이 추가된 스키마의 <element> 또는 <attribute> 요소에만 추가할 수 있습니다. 특성에 sql:relationship을 지정하는 경우 이러한 특성에 sql:relation 및 sql:field를 지정하여 단일 값이 검색되도록 해야 합니다. XML에서는 이름이 같은 특성을 여러 개 사용할 수 없습니다. 요소에 sql:relationship을 지정하는 경우 관계는 단일 값이나 여러 값에 대해 설정할 수 있습니다.

sql:relationship 태그는 두 엔터티 간의 단일 논리적 관계를 지정하는 데 사용됩니다. 특성은 논리적 관계를 정의하는 데 사용되는 관계 및 필드를 정의합니다. 주석이 추가된 스키마의 요소나 특성 내에서 sql:relationship의 여러 인스턴스를 지정할 수 있으며 이는 요소나 특성 및 이에 포함된 요소 간의 복잡한 관계를 나타냅니다. sql:relationship의 모든 인스턴스는 복잡한 관계를 정의하는 데 함께 사용됩니다.

sql:relationship 태그의 여러 인스턴스를 요소나 특성 내에 지정하는 경우 이러한 인스턴스가 표시되는 순서는 큰 의미가 있습니다.

sql:key-fields 주석은 요소와 자식 간에 정의되었지만 부모 요소에 지정된 테이블의 기본 키를 제공하지 않는 sql:relationship 및 자식 요소를 포함하는 요소 내에 지정해야 합니다. 자세한 내용은 sql:key-fields(SQLXML 4.0)를 사용하여 키 열 식별을 참조하십시오. 올바른 중첩 결과를 얻으려면 모든 스키마에 sql:key-fields를 지정하는 것이 좋습니다.

[!참고]

매핑 스키마에서 테이블 이름과 열 이름 같은 관계형 값은 대소문자를 구분합니다.

다음 예를 사용하여 작업 예제를 만들려면 특정 요구 사항이 충족되어야 합니다. 자세한 내용은 SQLXML 예 실행을 위한 요구 사항을 참조하십시오.

1. <element>에 대해 sql:relationship 지정

주석이 추가된 이 XDR 스키마에는 <Customer><Order> 요소가 포함됩니다. <Order> 요소는 <Customer> 요소의 자식 요소입니다.

이 스키마에서 sql:relationship 주석은 <Order> 자식 요소에 대해 지정됩니다. 이 주석은 Sales.Customer 테이블의 CustomerID 기본 키를 참조하는 외래 키로 Sales.SalesOrderHeader 테이블의 CustomerID를 식별합니다. 따라서 고객에게 속한 주문은 <Customer> 요소의 자식 요소로 나타납니다.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Order" sql:relation="Sales.SalesOrderHeader" >
    <AttributeType name="CustomerID" />
    <AttributeType name="SalesOrderID" />
    <AttributeType name="OrderDate" />

    <attribute type="CustomerID" />
    <attribute type="SalesOrderID" />
    <attribute type="OrderDate" />
</ElementType>
<ElementType name="Customer" sql:relation="Sales.Customer" >
    <AttributeType name="CustomerID" />
    <attribute type="CustomerID" />
    <element type="Order" >
             <sql:relationship 
                     key-relation="Sales.Customer"
                    key="CustomerID"
                    foreign-key="CustomerID"
                    foreign-relation="Sales.SalesOrderHeader" />
    </element>
</ElementType>
</Schema>

[!참고]

매핑 스키마에서 테이블 이름과 열 이름 같은 관계형 값은 대소문자를 구분합니다. 앞의 예제에서 Customers는 sql:relation 특성의 값입니다. 해당 key-relation 특성 값도 Customers입니다.

스키마에 대해 예제 XPath 쿼리를 테스트하려면

  1. 위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 sql-relationship-xdr.xml로 저장합니다.

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 sql-relationship-xdr.xml을 저장한 디렉터리에 sql-relationship-xdrT.xml로 저장합니다. 템플릿의 쿼리에서는 CustomerID가 1인 고객을 선택합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="sql-relationship-xdr.xml">
        Customer[@CustomerID="1"]
      </sql:xpath-query>
    </ROOT>
    

    매핑 스키마(sql-relationship-xdr.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 또한 다음과 같이 절대 경로를 지정할 수 있습니다.

    mapping-schema="C:\SqlXmlTest\sql-relationship-xdr.xml"
    
  3. SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만든 다음 이 스크립트를 사용하여 템플릿을 실행합니다.

    자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하십시오.

다음은 결과 집합의 일부입니다.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="1">
    <Order CustomerID="1" SalesOrderID="43860" OrderDate="2001-08-01T00:00:00" /> 
    <Order CustomerID="1" SalesOrderID="44501" OrderDate="2001-11-01T00:00:00" /> 
    <Order CustomerID="1" SalesOrderID="45283" OrderDate="2002-02-01T00:00:00" /> 
    <Order CustomerID="1" SalesOrderID="46042" OrderDate="2002-05-01T00:00:00" /> 
  </Customer>
</ROOT>

2. <attribute>에 대해 sql:relationship을 지정하고 ID와 IDREFS를 사용하여 문서 참조 만들기

이 예제에서 로컬 문서 참조는 ID와 IDREFS를 사용하여 지정됩니다. 예제 XDR 스키마는 Sales.Customer 테이블에 매핑되는 <Customer> 요소로 구성되며, 이 요소는 Sales.SalesOrderHeader 테이블에 매핑되는 <Order> 자식 요소로 구성됩니다.

이 예제에서 sql:relationship은 두 번 지정됩니다.

  • sql:relationship은 <Order> 자식 요소에 대해 지정됩니다. 따라서 고객에게 속한 주문은 해당 <Customer> 요소의 자식 요소로 나타납니다.

  • sql:relationship은 <Customer> 요소의 OrderIDList 특성에 대해서도 지정됩니다. 이 특성은 <Order> 요소의 SalesOrderID 특성(ID 유형 특성)을 참조하는 IDREFS 형식으로 정의됩니다. 따라서 sql:relationship이 필요합니다. 이 경우 sql:relationship 주석을 사용하여 해당 <Customer> 요소와 함께 고객에게 속한 주문 목록을 표시할 수 있습니다.

    IDREFS로 지정된 특성을 사용하여 ID 유형 특성을 참조할 수 있으며 이런 식으로 문서 간 연결이 가능합니다.

숫자는 유효한 ID 값(이름 토큰이어야 함)이 아니므로 Order ID가 문자열 값이 되도록 sql:id-prefix가 사용되었습니다. 자세한 내용은 sql:id-prefix를 사용하여 유효한 ID, IDREF 및 IDREFS 유형 특성 만들기(XDR 스키마)를 참조하십시오.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <ElementType name="Order" sql:relation="Sales.SalesOrderHeader" >
    <AttributeType name="SalesOrderID" dt:type="id" sql:id-prefix="Ord-" />
    <AttributeType name="OrderDate" />
 
    <attribute type="SalesOrderID" />
    <attribute type="OrderDate" />
  </ElementType>

  <ElementType name="Customer" sql:relation="Sales.Customer">
    <AttributeType name="CustomerID"  />

    <attribute type="CustomerID" />
    <AttributeType name="OrderIDList" dt:type="idrefs" 
                                      sql:id-prefix="Ord-"/>
    <attribute type="OrderIDList" sql:relation="Sales.SalesOrderHeader" 
                                  sql:field="SalesOrderID">
                 <sql:relationship
                      key-relation="Sales.Customer"
                      key="CustomerID"
                      foreign-relation="Sales.SalesOrderHeader"
                      foreign-key="CustomerID" />
    </attribute>
    <element type="Order">
                 <sql:relationship key-relation="Sales.Customer"
                      key="CustomerID"
                      foreign-relation="Sales.SalesOrderHeader"
                      foreign-key="CustomerID" />
    </element>
  </ElementType>
</Schema>

스키마에 대해 예제 XPath 쿼리를 테스트하려면

  1. 위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 idIdref-xdr.xml로 저장합니다.

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 idIdref-xdr.xml을 저장한 디렉터리에 idIdref-xdrT.xml로 저장합니다. 템플릿의 쿼리에서는 CustomerID가 1인 고객을 선택합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="idIdref-xdr.xml">
        Customer[@CustomerID="1"]
      </sql:xpath-query>
    </ROOT>
    

    매핑 스키마(idIdref-xdr.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 또한 다음과 같이 절대 경로를 지정할 수 있습니다.

    mapping-schema="C:\SqlXmlTest\idIdref-xdr.xml"
    
  3. SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만든 다음 이 스크립트를 사용하여 템플릿을 실행합니다.

    자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하십시오.

결과 집합은 다음과 같습니다.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="1" 
            OrderIDList="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
    <Order SalesOrderID="Ord-43860" OrderDate="2001-08-01T00:00:00" /> 
    <Order SalesOrderID="Ord-44501" OrderDate="2001-11-01T00:00:00" /> 
    <Order SalesOrderID="Ord-45283" OrderDate="2002-02-01T00:00:00" /> 
    <Order SalesOrderID="Ord-46042" OrderDate="2002-05-01T00:00:00" /> 
  </Customer>
</ROOT>

3. 여러 요소에 대해 sql:relationship 지정

이 예제에서 주석이 추가된 XDR 스키마는 <Customer>, <Order><OD> 요소로 구성됩니다.

<Order> 요소는 <Customer> 요소의 자식 요소입니다. sql:relationship은 고객에게 속한 주문이 **<Customer>**의 자식 요소로 표시되도록 <Order> 자식 요소에 대해 지정됩니다.

<Order> 요소는 <OD> 자식 요소를 포함합니다. sql:relationship은 주문에 속한 주문 정보가 해당 <Order> 요소의 자식 요소로 표시되도록 <OD> 자식 요소에 대해 지정됩니다.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">

<ElementType name="OD" sql:relation="Sales.SalesOrderDetail" >
    <AttributeType name="SalesOrderID" />
    <AttributeType name="ProductID" />

    <attribute type="SalesOrderID" />
    <attribute type="ProductID" />
</ElementType>

<ElementType name="Order" sql:relation="Sales.SalesOrderHeader" >
    <AttributeType name="CustomerID" />
    <AttributeType name="SalesOrderID" />
    <AttributeType name="OrderDate" />

    <attribute type="CustomerID" />
    <attribute type="SalesOrderID" />
    <attribute type="OrderDate" />
    <element type="OD" >
             <sql:relationship 
                   key-relation="Sales.SalesOrderHeader"
                   key="SalesOrderID"
                   foreign-key="SalesOrderID"
                   foreign-relation="Sales.SalesOrderDetail" />
    </element>
</ElementType>

<ElementType name="Customer" sql:relation="Sales.Customer" >
    <AttributeType name="CustomerID" />

    <attribute type="CustomerID" />
    <element type="Order" >
      <sql:relationship 
                key-relation="Sales.Customer"
                key="CustomerID"
                foreign-key="CustomerID"
                foreign-relation="Sales.SalesOrderHeader" />
    </element>
</ElementType>
</Schema>

스키마에 대해 예제 XPath 쿼리를 테스트하려면

  1. 위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 sql-relationship-multi-xdr.xml로 저장합니다.

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 sql-relationship-multi-xdr.xml을 저장한 디렉터리에 sql-relationship-multi-xdrT.xml로 저장합니다. 템플릿의 쿼리에서는 CustomerID가 1이고 SalesOrderID가 43860인 고객의 주문 정보를 반환합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="sql-relationship-multi-xdr.xml">
        /Customer[@CustomerID="1"]/Order[@SalesOrderID=43860]
      </sql:xpath-query>
    </ROOT>
    

    매핑 스키마(sql-relationship-multi-xdr.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 또한 다음과 같이 절대 경로를 지정할 수 있습니다.

    mapping-schema="C:\SqlXmlTest\sql-relationship-multi-xdr.xml"
    
  3. SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만든 다음 이 스크립트를 사용하여 템플릿을 실행합니다.

    자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하십시오.

결과 집합은 다음과 같습니다.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Order CustomerID="1" SalesOrderID="43860" OrderDate="2001-08-01T00:00:00">
    <OD SalesOrderID="43860" ProductID="761" /> 
    <OD SalesOrderID="43860" ProductID="770" /> 
    <OD SalesOrderID="43860" ProductID="758" /> 
    <OD SalesOrderID="43860" ProductID="765" /> 
    <OD SalesOrderID="43860" ProductID="732" /> 
    <OD SalesOrderID="43860" ProductID="762" /> 
    <OD SalesOrderID="43860" ProductID="738" /> 
    <OD SalesOrderID="43860" ProductID="768" /> 
    <OD SalesOrderID="43860" ProductID="753" /> 
    <OD SalesOrderID="43860" ProductID="729" /> 
    <OD SalesOrderID="43860" ProductID="763" /> 
    <OD SalesOrderID="43860" ProductID="756" /> 
  </Order>
</ROOT>

4. 간접 관계 지정

이 예제에서 주석이 추가된 XDR 스키마는 <Customer><OD> 요소로 구성됩니다. 이러한 요소 간의 관계는 간접 관계입니다. Sales.Customer 테이블은 Sales.SalesOrderHeader 테이블을 통해 Sales.SalesOrderDetail 테이블과 관련됩니다. 고객을 주문 정보와 관련시키려면 먼저 Sales.Customer 테이블과 Sales.SalesOrderHeader 테이블 간의 관계를 지정해야 합니다. 그런 다음 Sales.SalesOrderHeader 및 Sales.SalesOrderDetail 테이블 간의 관계를 지정합니다.

스키마는 다음과 같습니다.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="OD" sql:relation="Sales.SalesOrderDetail" >
    <AttributeType name="SalesOrderID" />
    <AttributeType name="ProductID" />
    <AttributeType name="UnitPrice" />

    <attribute type="SalesOrderID" />
    <attribute type="ProductID" />
    <attribute type="UnitPrice" />
</ElementType>
<ElementType name="Customer" sql:relation="Sales.Customer" >
    <AttributeType name="CustomerID" />
    <attribute type="CustomerID" />
    <element type="OD" >
             <sql:relationship 
                    key-relation="Sales.Customer"
                    key="CustomerID"
                    foreign-relation="Sales.SalesOrderHeader"
                    foreign-key="CustomerID"/>
             <sql:relationship 
                    key-relation="Sales.SalesOrderHeader"
                    key="SalesOrderID"
                    foreign-relation="Sales.SalesOrderDetail" 
                    foreign-key="SalesOrderID" />
    </element>
</ElementType>
</Schema>

스키마에 대해 예제 XPath 쿼리를 테스트하려면

  1. 위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 indirect-relationship-xdr.xml로 저장합니다.

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 indirect-relationship-xdr.xml을 저장한 디렉터리에 indirect-relationship-xdrT.xml로 저장합니다. 템플릿의 쿼리에서는 CustomerID가 1인 고객의 주문 정보를 반환합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
    <sql:xpath-query mapping-schema="indirect-relationship-xdr.xml" >
    /Customer[@CustomerID="1"]
    </sql:xpath-query>
    </ROOT>
    

    매핑 스키마(indirect-relationship-xdr.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 또한 다음과 같이 절대 경로를 지정할 수 있습니다.

    mapping-schema="C:\SqlXmlTest\indirect-relationship-xdr.xml"
    
  3. SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만든 다음 이 스크립트를 사용하여 템플릿을 실행합니다.

    자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하십시오.

다음은 결과의 일부입니다.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Customer CustomerID="1">
    <OD SalesOrderID="43860" ProductID="761" UnitPrice="503.3507" /> 
    <OD SalesOrderID="43860" ProductID="770" UnitPrice="503.3507" /> 
    <OD SalesOrderID="43860" ProductID="758" UnitPrice="1049.7528" /> 
    <OD SalesOrderID="43860" ProductID="765" UnitPrice="503.3507" /> 
    ...
  </Customer>
  </ROOT>

5. 여러 키 조인 관계 지정

sql:relationship을 사용하여 조인을 지정할 때는 둘 이상의 열이 포함된 조인을 지정할 수 있습니다. 이 경우 key 및 foreign-key의 열 이름은 공백을 사용하여 나열합니다.

이 예제에서는 임시 데이터베이스(예: tempdb)에 다음과 같은 두 개의 테이블이 있다고 가정합니다.

  • dbo.Cust (fname, lname)

  • dbo.Ord (OrderID, fname, lname)

fname 및 lname 열은 Cust 테이블의 기본 키를 구성합니다. OrderID는 Ord 테이블의 기본 키입니다. Ord 테이블의 fname 및 lname은 Cust 테이블의 fname 및 lname 기본 키를 참조하는 외래 키입니다.

이 스키마는 <Cust><Ord> 요소로 구성되며 이러한 두 요소를 조인하는 데 sql:relationship을 사용합니다.

<?xml version="1.0" ?>
<Schema xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes"
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ElementType name="Ord" sql:relation="Ord" >
    <AttributeType name="OrderID" />

    <attribute type="OrderID" />
</ElementType>

<ElementType name="Cust" sql:relation="Cust" >
    <AttributeType name="fname" />
    <AttributeType name="lname" />
    <attribute type="fname" />
    <attribute type="lname" />
    <element type="Ord" >
             <sql:relationship 
                    key-relation="Cust"
                    key="fname lname"
                    foreign-relation="Ord"
                    foreign-key="fname lname"/>
    </element>
</ElementType>
</Schema>

스키마에 대해 예제 XPath 쿼리를 테스트하려면

  1. 다음과 같이 Cust 및 Ord 테이블을 만듭니다.

    USE tempdb
    CREATE TABLE dbo.Cust(
           fname  varchar(20), 
           lname   varchar(20)
           )
    CREATE TABLE dbo.Ord (
           OrderID int primary key, 
           fname  varchar(20), 
           lname   varchar(20)
           )
    GO
    
  2. 이 예제 데이터를 추가합니다.

    INSERT INTO Cust values ('Nancy', 'Davolio')
    INSERT INTO Cust values('Andrew', 'Fuller')
    INSERT INTO Ord values (1,'Nancy', 'Davolio')
    INSERT INTO Ord values (2,'Nancy', 'Davolio')
    INSERT INTO Ord values (3,'Andrew', 'Fuller')
    
  3. 위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 multikey-join-xdr.xml로 저장합니다.

  4. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 multikey-join-xdr.xml을 저장한 디렉터리에 multikey-join-xdrT.xml로 저장합니다. 템플릿의 쿼리에서는 고객 정보를 반환합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" >
      <sql:xpath-query mapping-schema="multikey-join-xdr.xml" >
        /Cust
      </sql:xpath-query>
    </ROOT>
    

    매핑 스키마(multikey-join-xdr.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 또한 다음과 같이 절대 경로를 지정할 수 있습니다.

    mapping-schema="C:\SqlXmlTest\multikey-join-xdr.xml"
    
  5. SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만든 다음 이 스크립트를 사용하여 템플릿을 실행합니다.

    자세한 내용은 ADO를 사용하여 SQLXML 4.0 쿼리 실행을 참조하십시오.

다음은 결과의 일부입니다.

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Cust fname="Andrew" lname="Fuller"> 
    <Ord OrderID="3" /> 
  </Cust> 
  <Cust fname="Nancy" lname="Davolio"> 
    <Ord OrderID="1" /> 
    <Ord OrderID="2" /> 
  </Cust> 
</ROOT>

참고 항목

참조