WorkaHolic

XML을 사용하여 SQL Server 데이터 표시

2010. 4. 8. 23:11
반응형

XML을 사용하여 SQL Server 데이터 표시

 

XML(Extensible Markup Language)은 구조적 데이터를 설명하는 형식을 제공하는 메타 마크업 언어입니다. HTML과 달리 XML은 데이터 표현 작업을 처리하지 않습니다. 대신 데이터를 묶는 데 사용하는 태그를 통해 데이터를 설명합니다. 따라서 두 프로그램 간에 데이터를 간단하게 전달할 수 있습니다. Microsoft SQL Server 2000은 XML을 지원하는 일련의 기능을 제공합니다. 이 장에서는 SQL Server 2000에 포함된 몇 가지 XML 기능을 소개하며, XML 지원 기능을 사용하기 위해 간단하고 빠르게 SQL Server를 구성하는 방법에 대해 설명합니다.

 

SELECT 1050404404Statement를 사용하여 XML 생성

 

Transact-SQL SELECT 문과 FOR XML 절을 사용하여 XML 형식의 결과를 검색할 수 있습니다. FOR XML 절의 모드는 다음과 같습니다.

• FOR XML RAW. Null이 아닌 각 열을 특성으로 갖는 일반적인 행 요소로 쿼리 결과 집합의 각 행을 반환합니다.

• FOR XML AUTO. Select 문에 있는 FROM 절의 테이블에 해당하는 중첩 요소로 쿼리 결과를 반환합니다. 기본적으로 AUTO 모드는 선택한 테이블 열을 요소의 특성으로 매핑하지만, ELEMENTS 옵션을 사용하는 경우에는 선택한 테이블 열이 테이블 요소의 하위 요소가 됩니다.

• FOR XML EXPLICIT. 쿼리를 통해 반환되는 XML 결과 집합의 형식을 보다 강력하게 제어할 수 있습니다. 반환되는 XML 문서를 명시적으로 정의하도록 쿼리가 구성되어 있으므로 쿼리 작성자는 올바른 형식으로 XML 문서를 만들어야 합니다. 이 옵션을 사용하면 쿼리 결과 집합을 가장 강력하게 제어할 수 있습니다.

XML 형식의 결과 집합을 생성하려면

1. SQL 쿼리 분석기를 시작한 다음 Northwind 데이터베이스에 연결합니다.

2. 다음 쿼리를 실행합니다.

SELECT * from CUSTOMERS FOR XML RAW

부분적으로 이름에 전역 고유 식별자(GUID)가 포함된 단일 열로 결과 집합을 반환합니다. XML Technology Preview와 달리 이 쿼리 결과는 적절한 형식의 XML 문서가 되는 데 필요한 태그로 묶이지 않습니다. 따라서 여러 개의 쿼리로 한 개의 XML 문서를 생성할 수 있습니다.

 

인터넷을 통해 XML 생성

 

인터넷을 통해 SQL Server XML 지원 기능을 모두 활용하려면 MSDN Developer Center에서 SQL Server 2000 XML 지원 최신 웹 릴리스를 다운로드하여 설치하십시오. 자세한 내용은 http://www.microsoft.com/korea/msdn/xml/default.asp 을 참조하십시오.
인터넷을 통해 SQL Server에 액세스하기 전에 먼저 XML 쿼리를 사용할 수 있도록 인터넷 정보 서비스(IIS)를 실행하는 컴퓨터에 가상 디렉터리를 설정해야 합니다.

 

IIS에서 SQL Server XML 지원 기능을 사용하려면

 

1. 시작 메뉴에서 프로그램을 가리키고 Microsoft SQL Server를 클릭한 다음 IIS에 SQL XML 지원 구성을 클릭합니다.

2. 서버를 확장하고 기본 웹 사이트 폴더를 마우스 오른쪽 단추로 클릭한 다음 새로 만들기를 선택하고 가상 디렉터리를 선택합니다.

