sql:is-constant를 사용하여 상수 요소 만들기(XDR 스키마)

중요 정보중요

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

기본 매핑으로 인해 XDR 스키마의 모든 요소와 특성은 데이터베이스 테이블과 열에 매핑됩니다. 그러나 경우에 따라서는 어느 데이터베이스 테이블이나 열에도 매핑되지 않지만 XML 문서에는 표시되는 요소를 XDR 스키마에 만들어야 할 수 있습니다. 이러한 요소를 상수 요소라고 합니다. 상수 요소를 만들려면 sql:is-constant 주석을 지정합니다. sql:is-constant 주석은 부울 값(0 = FALSE, 1 = TRUE)을 사용합니다.

이 주석은 데이터베이스 테이블에 매핑되지 않는 **<ElementType>**에 지정되므로 상수 요소가 만들어집니다. sql:is-constant 주석은 다음과 같은 용도로 사용할 수 있습니다.

  • XML 문서에 최상위 요소 추가. XML 문서에는 단일 최상위 요소(<root> 요소)가 필요합니다.

  • 컨테이너 요소 만들기. 예를 들어 모든 주문을 래핑하는 <Orders> 요소가 있습니다.

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

1. 컨테이너 요소를 추가하는 sql:is-constant 지정

주석이 추가된 이 XDR 스키마에서는 <OrderList> 가 모든 <Orders> 하위 요소를 포함하는 상수 요소로 정의됩니다. sql:is-constant 주석은 **OrderList<ElementType>**에 지정되어 상수 요소가 되므로 데이터베이스 테이블에 매핑되지 않습니다. <OrderList> 요소는 데이터베이스 테이블/열에 매핑되지 않지만 결과 XML에 <Orders> 하위 요소를 포함하는 컨테이너 요소로 표시됩니다.

<?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="Sales.SalesOrderHeader" >
   <AttributeType name="SalesOrderID" />
   <attribute type="SalesOrderID" />
</ElementType>
<ElementType name="OrderList" sql:is-constant="1">
   <element type="Orders">
      <sql:relationship 
                   key-relation="Sales.Customer" 
                   foreign-relation="Sales.SalesOrderHeader" 
                   key="CustomerID" 
                   foreign-key="CustomerID" />
   </element>
</ElementType>
<ElementType name="Sales.Customer" >
   <AttributeType name="CustomerID" />
   <attribute type="CustomerID" />
   <element type="OrderList" />
</ElementType>
</Schema>

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

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

  2. 다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 isConstant-xdr.xml을 저장한 디렉터리와 같은 디렉터리에 isConstant-xdrT.xml로 저장합니다. 템플릿의 XPath 쿼리에서 CustomerID 특성 값이 1인 <Sales.Customer> 요소가 모두 선택됩니다.

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

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

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

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

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

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
  <Sales.Customer CustomerID="1">
    <OrderList>
      <Sales.SalesOrderHeader SalesOrderID="43860" /> 
      <Sales.SalesOrderHeader SalesOrderID="44501" /> 
      <Sales.SalesOrderHeader SalesOrderID="45283" /> 
      <Sales.SalesOrderHeader SalesOrderID="46042" /> 
    </OrderList>
  </Sales.Customer>
</ROOT>

참고 항목

참조