다음을 통해 공유


sql:field 사용(XDR 스키마)

중요 정보중요

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

sql:field 주석은 주석이 추가된 스키마의 요소나 특성과 데이터베이스 열 간의 매핑을 지정하고 요소나 특성에 추가할 수 있습니다. 주석이 추가된 스키마의 <AttributeType> 요소에서는 sql:field 주석이 무시됩니다. sql:field 특성은 테이블이나 뷰의 매핑된 열 이름을 지정합니다.

예를 들어 XDR에 지정된 스키마의 필드와 이름이 일치하지 않을 때 sql:field를 사용하여 열 이름을 지정할 수 있습니다. sql:field 값은 열 이름이어야 합니다. database.owner.table.columnname과 같이 네 부분으로 이루어진 열 이름은 사용할 수 없습니다. 이것은 열 이름을 값으로 갖는 모든 주석에 적용됩니다.

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

1. XDR 스키마의 <attribute>에 sql:field 지정

이 주석이 추가된 스키마에서 sql:field 주석은 스키마의 <attribute> 요소에 지정됩니다. sql:field 특성은 스키마의 Email 특성을 Person.Contact 테이블의 EmailAddress 열에 매핑합니다.

XDR 스키마에서 특성 이름 ContactID는 Person.Contact 테이블의 ContactID 열과 동일하기 때문에 sql:field를 지정하지 않습니다. 기본적으로 매핑이 지정됩니다.

<?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="Email" />
    <attribute type="ContactID" />
    <attribute type="Email" sql:field="EmailAddress" />
</ElementType>
</Schema>

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

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

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

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

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contacts ContactID="1" Email="gustavo0@adventure-works.com" /> 
</ROOT>

매핑 스키마에서 특성을 전역적으로 선언한 다음 **<attribute type=...>**에서 참조할 수 있습니다. 이 스키마에서는 <ElementType> 범위 외부에 **<AttributeType...>**이 선언된 것을 볼 수 있습니다.

이 스키마에서는 LastName 특성이 전역적으로 선언되고 Customer <ElementType> 범위에서 참조됩니다.

<?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">
<AttributeType name="LastName" />
<ElementType name="Contacts" sql:relation="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FName" />
    <AttributeType name="LName" />
    
    <attribute type="CustomerID" />
    <attribute type="FName" sql:field="FirstName" />
    <attribute type="LName" sql:field="LastName" />
</ElementType>
</Schema>

2. XDR 스키마의 <element>에 sql:field 지정

이 주석이 추가된 스키마에서 sql:field 주석은 스키마의 <element>에 지정됩니다. sql:field 주석은 스키마의 <Email> 자식 요소를 Person.Contact 테이블의 EmailAddress 열에 매핑합니다.

필드가 아니라 관계가 요소의 기본 매핑이기 때문에 명시적인 주석이 없으면 스키마에서 <Contacts> 요소의 <Email> 자식 요소가 Person.Contact 테이블의 EmailAddress 열에 매핑되지 않습니다. **<ElementType>**에 textOnly 특성이 포함된 경우에는 이에 대한 예외가 발생합니다.

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

    <attribute type="ContactID" />
    <element type="Email" sql:field="EmailAddress" />
  </ElementType>
</Schema>

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

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

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

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

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> 
  <Contacts ContactID="1"> 
    <Email>gustavo0@adventure-works.com</Email> 
  </Contacts> 
</ROOT>

전자 메일 주소의 **<ElementType>**에 content="textOnly"가 지정되어 있고 SQL 열의 기본 이름("EmailAddress")이 사용되면 자식 요소에 sql:field 주석이 필요 없습니다. 이 경우에는 <EmailAddress> 자식 요소가 Person.Contact 테이블의 EmailAddress 열에 매핑됩니다.

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

    <attribute type="ContactID" />
    <element type="EmailAddress" />
  </ElementType>
</Schema>

참고 항목

참조