3. 속성 페이지의 일반 탭에서 가상 디렉터리 이름을 XMLTest로 입력합니다.

4. 로컬 경로에 C:\ reskit\xmltest를 입력합니다.

5. 보안 탭에서 Northwind 데이터베이스에 대한 관리 권한이 있는 사용자 이름과 암호를 입력합니다.

6. 데이터 원본 탭에서 데이터베이스 서버 이름을 입력한 다음 Northwind를 데이터베이스 이름으로 입력합니다.

7. 설정 탭에서 sql=… 또는 template=… URL 쿼리 허용를 선택합니다.

8. 가상 이름 탭에서 새로 만들기를 클릭한 다음 형식을 템플릿으로, 경로를 C:\reskit\xmltest로 지정하여 쿼리의 새 가상 이름을 추가합니다.

9. 확인을 클릭하여 설정을 저장한 다음 가상 디렉터리 관리 도구를 닫습니다.

 

SQL Server에서 XML 형식 데이터 검색

다음과 같은 방법을 통해 SQL Server 2000을 쿼리하여 XML 형식의 문서를 검색할 수 있습니다.

• HTTP 요청에 쿼리 문자열을 포함하여 SQL Server로 보냅니다. Transact-SQL SELECT 문 또는 X-Path 쿼리를 사용할 수 있습니다.
브라우저를 통해 데이터베이스를 쿼리할 때는 중요한 보안 문제를 고려해야 합니다. 어떤 사용자든 가상 루트에 지정된 사용자 이름의 사용자 컨텍스트를 사용하여 쿼리를 실행할 수 있습니다. 따라서 이러한 유형의 액세스를 허용하는 경우 데이터베이스 내에서 해당 사용자가 갖는 권한을 적절하게 적용해야 합니다.

•Transact-SQL 또는 X-Path 쿼리가 포함된 템플릿 파일을 만든 다음 XML 템플릿(.xsl) 파일을 연결하여 반환되는 XML 문서의 형식을 지정합니다. 이 방법은 쿼리 문자열을 보내는 것보다 쉽고 안전합니다.

 

URL에 Transact-SQL 문을 사용하여 XML을 검색하려면

 
1. Microsoft Internet Explorer 주소 표시줄에 줄 바꿈 없이 다음 쿼리를 입력합니다.

http://localhost/xmltest?sql=SELECT+contactname,+phone+FROM+Customers+FOR+XML+
raw&root=root

2. 커서를 주소 표시줄에 둔 상태에서 Enter 키를 눌러 쿼리를 실행합니다.
다음 내용은 이 쿼리의 실행 결과를 읽기 쉽게 잘라 놓은 것입니다.

<FONT size=2><root> <row contactname="Maria Anders" phone="030-0074321" /> <row contactname="Ana Trujillo" phone="(5) 555-4729" /> <row contactname="Antonio Moreno" phone="(5) 555-3932" /> <row contactname="Thomas Hardy" phone="(171) 555-7788" /> <row contactname="Christina Berglund" phone="0921-12 34 65" /> <row contactname="Hanna Moos" phone="0621-08460" /> … </root> </FONT>

쿼리에 지정된 contactname과 phone 열은 행 요소의 특성입니다. JOIN과 FOR XML AUTO 절을 사용하였으므로 결과가 XML 요소로 나타나며, 보다 계층적인 구조를 이루고 있습니다.

 

AUTO 모드를 사용하여 XML 형식의 결과를 생성하는 쿼리를 실행하려면

 
1. Microsoft Internet Explorer 주소 표시줄에 줄 바꿈 없이 다음 쿼리를 복사합니다.

http://localhost/xmltest?sql=SELECT+customers.CustomerID,OrderID,OrderDate+FROM+Custo
mers+INNER+JOIN+Orders+ON+customers.CustomerID=orders.CustomerID+ORDER+BY+customers.C
ustomerID,OrderID+FOR+XML+AUTO&root=root

