sql:relation 사용(XDR 스키마)

중요 정보중요

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

sql:relation 주석은 XDR 스키마의 XML 노드를 데이터베이스 테이블에 매핑하기 위해 추가됩니다. 테이블/뷰 이름은 sql:relation 주석의 값으로 지정됩니다.

sql:relation 주석은 XDR 스키마의 <ElementType>, <element> 또는 <attribute> 노드에 추가할 수 있습니다. sql:relation은 스키마의 <ElementType>, <element> 또는 **<attribute>**와 데이터베이스에 있는 테이블/뷰 간의 매핑을 지정합니다.

**<ElementType>**에 sql:relation을 지정하면 이 주석의 범위가 **<ElementType>**의 모든 특성 및 자식 요소 사양에 적용됩니다. 따라서 쉽게 주석을 작성할 수 있습니다. **<element>**에 직접 sql:relation을 지정하면 <ElementType> 내에 지정된 특성에도 범위가 적용됩니다. **<AttributeType>**에서는 sql:relation 주석이 무시됩니다.

sql:relation 주석은 Microsoft SQL Server에서 올바른 식별자가 XML에서는 유효하지 않은 경우에 유용합니다. 예를 들어 "Order Details"는 SQL Server에서 올바른 테이블 이름이지만 XML에서는 유효하지 않습니다. 이 경우 sql:relation 주석을 사용하여 매핑을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

<ElementType name="OD" sql:relation="[Order Details]">

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

1. 특성이 포함된 <ElementType>에 sql:relation 지정

이 예에서 XDR 스키마는 ContactID, FirstNameLastName 특성이 있는 <Contacts> 요소로 구성됩니다. sql:relation 주석은 <Contacts> 요소를 Person.Contact 테이블에 매핑하는 **<ElementType>**에 지정됩니다. 이 매핑의 범위는 **<ElementType>**의 모든 특성에 적용됩니다. 따라서 모든 특성이 Person.Contact 테이블의 열에 매핑됩니다.

특성에 대해 기본 매핑이 수행됩니다. 예를 들어 Person.Contact 테이블에서 동일한 이름을 가진 열에 특성이 매핑됩니다.

<?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="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
  </ElementType>
</Schema>

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

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

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. sqlRelationXdr.xml을 저장한 디렉터리와 같은 디렉터리에 sqlRelationXdrT.xml로 파일을 저장합니다. 템플릿의 쿼리는 ContactID가 1인 연락처를 선택합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="sqlRelationXdr.xml">
        /Contacts[@ContactID="1"]
      </sql:xpath-query>
    </ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
    <Contacts ContactID="1" FirstName="Gustavo" 
              LastName="Achong" /> 
</ROOT>

2. 하위 요소 및 특성이 포함된 <ElementType>에 sql:relation 지정

이 예에서 XDR 스키마는 ContactID 특성과 FirstNameLastName 하위 요소가 있는 <Contacts> 요소로 구성됩니다. sql:relation 주석은 <Contacts> 요소를 Person.Contact 테이블에 매핑하는 **<ElementType>**에 지정됩니다. 이 매핑의 범위는 **<ElementType>**의 모든 특성에 적용됩니다. 따라서 모든 특성이 Person.Contact 테이블의 열에 매핑됩니다.

특성에 대해 기본 매핑이 수행됩니다. 특성은 Person.Contact 테이블에서 동일한 이름을 가진 열에 매핑됩니다.

이 예에서 content 특성은 <FirstName><LastName> 하위 요소에 지정됩니다. content=textOnly 특성이 없으면 기본적으로 요소는 필드가 아니라 테이블에 매핑되므로 하위 요소가 Person.Contact 테이블의 해당 FirstName 및 LastName 열에 매핑되지 않습니다.

<?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="FirstName" content="textOnly"/>
  <ElementType name="LastName" content="textOnly"/>
  <ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />

    <attribute type="ContactID" />
    <element type="FirstName" />
    <element type="LastName"  />
  </ElementType>
</Schema>

또는 content=textOnly 특성을 지정하는 대신 element 정의에 sql:field 주석을 지정하여 다음 대체 예제와 같이 자식 요소(FirstName, LastName)를 해당 열 이름에 매핑할 수 있습니다.

<element type="FirstName" sql:field="FirstName" />
<element type="LastName" sql:field="LastName" />

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

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

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. UsingSqlRelationXdr.xml을 저장한 디렉터리와 같은 디렉터리에 UsingSqlRelationXdrT.xml로 파일을 저장합니다. 템플릿의 쿼리는 ContactID가 1인 연락처를 선택합니다.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
      <sql:xpath-query mapping-schema="UsingSqlRelationXdr.xml">
        /Contacts[@ContactID="1"]
      </sql:xpath-query>
    </ROOT>
    

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contacts ContactID="1"> 
    <FirstName>Gustavo</FirstName>
    <LastName>Achong</LastName>
  </Contacts>
</ROOT>

참고 항목

참조