다음을 통해 공유


sql:map-field를 사용하여 결과 XML 문서에서 스키마 요소 제외(XDR 스키마)

중요 정보중요

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

기본 매핑으로 인해 XDR 스키마의 모든 요소와 특성은 데이터베이스 테이블과 열에 매핑됩니다. 그러나 경우에 따라서는 어느 데이터베이스 테이블이나 열에도 매핑되지 않고 XML에 표시되지 않는 요소를 XDR 스키마에 만들어야 할 수 있습니다. sql:map-field 주석을 지정하면 이러한 작업이 가능합니다.

sql:map-field 주석은 매핑되지 않은 요소와 특성이 XML 문서에 표시되지 않는다는 점에서 sql:is-constant와 다릅니다. sql:map-field는 스키마를 수정할 수 없는 경우 또는 스키마가 데이터베이스에 저장되어 있지 않은 데이터를 포함하지만 다른 원본의 XML에 대한 유효성을 검사하는 데 사용될 경우에 특히 유용합니다.

sql:map-field는 부울 값(0 = FALSE, 1 = TRUE)을 사용합니다. sql:map-field 주석은 콘텐츠가 텍스트로만 구성된(content=textOnly) <attribute>, <element> 또는 **<ElementTypes>**에만 사용할 수 있으며 테이블에 매핑되는 **<element>**나 **<ElementTypes>**에는 사용할 수 없습니다.

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

1. sql:map-field 주석 지정

다른 원본의 XDR 스키마가 있고, 이 XDR 스키마는 <Person.Contact> 요소와 ContactID, FirstName, LastName 등의 특성으로 구성되었다고 가정해 봅니다.

이 XDR 스키마를 데이터베이스의 Person.Contact 테이블에 매핑하는 경우 Person.Contact 테이블에는 직원의 자택 주소가 저장되어 있지 않으므로 HomeAddress 특성에 sql:map-field를 지정합니다. 그 결과 매핑 스키마에 대해 XPath 쿼리를 지정할 경우 이 특성은 결과 XML 문서에 반환되지 않습니다.

스키마의 나머지 부분에 대해서는 기본 매핑이 수행됩니다. 즉, <Person.Contact> 요소는 Person.Contact 테이블에 매핑되고 모든 특성은 Person.Contact 테이블에서 이름이 동일한 열에 매핑됩니다. 기본 매핑에 대한 자세한 내용은 테이블 및 열에 대한 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="Person.Contact" >
    <AttributeType name="ContactID" />
    <AttributeType name="FirstName" />
    <AttributeType name="LastName" />
    <AttributeType name="HomeAddress" />

    <attribute type="ContactID" />
    <attribute type="FirstName" />
    <attribute type="LastName" />
    <attribute type="HomeAddress" sql:map-field="0" />
</ElementType>
</Schema>

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

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

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 mapField-xdr.xml을 저장한 디렉터리에 mapField-xdrT.xml로 저장합니다. 템플릿의 쿼리는 ContactID가 1인 Person.Contact 레코드를 선택합니다.

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

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

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

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

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

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

매핑 스키마에서 HomeAddress에 대해 sql:map-field 특성을 0으로 지정했기 때문에 EmployeeID, FirstName 및 LastName은 있지만 HomeAddress는 없습니다.

참고 항목

참조