2. 커서를 주소 표시줄에 둔 상태에서 Enter 키를 눌러 쿼리를 실행합니다.
다음 내용은 이 쿼리의 실행 결과를 읽기 쉽게 잘라 놓은 것입니다.

<FONT size=2>- <root> - <Customers CustomerID="ALFKI"> <Orders OrderID="10643" OrderDate="1997-08-25T00:00:00" /> <Orders OrderID="10692" OrderDate="1997-10-03T00:00:00" /> <Orders OrderID="10702" OrderDate="1997-10-13T00:00:00" /> <Orders OrderID="10835" OrderDate="1998-01-15T00:00:00" /> <Orders OrderID="10952" OrderDate="1998-03-16T00:00:00" /> <Orders OrderID="11011" OrderDate="1998-04-09T00:00:00" /> </Customers> - <Customers CustomerID="ANATR"> <Orders OrderID="10308" OrderDate="1996-09-18T00:00:00" /> <Orders OrderID="10625" OrderDate="1997-08-08T00:00:00" /> <Orders OrderID="10759" OrderDate="1997-11-28T00:00:00" /> <Orders OrderID="10926" OrderDate="1998-03-04T00:00:00" /> </Customers> … </root> </FONT>

고객 정보를 확장하거나 축소하여 특정 고객의 Orders 요소를 볼 수 있습니다.

 

예약 문자

 

URL 및 XML용 예약 문자 집합이 있습니다. 다음 표에서는 각각의 특수 문자와 그 기능 및 해당 문자 대신 사용할 있는 16진수 값을 보여 줍니다. URL에 포함되는 쿼리의 경우 특수 문자를 해당 16진수 값으로 바꿔야 합니다.

 

URL에 포함되는 특수 문자

문자
용도
16진수 값
+

공백을 나타냅니다.

%20

/

상위 디렉터리와 하위 디렉터리를 구분합니다.

%2f

?

URL과 매개 변수를 구분합니다.

%3f

%

특수 문자를 지정합니다.

%25

#

책갈피를 나타냅니다.

%23

&

각 URL 매개 변수를 구분하는 구분자입니다.

%26


XML 템플릿 문서에 포함되는 쿼리의 경우 XML에 사용된 특수 문자를 다음 표에 나열된 값으로 적절히 인코딩해야 합니다.

 

XML의 특수 문자

특수 문자
용도
엔터티 인코딩
<

태그를 시작합니다.

>

>

태그를 끝냅니다.

<

"

인용 부호

"

'

아포스트로피

&apos;

&

앰퍼샌드

&

 

특수 문자를 사용하여 Transact-SQL 쿼리를 생성하는 XML을 실행하려면

1. Microsoft Internet Explorer 주소 표시줄에 줄 바꿈 없이 다음 쿼리를 입력합니다.

http://localhost/xmltest?sql=SELECT+'';SELECT+DISTINCT+ContactTitle+FROM+Custom
ers+WHERE+ContactTitle+LIKE+'Sa%25'+ORDER+BY+ContactTitle+FOR+XML+AUTO;SELECT+'
'

2. 커서를 주소 표시줄에 둔 상태에서 Enter 키를 눌러 쿼리를 실행합니다.

이 쿼리는 특수 문자를 사용할 뿐만 아니라 태그를 명시적으로 지정하여 수동으로 태그를 생성합니다.
URL에서 저장 프로시저를 실행할 수도 있습니다. 저장 프로시저는 Transact-SQL 구문 EXECUTE sp_name 또는 ODBC 구문 1050404405{call sp_name}을 사용하여 호출할 수 있습니다. 다음 예제는 Northwind 제품 카탈로그를 외부에 동적으로 게시하는 저장 프로시저를 만드는 방법을 보여 줍니다.

 

Internet Explorer를 사용하여 저장 프로시저를 실행하려면

1. SQL 쿼리 분석기를 시작한 다음 서버에 연결합니다.

