Pure Software Engineer :)
[SQL Server] typed xml vs. untyped xml 본문
SQL Server에서 사용되는 typed xml 과 untyped xml에 대해 정리해보자.
SQL Server는 variable, parameter, column에 xml 타입을 사용할 수 있게 한다.
그리고 흔히 xml의 스키마를 정의하기 위한 xsd(xml schema definition)를 SQL Server에도 적용시킬 수 있는데,
xml과 xsd를 연계시키면 typed xml, 연계 안시켰다면 untyped xml 이라고 부른다.
xsd를 사용하는 이유는 이미 다 알고 있다고 생각하고, 여기서는 SQL Server에서 어떻게 xsd를 사용하고,
xml과 xsd를 연계시키는지에 대해 알아보도록 한다.
그래도 xsd 가 제공하는 것을 간단히 살펴보면 다음 2가지가 있다.
1. validation constraint
2. data type information
즉, xml이 유효한 형태인지 검증할 수 있고, element에 대한 타입 정보를 제공해 준다.
typed xml을 사용하면 Xml validation을 SQL Server에서 자동으로 해준다는 것이다.
따라서, 사용자는 Xml이 유효한지에 대한 걱정을 하지 않아도 된다.
(매번 xml의 값이 설정되거나, 변경될때 SQL Server에서 자동으로 validation을 수행한다.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // syntax CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier AS Expression // Example CREATE XML SCHEMA COLLECTION TestCollection AS '<xs:schema xmlns:xs="http ://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org/po.xsd" xmlns="http://tempuri.org/po.xsd" elementFormDefault="qualified"> <xs:annotation> <xs:documentation xml:lang="en"> Purchase order schema for Example.com. Copyright 2000 Example.com. All rights reserved. </xs:documentation> </xs:annotation> <xs:element name="purchaseOrder" type="PurchaseOrderType"/> .... .... ' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // variable DECLARE @x XML (TestCollection) set @x = '<?xml version="1.0"?> .....' // parameter CREATE PROCEDURE TestProc @testParam XML (TestCollection) AS ... EXEC dbo.TestProc '<?xml version="1.0"?>.....' // columns of table CREATE TABLE TestTable ( i int not null identity(1,1) primary key, x xml (TestCollection) ) INSERT INTO dbo.TestTable VALUES ('<?xml version="1.0"?>....') |
http://technet.microsoft.com/en-us/library/ms184277.aspx
http://en.wikipedia.org/wiki/XML_Schema_(W3C)
http://technet.microsoft.com/en-us/library/ms176009.aspx
'Software Engineering > Etc' 카테고리의 다른 글
[VIM] bomb character (0) | 2014.12.17 |
---|---|
OAuth 2.0 (0) | 2014.11.27 |
[10장] 동기 및 비동기 장치 IO (0) | 2013.08.11 |
[WINDOWS] VS 디버깅시 CXX0017: Error: symbol not found 문제 (0) | 2013.07.11 |
Windows 관련 (0) | 2013.04.10 |