Download presentation
Presentation is loading. Please wait.
Published bySugiarto Oesman Modified 6년 전
1
ㅎㅎ MS-SQL서버 2000과 XML MS-SQL 서버 2000과 XML 활용 HTTP를 이용한 XML 데이터 접근
OpenXML을 사용한 XML 데이터 저장
2
학습목표 12장. MS-SQL서버 2000과 XML RDB구조에 XML 데이터 저장과 검색방법 학습
MS-SQL Server 2000과 XML과의 연동 방법 학습 데이터베이스로부터 XML문서 검색 방법 이해 웹 서버를 통한 XML 문서 검색과 저장 방법 학습
3
Section 01 MS-SQL 2000 서버와 XML 활용
SELECT ~ FOR XML 모드 SELECT문에 FOR XML을 덧붙이는 것만으로 SQL서버 질의처리기는 결과셋 대신 XML 스트림을 결과값으로 보냄 FOR XML 키워드를 추가하는 것과 함께 해당하는 XML 결과가 어떤 모드로 반환되지 적절히 지정해야 한다. 지정 모드: RAW, AUTO, EXPLICIT 모드 형식 SELECT 조회할_컬럼목록 FROM 테이블_이름 WHERE 검색_조건 FOR XML AUTO | RAW | EXPLICIT [, XMLDATA] [, ELEMENTS] [, BINARY BASE64]
4
Section 01 MS-SQL 2000 서버와 XML 활용
RAW 모드 가장 쉬운 FOR XML 모드 RAW 모드를 사용한 질의는 수행한 결과를 각 XML 요소로 구성된 결과셋으로 반환 요소는 각각의 컬럼을 속성으로 포함 반환된 요소는 단순하게 매칭되는 컬럼 이름을 속성 이름으로 각각의 로우로 표현 형식 SELECT 조회할_컬럼목록 FROM 테이블_이름 WHERE 검색_조건 FOR XML RAW
5
Section 01 MS-SQL 2000 서버와 XML 활용
AUTO 모드 반환되는 XML 결과를 원하는 형태로 생성할 수 있음 테이블에서 조회된 결과셋은 조회된 테이블명을 XML 요소명으로 표현 형식 RAW 모드와 AUTO 모드 차이 AUTO 모드에서 ELEMENTS를 지정하면 요소 중심적인 XML 데이터를 반환할 수 있다. AUTO 모드에서 ELEMENTS를 지정하면 모든 테이블의 컬럼은 소속된 테이블을 표현하는 요소의 하위 요소로 표현된다. SELECT 조회할_컬럼목록 FROM 테이블_이름 WHERE 검색_조건 FOR XML AUTO
6
Section 01 MS-SQL 2000 서버와 XML 활용
EXPLICIT 모드 복잡하지만, 유연하고 세부적으로 XML 결과 제어 가능 각 컬럼의 일부 데이터를 적절히 이용해서 테이블형 데이터로 XML 데이터를 구성
7
Section 01 MS-SQL 2000 서버와 XML 활용
EXPLICIT 질의문에서 지원하는 명령 명령 내용 element 컬럼 데이터가 인코딩되며 XML 결과의 자식 요소로 표현할 때 사용 xml XML 결과의 자식요소로 해당 컬럼이 표현. 데이터 인코딩 × hide 특정 컬럼이 테이블형 데이터에 존재하는 것을 인식하지만, XML 결과로 반환되지 않도록 함 xmltext 오버플로우 컬럼의 XML 데이터 추출에 사용 오버플로우 컬럼은 현재 요소에 더할 경우 사용 오버플로우 컬럼이 테이블의 다른 곳에 속하지 않는 XML 문자열을 사용자가 지정해 저장하기 위해 사용 cdata 결과로 생긴 XML 데이터에 CDATA 섹션으로 컬럼 표현 ID, IDREF, IDREFS XMLDATA와 함께 ID, IDREF, 또는 IDREFS 타입 속성을 인라인 스키마로 반환할 때 사용 여러 문서를 서로 교환할 경우 요소간 관계를 생성할 때 유용
8
Section 02 HTTP를 이용한 XML 데이터 접근
Microsoft IIS의 가상 디렉토리를 구축하는 방법 XML 데이터 처리, 다른 애플리케이션 적용이 용이 ASP 애플리케이션보다 적은 코드를 이용하면서도 쉽고 빠르게 데이터 중심적인 웹 사이트 구축 가능 XSL 스타일시트를 XML 데이터에 적용해서 HTML 문서로 변형한 후, 브라우저 기반 클라이언트로 전송하거나 WML과 같은 다른 문서 형태로 변환해서 WAP 형식으로 휴대폰, PDA 등에 사용할 수 있는 솔루션 개발도 가능
9
Section 02 HTTP를 이용한 XML 데이터 접근
SQL 서버의 HTTP 처리 구조 SQL 서버는 SQLISAPI를 이용해서 HTTP 처리 IIS에 가상 디렉토리 루트를 생성한 후, HTTP URL을 이용하면 SQL 서버의 데이터베이스로 접근 가능 SQLISAPI 애플리케이션은 SQL 서버 2000의 OLE-DB 공급자를 이용해서 클라이언트로 XML이나 HTML 데이터를 전송 [그림 12-21] SQL 서버의 HTTP 데이터 접근 구조
10
Section 02 HTTP를 이용한 XML 데이터 접근
클라이언트 애플리케이션의 데이터 요청 방법 FOR XML 질의문을 질의 스트링으로 URL에 전송 XML 질의 템플릿을 ISAPI 애플리케이션에 포스팅 XML 질의 템플릿을 웹 서버의 가상 루트에 지정 XML 스키마를 웹 서버의 가상 루트에 정의
11
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 SQL XML 지원 구성 도구
12
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 새로운 가상 디렉토리 설정
13
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 가상 디렉토리 이름과 경로 지정
14
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 가상 디렉토리 보안 설정
15
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 데이터 원본 지정
16
Section 02 HTTP를 이용한 XML 데이터 접근
IIS 가상 디렉토리를 통한 데이터베이스 처리 데이터 접근 지정 URL 쿼리는 URL 쿼리 문자열이 가상 디렉토리에 접근될 때 사용 되는 T-SQL 구문 템플릿 질의는 가장 일반적인 애플리케이션이 가상 디렉토리를 통해 처리되는 것을 허용하는 방법 XPath 질의는 XPath 언어의 주석 스키마로 된 데이터를 검색할 수 있다. 수행된 결과는 클라이언트로 반환 템플릿을 보낼 때 POST 방식을 사용하려면 POST 허용과 URL 쿼리 허용 옵션이 모두 체크해야 함
17
Section 02 HTTP를 이용한 XML 데이터 접근
가상 이름 생성
18
Section 02 HTTP를 이용한 XML 데이터 접근
고급 옵션 설정
19
Section 02 HTTP를 이용한 XML 데이터 접근
URL 질의 사용 가상 디렉토리가 제대로 설정되었는지 확인할 때 사용 URL 질의를 가능하게 한 후, XML 가능 브라우저로 질의문 실행 URL에서 데이터를 추출할 경우 질의와 다른 설정이 적절한지 확인하기 위해 파라미터를 이용할 수 있음 파라미터는 URL 질의 문자열에 표준 형식을 사용 전송 URL과 파라미터를 분리하려면 ? 기호를 사용 여러 개의 파라미터를 보낼 때는 각 파라미터를 & 기호 이용 사용 예(2개의 파라미터 이용)
20
Section 02 HTTP를 이용한 XML 데이터 접근
URL 질의문에서 자주 사용하는 특수문자 인코딩 값 문자 16진수 인코딩 값 설명 + %20 공백 / %2F 디렉토리 구분자 ? %3F 파라미터 구분자 % %25 인코딩 문자 식별자 # %23 북마크 식별자 & %26
21
[실습] URL 질의에서 저장 프로시저 수행 (1/3)
새 저장 프로시저 선택
22
[실습] URL 질의에서 저장 프로시저 수행 (2/3)
질의문 입력과 구문 검사
23
[실습] URL 질의에서 저장 프로시저 수행 (3/3)
EXECUTE 구문과 저장 프로시저 이름, 파라미터를 브라우저 주소란에 입력 → 실행 → 결과 확인
24
템플릿(template) 템플릿 생성과 사용 Section 03 XML 템플릿 사용
데이터를 처리하기 위해 질의문을 미리 생성해 놓은 문서 XML 템플릿을 이용하면 좀더 안정적이고, 제어 가능한 환경을 만들 수 있다. 템플릿 생성과 사용 SQL문을 사용하기 위해서 최상위 요소에 "sql" 네임스페이스를 지정하고 <query> 요소를 사용
25
northwind DB에서 제품목록을 보여주는 템플릿생성 예
Section 03 XML 템플릿 사용 northwind DB에서 제품목록을 보여주는 템플릿생성 예 <?xml version='1.0' ?> <categorylist xmlns:sql='urn:schemas-microsoft-com:xml-sql'> <sql:query> SELECT categoryid, categoryname FROM categories FOR XML AUTO, ELEMENTS </sql:query> </categorylist> categories.xml [그림 12-38] XML 템플릿을 IIS 웹 서버를 통해 실행한 결과
26
템플릿 확장: 파라미터 추가 Section 03 XML 템플릿 사용 파라미터는 사용자가 다양한 결과를 볼 수 있게 함
파라미터는 템플릿 헤더에 위치하고, <header> 태그를 사용해서 정의 각 파라미터는 <param> 태그로 정의
27
템플릿 확장: 파라미터 추가 예 Section 03 XML 템플릿 사용
<?xml version='1.0' ?> <productlist xmlns:sql='urn:schemas-microsoft-com:xml-sql'> <sql:header> <sql:param name='categoryid'>1</sql:param> </sql:header> <sql:query> SELECT productid, productname, unitprice FROM products WHERE categoryid FOR XML AUTO, ELEMENTS </sql:query> </productlist> products.xml [그림 12-39] 템플릿 실행 결과(카테고리 번호=2)
28
XSL 스타일시트를 템플릿에 적용하는 방법 Section 03 XML 템플릿 사용 클라이언트에서 스타일시트 적용하는 방법
서버에서 스타일시트를 적용하는 방법
29
클라이언트 XSL 적용 방법 Section 03 XML 템플릿 사용
스타일시트에 접근해 적용할 수 있다. 처리 명령은 템플릿에 스타일시트 위치를 선언
30
서버 XSL 적용 방법 Section 03 XML 템플릿 사용 템플릿으로 추출된 데이터에 정확한 스타일시트를 적용
서버에서 XSL를 적용하려면 xsl 속성을 템플릿에 최상위 요소에 추가해야 함
31
HTML 폼에 템플릿 사용 Section 03 XML 템플릿 사용
웹 페이지에서 템플릿을 사용하기 위해 숨김 폼(hidden form) 이용 숨김 폼은 브라우저에는 나타나지 않지만, 내부적으로 데이터나 문자열을 전송하기 위해 유용하게 사용
32
Section 04 OpenXML을 사용한 XML 데이터 저장
애플리케이션(DOM, SAX 활용)을 작성해서 XML 문서에서 데이터를 추출하고, 추출한 데이터를 데이터베이스에 저장하는 방식 애플리케이션을 별도로 개발해야 하는 부담이 있음 데이터베이스에서 제공하고 있는 API나 프로시저 사용 MS-SQL 서버는 XML 문서를 데이터베이스에 저장하기 위해 OpenXML 기능을 제공
33
Section 04 OpenXML을 사용한 XML 데이터 저장
34
Section 04 OpenXML을 사용한 XML 데이터 저장
데이터 형 최대 크기 char 8000문자 varchar nchar 4000문자 nvarchar Text 2,147,483,647 문자 nText 1,073,741,823 문자
35
Section 04 OpenXML을 사용한 XML 데이터 저장
로우셋의 로우와 컬럼은 T-SQL에 지정한 파라미터에 의해 결정 OPENXML(iDoc, rowpattern, flags) [WITH (rowsetschema [colpatterns] | tablename)] OpenXML 함수 정의 OPENXML 'Order', 1) WITH (OrderID INTEGER, CustomerID nCHAR(5), EmployeeID INTEGER, OrderDate DATETIME) OpenXML 함수 사용 예
36
[실습] OpenXML을 이용한 XML 데이터 저장 (1/3)
Create Database XMLDB ; 데이터베이스 생성 Create Table Imageinfo ( id int, title varchar(50), category varchar(50), rcolor int, gcolor int, bcolor int ) 테이블 생성
37
[실습] OpenXML을 이용한 XML 데이터 저장 (2/3)
간단한 SQL 질의문을 OpenXML을 사용하여 작성 VARCHAR(2000) = ' <?xml version="1.0"?> <images> <image rcolor="255" gcolor="192" bcolor="38"> <id> 001</id> <title> shirt </title> <category> cloth </category> </image> </images> ' -- XML 문서 파싱 INTEGER EXEC INSERT imageinfo (id, title, category, rcolor, gcolor, bcolor) SELECT id, title, category, rcolor, gcolor, bcolor FROM 'images/image', 1) WITH ( id INTEGER 'id', title varchar(50) 'title', category varchar(50) 'category', rcolor INTEGER gcolor INTEGER bcolor INTEGER 앞에서 생성한 테이블이 존재하기 때문에 INSERT 구문을 사용하여 생성된 테이블에 XML 문서의 속성을 추출해서 저장한다.
38
[실습] OpenXML을 이용한 XML 데이터 저장 (3/3)
XML 문서의 데이터가 실제 테이블에 저장되었는지 SELECT 구문을 사용해서 확인 select * from imageinfo;
Similar presentations