2. 현재 쿼리 창이 Northwind 데이터베이스를 가리키고 있는지 확인한 후 다음 쿼리를 실행합니다.

CREATE PROCEDURE sp_rk_xmlCatalog
as
SELECT
Category.CategoryName as 'Category',
product.productName as 'Product',
Product.UnitPrice as 'Price'
FROM
Categories Category
INNER JOIN Products Product
ON Category.CategoryID = Product.CategoryID
Order by
Category.CategoryName,
Product.ProductName
FOR XML AUTO

3. Microsoft Internet Explorer 주소 표시줄에 줄 바꿈 없이 다음 쿼리를 입력합니다.

http://localhost/xmltest?sql=EXECUTE+sp_rk_XMLCatalog&root=root

4. 커서를 주소 표시줄에 둔 상태에서 Enter 키를 눌러 쿼리를 실행합니다.

Northwind 데이터베이스의 제품 목록이 범주별로 정렬되어 나타납니다. 다음 내용은 이 쿼리의 실행 결과를 읽기 쉽게 잘라 놓은 것입니다.

<FONT size=2><?xml version="1.0" encoding="utf-8" ?> - <root> - <Category Category="Beverages"> <Product Product="Chai" Price="80" /> <Product Product="Chang" Price="19" /> <Product Product="Chartreuse verte" Price="80" /> <Product Product="C&ocirc;te de Blaye" Price="263.5" /> <Product Product="Guaran&aacute; Fant&aacute;stica" Price="4.5" /> <Product Product="Ipoh Coffee" Price="46" /> <Product Product="Lakkalik&ouml;&ouml;ri" Price="80" /> <Product Product="Laughing Lumberjack Lager" Price="14" /> <Product Product="Outback Lager" Price="15" /> <Product Product="Rh&ouml;nbr&auml;u Klosterbier" Price="7.75" /> <Product Product="Sasquatch Ale" Price="14" /> <Product Product="Steeleye Stout" Price="80" /> </Category> - <Category> … </Category> … </root> </FONT>
데이터베이스에 대해 쿼리할 수 있는 매개 변수를 사용하도록 이 저장 프로시저를 수정하여 특정 범주를 찾을 수도 있습니다. 위에서 정의한 저장 프로시저 sp_rk_xmlCatalog에 기본 매개 변수를 추가할 수 있습니다. 그런 다음 이 프로시저를 Internet Explorer에서 호출합니다.

1. SQL 쿼리 분석기에서 다음 코드를 실행합니다.

ALTER PROCEDURE sp_rk_xmlCatalog
@CategoryName nvarchar(30) = '%'
as
SELECT
Category.CategoryName as 'Category',
product.productName as 'Product',
Product.UnitPrice as 'Price'
FROM
Categories Category
INNER JOIN Products Product
ON Category.CategoryID = Product.CategoryID
WHERE
Category.CategoryName like @CategoryName
Order by
Category.CategoryName,
Product.ProductName
FOR XML AUTO

2. Microsoft Internet Explorer 주소 표시줄에 다음 쿼리를 입력한 다음 Enter 키를 누릅니다.

http://localhost/xmltest/?sql=EXECUTE+sp_rk_xmlCatalog+@CategoryName="Confections"&root=root

Confections 범주의 제품만 나열됩니다.

<FONT size=2>- <root> - <Category Category="Confections"> <Product Product="Chocolade" Price="12.75" /> <Product Product="Gumb&auml;r Gummib&auml;rchen" Price="31.23" /> <Product Product="Maxilaku" Price="20" /> <Product Product="NuNuCa Nuß-Nougat-Creme" Price="14" /> <Product Product="Pavlova" Price="17.45" /> <Product Product="Schoggi Schokolade" Price="43.9" /> <Product Product="Scottish Longbreads" Price="12.5" /> <Product Product="Sir Rodney's Marmalade" Price="81" /> <Product Product="Sir Rodney's Scones" Price="10" /> <Product Product="Tarte au sucre" Price="49.3" /> <Product Product="Teatime Chocolate Biscuits" Price="9.2" /> <Product Product="Valkoinen suklaa" Price="16.25" /> <Product Product="Zaanse koeken" Price="9.5" /> </Category> </root> </FONT>

