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