테이블 및 열에 대한 XSD 요소 및 특성의 기본 매핑(SQLXML 4.0)
적용 대상: SQL ServerAzure SQL Database
기본적으로 XSD 주석이 추가된 스키마의 복합 형식 요소는 지정된 데이터베이스에서 이름이 같은 테이블(뷰)에 매핑되고 단순 형식의 요소 또는 특성은 테이블의 이름이 같은 열에 매핑됩니다.
예제
다음 예제를 사용하여 작업 샘플을 만들려면 특정 요구 사항을 충족해야 합니다. 자세한 내용은 SQLXML 실행 요구 사항 예제를 참조 하세요.
A. 기본 매핑 지정
이 예에서는 XSD 스키마에 주석이 지정되지 않습니다. <Person.Contact> 요소는 복잡한 형식이므로 기본적으로 AdventureWorks 데이터베이스의 Person.Contact 테이블에 매핑됩니다. Person.Contact> 요소의 <모든 특성(ContactID, FirstName, LastName)은 단순 형식이며 기본적으로 Person.Contact 테이블에서 이름이 같은 열에 매핑됩니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact" >
<xsd:complexType>
<xsd:attribute name="ContactID" type="xsd:string" />
<xsd:attribute name="FirstName" type="xsd:string" />
<xsd:attribute name="LastName" type="xsd:string" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 MySchema.xml로 저장합니다.
다음 템플릿을 복사하여 텍스트 파일에 붙여넣습니다. 파일을 MySchema.xml 저장한 동일한 디렉터리에 MySchemaT.xml 저장합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchema.xml"> /Person.Contact </sql:xpath-query> </ROOT>
매핑 스키마(MySchema.xml)에 대해 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리에 상대적입니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\MySchema.xml"
SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들고 사용하여 템플릿을 실행합니다.
자세한 내용은 ADO를 사용한 SQLXML 4.0 쿼리를 실행합니다.
결과 집합의 일부는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8" ?>
<ROOT>
<Person.Contact ContactID="1" FirstName="Gustavo" LastName="Achong"/>
<Person.Contact ContactID="2" FirstName="Catherine" LastName="Abel"/>
...
</ROOT>
B. XML 요소를 데이터베이스 열에 매핑
이 예에서는 주석이 사용되지 않기 때문에 기본 매핑이 수행합니다. <Person.Contact> 요소는 복합 형식이며 데이터베이스에서 이름이 같은 테이블에 매핑됩니다. <FirstName> 및< LastName> 및 EmployeeID 특성 요소의 형식은 단순하므로 이름이 같은 열에 매핑됩니다. 이 예제와 이전 예제의 유일한 차이점은 요소가 FirstName 및 LastName 필드를 매핑하는 데 사용된다는 점입니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Person.Contact">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FirstName" type="xsd:string" />
<xsd:element name="LastName" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="ContactID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 MySchemaElements.xml로 저장합니다.
다음 템플릿(MySchemaElementsT.xml)을 만들어 이전 단계에서 사용한 디렉터리와 같은 디렉터리에 저장합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaElements.xml"> /Person.Contact </sql:xpath-query> </ROOT>
매핑 스키마에 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리를 기준으로 합니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\MySchemaElements.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</FirstName>
<LastName>Achong</LastName>
</Person.Contact>
...
</ROOT>
C. XML 요소를 XML 데이터 형식 열에 매핑
이 예에서는 주석이 사용되지 않기 때문에 기본 매핑이 수행합니다. <Production.ProductModel> 요소는 복합 형식이며 데이터베이스에서 이름이 같은 테이블에 매핑됩니다. ProductModelID 특성은 단순 형식이므로 이름이 같은 열에 매핑됩니다. 이 예제와 이전 예제의 유일한 차이점은 Instructions <요소가 xsd>:anyType 형식을 사용하여 xml 데이터 형식을 사용하는 열에 매핑된다는 것입니다.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="Production.ProductModel">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Instructions" type="xsd:anyType" />
</xsd:sequence>
<xsd:attribute name="ProductModelID" type="xsd:integer" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
XML 데이터 형식은 SQL Server 2005(9.x)에서 도입되었습니다.
스키마에 대해 샘플 XPath 쿼리를 테스트하려면
위 스키마 코드를 복사한 후 텍스트 파일에 붙여넣습니다. 파일을 MySchemaXmlAnyElements.xml 저장합니다.
다음 템플릿(MySchemaXmlAnyElementsT.xml)을 만들고 이전 단계에서 사용한 것과 동일한 디렉터리에 저장합니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="MySchemaXmlAnyElements.xml"> /Production.ProductModel[@ProductModelID=7] </sql:xpath-query> </ROOT>
매핑 스키마에 지정된 디렉터리 경로는 템플릿이 저장된 디렉터리를 기준으로 합니다. 절대 경로도 지정할 수 있습니다. 예를 들면 다음과 같습니다.
mapping-schema="C:\SqlXmlTest\MySchemaXmlAnyElements.xml"
SQLXML 4.0 테스트 스크립트(Sqlxml4test.vbs)를 만들고 사용하여 템플릿을 실행합니다.
자세한 내용은 ADO를 사용한 SQLXML 4.0 쿼리를 실행합니다.
결과 집합의 일부는 다음과 같습니다.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Production.ProductModel ProductModelID="7">
<Instructions>
<root xmlns="http:
//schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstru
ctions">
...
</root>
<Instructions>
</Production.ProductModel>
</ROOT>
참고 항목
주석이 추가된 스키마 보안 고려 사항(SQLXML 4.0)
XML 데이터(SQL Server)
SQLXML 4.0의 xml 데이터 형식 지원