XML 템플릿

 

쿼리가 복잡해지면 URL을 통해 쿼리를 보낼 때 불편할 수 있습니다. 뿐만 아니라 다른 사람이 편집할 수 있는 주소 표시줄에 쿼리를 입력하고 싶지 않을 수도 있습니다. 이럴 경우 쿼리를 XML 템플릿에 저장할 수 있습니다. 템플릿은 하나 이상의 SQL 문이나 X-Path 쿼리를 포함하는 올바른 형식의 XML 문서입니다. 템플릿을 사용하려면 IIS의 XML 가상 루트에서 템플릿을 사용하도록 명시적으로 구성해야 합니다.
IIS 내에서 템플릿을 사용하도록 XML 가상 루트를 설정하려면 XML 템플릿용으로 설정한 가상 디렉터리 내에 가상 이름을 만듭니다.

 

IIS 가상 루트에서 템플릿 파일을 사용하려면

 

1. 시작 메뉴에서 프로그램을 가리키고 Microsoft SQL Server를 클릭한 다음 IIS에 SQL XML 지원 구성을 클릭합니다.

2. 서버를 확장한 다음 기본 웹 사이트를 클릭합니다.

3. XMLTest 가상 디렉터리를 마우스 오른쪽 단추로 클릭한 다음 속성을 선택합니다.

4. 설정 탭에서 템플릿 쿼리 허용이 선택되어 있는지 확인합니다.

5. 가상 이름 탭에서 새로 만들기를 클릭하고 템플릿 폴더의 가상 이름을 추가합니다.
형식이 템플릿인 템플릿에 대해 가상 이름을 지정한 다음 경로를 C:\reskit\xmltest로 설정합니다.

6. 저장을 클릭한 다음 SQL Server에 대한 IIS 가상 디렉터리 관리자를 닫습니다.

다음 단계에서는 간단한 XML 템플릿을 만든 다음 Internet Explorer를 통해 결과 집합에 액세스하는 방법을 보여 줍니다.

 

간단한 Transact-SQL 쿼리를 실행하는 XML 템플릿을 만들려면

 

1. 다음 코드를 텍스트 편집기에 붙여 넣습니다.

<FONT size=2><ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:query> SELECT SupplierID, CompanyName, ContactName, Phone FROM suppliers ORDER BY CompanyName FOR XML AUTO </sql:query> </ROOT> </FONT>
2. 파일을 C:\xmltest\suppliers.xml로 저장합니다.

3. Microsoft Internet Explorer 주소 표시줄에 다음 쿼리를 입력한 다음 Enter 키를 누릅니다.

http://localhost/xmltest/templates/suppliers.xml

템플릿을 xmltest 디렉터리에 저장하더라도 URL에는 \templates 디렉터리가 포함됩니다. 그 이유는 앞에서 만든 템플릿 가상 이름을 통해 템플릿이 suppliers.xml 템플릿에 매핑되기 때문입니다.

 

EXPLICIT 모드 사용


EXPLICIT 모드를 사용하면 쿼리가 더욱 복잡해지지만 쿼리로 생성되는 XML 문서를 보다 강력하게 제어할 수 있습니다. EXPLICIT 모드를 사용하려면 쿼리가 범용 테이블 형식으로 결과 집합을 생성해야 합니다. 범용 테이블은 결과로 생성되는 XML 문서를 자세히 설명해 줍니다.
다음 표에서는 제품, 범주, 가격 및 공급업체 같은 제품 세부 정보를 반환하는 쿼리 내 데이터의 논리적 구조를 보여 줍니다.

Tag
Parent
Category!1 !name
Product!2 !Name
Product!2 !Supplier!Element
Product!2 !Price!Element
1

NULL

Beverages

NULL

NULL

