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 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 isConstant-xdr.xml로 저장합니다.
다음 템플릿을 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 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"
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>