NULL

2

1

NULL

Chai

Exotic Liquids

80

2

1

NULL

Chang

Exotic Liquids

19

1

NULL

Condiments

NULL

NULL

NULL

2

1

NULL

Aniseed Syrup

Exotic Liquids

10


열 이름은 XML 일반 식별자와 특성 이름을 사용하여 인코딩되었으며 다음과 같이 지정되어 있습니다.

ElementName!TagNumber!AttributeName!Directive

이 구문과 EXPLICIT 모드에 대한 자세한 내용은 SQL Server 온라인 설명서를 참조하십시오.

 

EXPLICIT 모드를 사용하여 Northwind 저장소 카탈로그를 반환하려면

 

1. 다음 코드를 텍스트 편집기에 붙여 넣습니다.

<FONT size=2>SELECT 1 as 'Tag', null as 'Parent', Category.CategoryName as 'Category!1!Name', null as 'Product!2!Name', null as 'ProductDetail!3!Supplier', null as 'ProductDetail!3!Price', null as 'ProductDetail!3!NumberSold' FROM categories Category UNION ALL SELECT 2, 1, Category.CategoryName, Product.ProductName, null, null, null FROM categories Category INNER JOIN products Product on Category.CategoryID = Product.CategoryID UNION ALL SELECT 3, 2, Category.CategoryName, Product.ProductName, null, Product.UnitPrice, null FROM categories Category INNER JOIN products Product on Category.CategoryID = Product.CategoryID INNER JOIN suppliers s on product.supplierid = s.supplierid UNION ALL SELECT 3, 2, Category.CategoryName, Product.ProductName, s.CompanyName, null, null FROM categories Category INNER JOIN products Product on Category.CategoryID = Product.CategoryID INNER JOIN suppliers s on product.supplierid = s.supplierid UNION ALL SELECT 3, 2, Category.CategoryName, Product.ProductName, null, null, sum(quantity) FROM categories Category INNER JOIN products Product on Category.CategoryID = Product.CategoryID INNER JOIN suppliers s on product.supplierid = s.supplierid LEFT JOIN [order details] od ON product.productid = od.productid group by category.categoryname,product.productname,s.companyname ORDER BY 'Category!1!Name', 'Product!2!Name', 'ProductDetail!3!Supplier', 'ProductDetail!3!Price', 'ProductDetail!3!NumberSold' FOR XML EXPLICIT </FONT>
2. 파일을 Catalog.xml로 저장합니다.

3. Microsoft Internet Explorer 주소 표시줄에 다음 쿼리를 입력한 다음 Enter 키를 누릅니다.

http://localhost/xmltest/templates/catalog.xml

결과는 계층적 구조로 나타나며 각 정보는 요소에 대한 특성이 아닌 XML 요소로 저장됩니다. Product 요소에 속하는 요소들처럼 같은 수준의 요소가 Price 및 Supplier처럼 서로 다른 특성을 가질 수 있습니다.

<FONT size=2>- <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> - <Category Name="Beverages"> - <Product Name="Chai"> <ProductDetail Price="80" /> <ProductDetail Supplier="Exotic Liquids" /> </Product> - <Product Name="Chang"> <ProductDetail Price="19" /> <ProductDetail Supplier="Exotic Liquids" /> </Product> … </Category> … </root> </FONT>

XSL 스타일시트
XML 형식 정보가 사용자에게 바로 표시되는 경우 XSL 스타일시트(XSL)를 사용하여 정보의 형식을 지정할 수 있습니다. XSL을 사용하면 XML 문서를 필터링하여 특정 정보만 표시할 수도 있습니다.
예를 들어, 전체 직원의 목록을 게시하는 경우 직원 전화 번호를 내부적으로만 표시하고 외부적으로는 표시하지 않을 수 있습니다. 다음 예제는 직원 정보와 외부 게시용 및 내부 게시용으로 정보의 형식을 각각 지정하는 두 개의 XSL 스타일시트를 반환하는 XML 템플릿을 만듭니다.
다음 XML 템플릿을 EmpList.xml로 저장합니다.

<FONT size=2><?xml version ='1.0' encoding='UTF-8'?> <root xmlns:sql='urn:schemas-microsoft-com:xml-sql'> <sql:query> SELECT FirstName, LastName, Extension 'Extension' FROM Employees FOR XML AUTO </sql:query> </root> </FONT>
Internet Explorer에서 http://localhost/xmltest/templates/emplist.xml을 로드하여 XML 템플릿의 데이터를 봅니다. Employee 요소의 특성은 FirstName, LastName, Extension입니다.
다음 예제는 이 결과를 HTML 문서 형식으로 지정하는 스타일시트를 만듭니다. 이 스타일시트는 반환된 XML 문서에서 모든 Employee 요소에 대해 반복적으로 실행되어 HTML 테이블에 새로운 행을 만들어 특성을 저장합니다.
다음 XSL 스타일시트를 XMLtest 디렉터리에 empInternal.xsl로 저장합니다.

<FONT size=2><?xml version='1.0' encoding='UTF-8'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match = '*'> <xsl:apply-templates /> </xsl:template> <xsl:template match = 'Employees'> <TR> <TD><xsl:value-of select = '@FirstName' /></TD> <TD><B><xsl:value-of select = '@LastName' /></B></TD> <TD><xsl:value-of select = '@Extension' /></TD> </TR> </xsl:template> <xsl:template match = '/'> <HTML> <HEAD> <!-- % style % --> </HEAD> <!-- % body % --> <TABLE border='1' style='width:300;'> <TR><TH colspan='3'>Employees</TH></TR> <TR><TH >First name</TH><TH>Last name</TH><TH>Extension</TH></TR> <xsl:apply-templates select = 'root' /> </TABLE> </BODY> </HTML> </xsl:template> </xsl:stylesheet> </FONT>
Internet Explorer에서 http://localhost/xmltest/templates/emplist.xml?xsl=empInternal.xsl을 로드하여 형식이 지정된 XML 템플릿을 봅니다. 스타일시트는 URL의 XML 템플릿에 적용됩니다. 동일한 XML에 다른 스타일시트를 적용하여 사용자 유형별로 서로 다른 버전의 웹 페이지를 표시할 수도 있습니다.
다음 예제는 전화 번호를 제외하고 직원 이름만 외부에 게시하는 XSL 스타일시트를 만듭니다.
다음 스타일시트를 EmpInternal.xsl로 저장합니다.

<FONT size=2><?xml version='1.0' encoding='UTF-8'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match = '*'> <xsl:apply-templates /> </xsl:template> <xsl:template match = 'Employees'> <TR> <TD><xsl:value-of select = '@FirstName' /></TD> <TD><B><xsl:value-of select = '@LastName' /></B></TD> </TR> </xsl:template> <xsl:template match = '/'> <HTML> <HEAD> <!-- % style % --> </HEAD> <!-- % body % --> <TABLE border='1' style='width:300;'> <TR><TH colspan='3'>Employees</TH></TR> <TR><TH >First name</TH><TH>Last name</TH></TR> <xsl:apply-templates select = 'root' /> </TABLE> </BODY> </HTML> </xsl:template> </xsl:stylesheet> </FONT>
Internet Explorer에서 http://localhost/xmltest/templates/emplist.xml?xsl=empExternal.xsl을 로드하여 새로운 결과를 봅니다.
이 예제에서는 동일한 XML 파일을 사용했지만 Extension 열이 결과에 나타나지 않습니다.
XML 및 SQL Server에 대한 자세한 내용은 다음을 참조하십시오.

• SQL Server 온라인 설명서의 "XML 및 인터넷 지원"
• http://www.microsoft.com/korea/msdn/xml/default.asp
• http://www.microsoft.com/korea/msdn/sqlServer/default.asp

출처 : 한국마이크로소프트(주)

반응형