2 부 3 장 DataBase 를 이용한 XML 문서작성

57
1 XML PROGRAMMING 2 부 3 부 DataBase 부 부부부 XML 부부부부

description

2 부 3 장 DataBase 를 이용한 XML 문서작성. XML 데이터의 저장과 검색 (1). ▶ 텍스트파일로 저장과 검색 확장자가 .xml 인 파일 형태로 XML 데이터를 저장하여 검색 시스템 등으로 검색하는 방법 트랜잭션이나 베타 제어 등과 같은 비교적 소규모인 웹 프로그램에서 사용되는 방법 모든 문서의 검색 - 워드프로세서의 '찾기' 기능과 같이 모든 문서에 대하여 검색 - PowerPoint PPT Presentation

Transcript of 2 부 3 장 DataBase 를 이용한 XML 문서작성

Page 1: 2 부  3 장 DataBase 를 이용한  XML  문서작성

1

XML PROGRAMMING

2 부 3 장 DataBase 를 이용한 XML 문서작성

Page 2: 2 부  3 장 DataBase 를 이용한  XML  문서작성

2

XML PROGRAMMING

XML 데이터의 저장과 검색 (1)

▶▶ 텍스트파일로 저장과 검색

확장자가 .xml 인 파일 형태로 XML 데이터를 저장하여 검색 시스템 등으로 검색하는 방법 트랜잭션이나 베타 제어 등과 같은 비교적 소규모인 웹 프로그램에서 사용되

는 방법 모든 문서의 검색

- 워드프로세서의 ' 찾기 ' 기능과 같이 모든 문서에 대하여 검색

- XML 문서의 논리구조를 유지하고 있는 파일을 검색하면 그 구조를 고려하지 않고 내용에 관계없는 정보까지 나타나게 된다는 문제점을 가지고 있음

구조를 의식한 검색

- XML 문서에서 요소들 사이의 구조를 고려하여 검색

- XML 구조는 그 정보의 의미를 반영하고 있는 것이 일반적이므로 구조를 사용한 검색은 비교적 검색결과가 정확

Page 3: 2 부  3 장 DataBase 를 이용한  XML  문서작성

3

XML PROGRAMMING

XML 데이터의 저장과 검색 (2)▶▶ 관계형 데이터베이스로의 저장과 검색

일반적으로 사용되는 데이터베이스는 관계형 데이터베이스 관계형 데이터베이스는 기본적으로 행과 열로 테이블을 구성하므로 트리 구조를 가진 XML 을 그대로 저장하지 않음 XML 의 구조나 내용을 복수의 테이블로 나누고 XML 문서의 각요소를 매핑하는 기법을 사용

- XML 문서의 논리구조를 유지하고 있는 파일을 검색하면 그 구조를 고려하지 않고 내용에 관계없는 정보까지 나타나게 된다는 문제점을 가지고 있음

XML 문서를 테이블로 표현< 학생테이블 > < 학생 > < 학번 >2001103</ 학번 > < 이름 > 홍길동 </ 이름 > </ 학생 >

..................... 중략 ( 반복 ) < 학생 > < 학번 >2003001</ 학번 > < 이름 > 이은미 </ 이름 > </ 학생 ></ 학생테이블 >

학번 이름2001103 홍길동

… …

2003001 이은미

Page 4: 2 부  3 장 DataBase 를 이용한  XML  문서작성

4

XML PROGRAMMING

XML 데이터의 저장과 검색 (3)▶▶ 관계형 데이터베이스의 검색

학생테이블 학과테이블학번 이름 학년 학과코드 학과코드 학과명

2003001 이은미 1 0001 0001 컴퓨터공학과2002002 박명수 2 0002 0002 정보통신공학과2001103 홍길동 3 0003 0003 산업공학과

SQL 에서는 테이블에서 정보를 추출할 때 SELECT 구문을 사용하는데 이때 SELECT 와 FROM 구 및 WHERE 절을 사용하여 특정 테이블을 검색

학년이 2 학년이상인 학생이름을 검색하고 싶을 경우 , WHERE 조건절에 학년 > 2 라는 조건을 추가하여 검색

SELECT 이름 FROM 학생테이블 WHERE 학년 > 2

SELECT 컬럼이름 FROM 테이블 이름 WHERE 조건

Page 5: 2 부  3 장 DataBase 를 이용한  XML  문서작성

5

XML PROGRAMMING

XML 데이터의 저장과 검색 (4) 복수테이블에 대한 질의문은 학과명이 컴퓨터공학과인 학생의 이름을 검색하기 위해 컴퓨터공학과의 학과코드가 학생테이블의 학과 코드와 같은 조건을 사용

SELECT 학생테이블 . 이름 FROM 학생테이블 , 학과테이블WHERE 학생테이블 . 학과코드 = 학과테이블 . 학과코드 AND 학과테이블 . 학과명 = ‘ 컴퓨터공학과’

▶▶ 추출된 데이터의 XML 로의 변환 데이터베이스에 저장된 데이터를 검색하여 XML 문서를 작성하려면 SQL 을 이용하여 추출한 정보를 XML 로 변환 데이터베이스에서 검색한 데이터를 XML 로 변환하고 다시 HTML 문서형태로 만들어 지기까지 작업순서는 다음과 같다 .

단계 작업1 SQL에서 정보를 추출2 추출한 정보를 XML로 변환3 XML을 XSLT, DOM, SAX 등을 이용하여 HTML로 변환4 HTML을 클라이언트에 보냄

Page 6: 2 부  3 장 DataBase 를 이용한  XML  문서작성

6

XML PROGRAMMING

Excel 2000/97 데이터의 XML 변환▶▶ Excel 2000/97 데이터의 XML 변환

Excel 문서를 XML 로 변환하는 Converter 를 설치해야하는데 교재의 부록을 참고하여 DB2XML 프로그램을 설치 다음의 순서에 따라 작업

① 윈도우즈에 설치되어있는 Microsoft Excel 2000 프로그램을 실행시킨후 , Sheet1 에

그림과 같이 입력하고 ExcelExam.xls 로 저장

Page 7: 2 부  3 장 DataBase 를 이용한  XML  문서작성

7

XML PROGRAMMING

② 윈도우즈에서 설정 (S) 의 제어판 (C) 에 있는 관리도구에서 데이터 원본 (ODBC) 를 실행시키면 그림과 같은 대화상자가 나타나는데 이때 추가 (D) 버튼을 클릭

Excel 2000/97 데이터의 XML 변환 (2)

Page 8: 2 부  3 장 DataBase 를 이용한  XML  문서작성

8

XML PROGRAMMING

③ 새 데이터 원본 만들기 대화 상자에서 Microsoft Excel Driver(*.xsl) 를 선택한 뒤 마침 버튼을 클릭

Excel 2000/97 데이터의 XML 변환 (3)

Page 9: 2 부  3 장 DataBase 를 이용한  XML  문서작성

9

XML PROGRAMMING

④ 그림과 ODBC Microsoft Excel 설정 대화상자에서 데이터원본 이름 (N) 항목에ExcelOdbc 라고 입력하고 통합 문서 선택 (S) 버튼을 클릭후 , 통합 문서 선택 대화 상자에서 저장된 ExcelExam.xls 파일을 선택하고 확인버튼을 클릭

Excel 2000/97 데이터의 XML 변환 (4)

Page 10: 2 부  3 장 DataBase 를 이용한  XML  문서작성

10

XML PROGRAMMING

⑤ DB2XML 프로그램을 실행시키면 DB2XML Application 대화상자가 나타나면 , 그 림 과 같 이 DTD 를 클릭한다 .

Excel 2000/97 데이터의 XML 변환 (5)

Page 11: 2 부  3 장 DataBase 를 이용한  XML  문서작성

11

XML PROGRAMMING

⑥ Specification of Output 대화상자가 나타나는데 이때 그림과 같이 선택하고 ok 버튼을 클릭

⑦ DB2XML Application 대화상자에서 Database 를 선택하면 Specification of Database 대화상자가 대화상자가 나타나는데 그림과 같이 설정하고 ok 버튼을 클릭 .

Excel 2000/97 데이터의 XML 변환 (6)

Page 12: 2 부  3 장 DataBase 를 이용한  XML  문서작성

12

XML PROGRAMMING

⑧ DB2XML Application 대화상자에서 XML Attribute 를 선택하면 Specification of XML Attributes 화면이 나타나는데 그림과 같이 설정

Excel 2000/97 데이터의 XML 변환 (7)

Page 13: 2 부  3 장 DataBase 를 이용한  XML  문서작성

13

XML PROGRAMMING

⑨ DB2XML Application 대 화 상 자 에 서 XML Element 를 선 택 한 다 . 그 러 면Specification of XML Elements 대화상자가 나타나는데 그림과 같이 설정

Excel 2000/97 데이터의 XML 변환 (8)

Page 14: 2 부  3 장 DataBase 를 이용한  XML  문서작성

14

XML PROGRAMMING

⑩ Stylesheet 탭을 누른후 그림과 같이 공백으로 처리

Excel 2000/97 데이터의 XML 변환 (9)

Page 15: 2 부  3 장 DataBase 를 이용한  XML  문서작성

15

XML PROGRAMMING

⑪ Database query 부분에 검색할 질의문을 작성후 , File name 부분에 ExcelExam.xml 이름을 입력하고 Generate XML 버튼을 클릭

Excel 2000/97 데이터의 XML 변환 (10)

Page 16: 2 부  3 장 DataBase 를 이용한  XML  문서작성

16

XML PROGRAMMING

⑫ ①∼⑩ 번 과정을 마치고 나면 그림과 같이 ExcelExam.xml 파일이 생성

⑬ XML 문서를 실행한 결과

실행결과

Excel 2000/97 데이터의 XML 변환 (11)

Page 17: 2 부  3 장 DataBase 를 이용한  XML  문서작성

17

XML PROGRAMMING

▶▶ Access 2000/97 데이터의 XML 변환 앞서 설명한 Excel 2000/97 데이터의 XML 변환에서처럼 DB2XML 을 사용하여 변환

XML 문서를 실행한 결과

Access 2000/97 데이터의 XML 변환

실행결과

실행결과

Page 18: 2 부  3 장 DataBase 를 이용한  XML  문서작성

18

XML PROGRAMMING

객체지향 데이터베이스로의 저장과 검색

▶▶ 객체지향 데이터베이스 XML 데이터를 객체지향 데이터베이스 (Object Oriented DataBase:OODB) 에 저장할 경우 XML 의 트리 구조를 객체지향의 데이터모델에 맞추어 저장 객체지향 언어에서는 다양한 정보를 객체로서 관리 보통 객체는 메모리 상에 존재하고 컴퓨터전원을 끄면 소멸되므로 실제 프로그 램에서는 객체에 대한 정보를 파일 시스템이나 관계형 데이터베이스에 저장하고 프로 그램이 실행될 때마다 정보를 읽어내어 객체를 재구축 함 객체를 재구축 하는 코드는 복잡해지기 쉽고 보수성이 떨어지므로 객체간의 구조를 유 지한 채 디스크에 기록할 수 있는 데이터베이스가 고안됨 객체지향 데이터베이스에서는 문자와 숫자 데이터의 처리와 저장을 중심으로 하는 관계형 데이터베이스보다 다양한 데이터를 취급하는 것이 용이해 짐 . 객체지향 데이터베이스는 복잡한 정보관리가 요구되는 분야를 중심으로 수요가 넓어지 고 있었는데 , XML 의 등장과 함께 XML 데이터구조를 무리 없이 저장할 수 있어서 각광 을 받게 됨 .

Page 19: 2 부  3 장 DataBase 를 이용한  XML  문서작성

19

XML PROGRAMMING

객체지향 데이터베이스로의 저장과 검색 (2)

▶▶ 객체지향 데이터베이스와 XML DOM 형 데이터모델

- DOM 에서 사용되고 있는 객체를 그대로 객체지향 데이터베이스에 저장하는 형식

- 사용하는 클래스는 Node 클래스와 이것을 계승한 Document 클래스 등으로 구성

- 다양한 형태의 XML 을 객체지향언어로 조작하고 싶거나 또는 객체지향 데이터 베이스에 저장할 때 매우 적합함

DTD 형 데이터모델

- XML 문서의 구조는 DTD 정의에 의해 제약을 받을 수 있음 .

- DTD 제약에 따라 XML 문서가 작성되었을 때 DTD 와 XML 문서 내용은 객체지향의 클래스와 인스턴스 관계에 대응됨 .

- 다만 DTD 전체를 하나의 클래스로 취급하는 것은 현실적이 아니므로 보통의 경우 요소형 선언마다 클래스를 작성

Page 20: 2 부  3 장 DataBase 를 이용한  XML  문서작성

20

XML PROGRAMMING

XML 전용데이터베이스로의 저장과 검색

▶▶ XML 전용데이터베이스로의 저장과 검색 XML 전용 데이터베이스의 특징

- XML 전용 데이터베이스의 특징은 XML 과 데이터베이스 데이터모델의 다른 점을 의식할 필요가 없음

- XML 전용 데이터베이스를 사용하는 장점

XML 검색

- 데이터베이스에 저장된 XML 데이터를 검색하는 경우에 관계형 데이터베이스에서는 주로 SQL 을 사용

- XML 전용 데이터베이스 등에서는 XML 전용의 질의 언어가 많이 사용되고 있으며 XML 의 계층구조로 검색하는 특징이 있음

• 테이블이나 객체에서 XML 을 재구축 할 필요가 없음 • 설계 변경 시 작업이 편리함 • 검색할 때는 XML 의 다양한 질의어들을 이용하므로 융통성을 가짐

Page 21: 2 부  3 장 DataBase 를 이용한  XML  문서작성

21

XML PROGRAMMING

XML 전용데이터베이스로의 저장과 검색 (2)

XML-QL

- XML-QL 은 DTD 간의 XML 데이터변환이나 다수의 XML 데이터를 통합하기 위한 목적으로 설계된 XML 질의언어

- SQL 과 비슷한 WHERE-IN-CONSTRUCT 구조로 중첩된 질의를 지원

- WHERE-IN-CONSTRUCT 구조

XQL(XML Query Language)

- XQL 은 XML 문서나 프로그래밍 언어 안에 삽입하여 사용하는 간단한 질의언어

- XQL 은 XQL 식이라 하는 문법에 따라 기술되며 패턴이 XPath 와 같고 노드가 기준

- XQL 은 1998년 2월 문서계 XML 연구자 사이에서 처음 초안이 만들어지고 같은해 9 월에 W3C 에 제안되었고 XquerY 라 고 도 불리며 사 용 시 스 템 으 로 는 Tamino(Software AG) 와 eXcelon(excelon Corp.) 이 있음

WHERE 검색할 XML 패턴을 기술 IN 검색할 정보를 지정

CONSTRUCT 얻고자 하는 XML 결과

Page 22: 2 부  3 장 DataBase 를 이용한  XML  문서작성

22

XML PROGRAMMING

XML 전용데이터베이스로의 저장과 검색 (3)

- XQL 규격은「 http://www.w3c.org/TR/xquery」에서 확인

- XML-QL 과 XQL 과의 일반적 특징을 비교하면 다음의 표와 같다 .

구분 XML-QL XQL

주요특징

질의어가 XML 형식과 유사

질의결과 포멧팅 가능

질의어가 디렉토리 표시방식과 유사

질의 결과 포맷팅 불가능

상용화 주로 학계에서 사용 주로 산업체에서 사용표준화동향 1998 년에 제안

아직 표준화 되지 않음

아직 제안되지 않음

Page 23: 2 부  3 장 DataBase 를 이용한  XML  문서작성

23

XML PROGRAMMING

관계형 데이터베이스와 XML

▶▶ 관계형 데이터베이스의 XML 표현 요소로의 데이터베이스 표현

  - 관계형 데이터베이스에서는 큰 개념을 기술하는 데이터 포인트들이 컬럼으로 구성된 테이블로 표현

- 학생 정보를 표현하기위한 테이블 생성구문

- 테이블 생성결과

CREATE TABLE Student (

StudentNumber varcher(50),

StudentName varcher(50),

Address varchar(100),

TelNumber varchar(50),

EmailAddress varchar(60))

Page 24: 2 부  3 장 DataBase 를 이용한  XML  문서작성

24

XML PROGRAMMING

관계형 데이터베이스와 XML (2) - XML 에서는 데이터 포인트들의 그룹을 다시 그룹핑되어 요소로 표현되는 더 큰 개념 으로 기술 할 수 있음 .

- Student 테이블의 정보를 각각의 요소로 표현한 결과

<!ELEMENT Student (StudentNumber, StudentName, Address, TelNumber, EmailAddress)>

<!ELEMENT StudentNumber (#PCDATA)>

<!ELEMENT StudentName (#PCDATA)>

<!ELEMENT Address (#PCDATA)>

<!ELEMENT TelNumber (#PCDATA)>

<!ELEMENT EmailAddress (#PCDATA)>

<Student>

<StudentNumber> 001 </StudentNumber>

<StudentName> 홍길동 </StudentName>

<Address> 대전시 중구 오정동 </Address>

<TelNumber>042-111-1111 </TelNumber>

<EmailAddress> [email protected] </EmailAddress>

</Student>

Page 25: 2 부  3 장 DataBase 를 이용한  XML  문서작성

25

XML PROGRAMMING

관계형 데이터베이스와 XML (3)

XML 검색

- XML 문서내의 데이터 포인트를 표현하는 또 다른 방법은 속성을 이용

- 아래는 속성을 이용하여 <Student> 를 정의한 소스와 상세 데이터가 <Student> 요소의 속성으로 저장된 부분임 . <!ELEMENT Student EMPTY>

<!ATTLIST Student

StudentNumber CDATA #REQUIRED

StudentName CDATA #REQUIRED

Address CDATA #REQUIRED

TelNumber CDATA #REQUIRED

EmailAddress CDATA #REQUIRED>

<Student StudentNumber=“001”

StudentName=“ 홍길동”

Address=“대전시 중구 오정동”

TelNumber=“042-111-1111"

EmailAddress=“[email protected]"/>

Page 26: 2 부  3 장 DataBase 를 이용한  XML  문서작성

26

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동

▶▶ FOR XML 을 이용한 SQL Server 2000 에서의 검색 FOR XML 을 이용한 SQL Server 2000 에서의 데이터 추출과정

FOR XML 의 기본 문법

Page 27: 2 부  3 장 DataBase 를 이용한  XML  문서작성

27

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (2)

FOR XML 에서의 3 가지 모드

모드 설명RAW 테이블의 각행이 ROW라는 요소로 표현되고 , 컬럼은 속성이 됨AUTO SELECT 구문의 칼럼 순서에 의해 계층 구조 형태로 표현EXPLICT 검색된 데이터의 컬럼이름을 지정하거나 계층 구조 형태로 표현

FOR XML 의 3 가지 옵션

옵션 설명

XMLDATA XML 문서와 함께 해당 문서의 스키마를 반환해 준다 . (XDR)

ELEMENTS ELEMENTS 옵션은 AUTO 모드에서만 사용하는데 컬럼값이 최상위 요소의 하위요소로 표현

BINARY BASE64

검색되는 모든 이진 데이터

(예를 들어 SQL Server 에서 IMAGE 타입의 데이터 ) 가 BASE64로 인코딩되어 표현되며 RAW 모드와 EXPLICIT 모드에서 이 옵션을 함께 사용

Page 28: 2 부  3 장 DataBase 를 이용한  XML  문서작성

28

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (3)

RAW 모드를 이용한 데이터 검색

- FOR XML 의 RAW 모드를 이용하여 SELECT 구문을 수행하면 최상위 요소가 <row>

태그로 표현

- XML 의 계층구조로 표현되지는 않음 .

① 학번 (number) 과 이름 (name) 그리고 주민등록번호 (cs_number) 등으로 구성된 student 테이블을 생성

②student 테이블의 number, name, cs_number 데이터를 추출하기위한 SELECT 구문으로 RAW 모드를 사용 SELECT number, name, cs_number

FROM student FOR XML RAW

number name cs_number ……

20002206 김기동 791103-1234567 ……

20011126 이순정 800208-1587890 ……

…… …… …… ……

20021124 홍길동 810624-1386522 ……

Page 29: 2 부  3 장 DataBase 를 이용한  XML  문서작성

29

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (4)

③ 작성한 코드를 실행하면 <row> 태그가 최상위 요소로 전환 , 컬럼들은 속성이름 (number, name, cs_number) 이 되고 검색된 데이터는 속성값으로 표현

Page 30: 2 부  3 장 DataBase 를 이용한  XML  문서작성

30

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (5)

AUTO 모드를 이용한 데이터 검색

- 단순 검색 : 한 개의 테이블에서 검색할 때 RAW 모드로 검색한 결과와 비슷하게 표현되지만 , AUTO 모드에서는 최상위 요소의 이름이 테이블의 이름으 로 표현

① student 테이블에서 number, name, cs_number 컬럼을 검색하는 구문으로 AUTO 모드만을 사용

SELECT number, name, cs_number FROM student FOR XML AUTO

② 검색결과는 student 테이블 이름이 최상위 요소이름 (<student>) 이 되었고 , 각 각 의 컬럼은 속성이름 (number, name, cs_number, dept_name) 으로 표현

Page 31: 2 부  3 장 DataBase 를 이용한  XML  문서작성

31

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (6)

- ELEMENTS 옵션을 이용한 검색 : AUTO 모드에서 ELEMENTS 옵션을 사용하여 검색 을 하면 테이블의 모든 컬럼들이 각각 최상위 요소 와 그 하위 요소로 표현

① AUTO 모드와 ELEMENTS 옵션을 함께 사용하여 검색 SELECT number, name, cs_number FROM student FOR XML AUTO, ELEMENTS

② 검색결과는 student 테이블 이름이 최상위 요소이름 (<student>) 이 되었고 , 각각의 컬럼이 그 하위 요소이름 (<number>,<name>,<cs_number>) 으로 표현

<student> <number>20002206</number> <name> 김기동</name> <cs_number>791103-1234567</cs_number></student>

.....................중략 ( 반복 )<student> <number>20021124</number> <name> 홍길동 </name> <cs_number>810624-1386522</cs_number></student>

Page 32: 2 부  3 장 DataBase 를 이용한  XML  문서작성

32

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (7)

-두개 이상의 테이블에서 검색 : 두 개 이상의 테이블에서 검색할 때 검색 결과가 계층적 구조로 나타남

① student 테이블과 dept 테이블이 존재하며 , AUTO 모드를 이용하여 검색

SELECT student.number, student.name, student.cs_number,dept.dept_name FROM student, dept WHERE student.number = dept.number FOR XML AUTO

② Student 테이블과 Dept 테이블에서 number, name, cs_number, dept_name 데이터를 추출하기 위한 SELECT 구문

Student 테이블 Dept 테이블number name …… dept_name number ……

20002206 김기동 …… 컴퓨터공학과 20002206 ……

…… …… …… …… …… ……

20021124 홍길동 …… 국어국문학과 20021124 ……

Page 33: 2 부  3 장 DataBase 를 이용한  XML  문서작성

33

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (8)

③ 작성한 코드를 실행하면 student 테이블 이름이 최상위 요소이름 (<student>) 이 되었고 , dept 테이블 이름이 하위 요소이름 (<dept>) 이 되었다 . 또한 각 컬럼은 속성이름 (number, name, cs_number, dept_name) 으로 , 데이터는 속성값으로 표현

Page 34: 2 부  3 장 DataBase 를 이용한  XML  문서작성

34

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (9)

EXPLICIT 모드를 이용한 데이터 검색

- EXPLICIT 모드에서 컬럼별칭 지정 문법

: EXPLICIT 모드를 사용하기 위해서는 SELECT 구문에서 컬럼의 별칭을 기술 , 만약 컬럼별칭을 지정하지 않고 검색할 경우 에러가 발생 , 다음은 컬럼의 별칭을 기술 하는 형식을 나타내고 있음

ElementName ! TagNumber ! PropertyName ! Directive

컬럼별칭지정 설명ElementName XML 문서에서 표현활 요소 이름을 나타냄TagNumber 요소의 태그에 부여되는 고유 값

PropertyName 특정 속성의 이름을 지정하거나 하위 요소이름을 나타냄Directive EXPLICIT 모드에서 지원되는 명령어를 나타냄 (지시어 )

Page 35: 2 부  3 장 DataBase 를 이용한  XML  문서작성

35

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (10)

① EXPLICIT 모드에서 지원되는 명령어를 사용하지 않고 태그의 별칭을 지정하는 소스

SELECT 1 as Tag, NULL as Parent, student.number as [학생정보 ! 1 ! 학번 ], student.name as [학생정보 ! 1 ! 이름 ], student.cs_number as [학생정보 ! 1 ! 주민등록번호 ] FROM student FOR XML EXPLICT

② 실행시킨 결과를 보면 학생정보가 요소이름이 되었고 학생정보의 속성이름으로 학번 , 이름 ,주민등록번호가 생성

<학생정보 학번 ="20002206" 이름 =" 김기동” 주민등록번호 ="791103-1234567"/> <학생정보 학번 ="20011126" 이름 ="이순정” 주민등록번호 ="800208-1587890"/> .....................중략 ( 반복 ) <학생정보 학번 ="20021100" 이름 ="이영진” 주민등록번호 ="810822-1356545"/> <학생정보 학번 ="20021124" 이름 =" 홍길동” 주민등록번호 ="810624-1386522"/>

Page 36: 2 부  3 장 DataBase 를 이용한  XML  문서작성

36

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (11)

- EXPLICIT 모드에서 지원되는 명령어

명령어 설명ELEMENT 해당 데이터를 인코딩하며 XML 문서의 요소 형태로 표현

XML 해당 데이터를 인코딩하지 않고 XML 문서의 요소형태로 표현

XMLTEXT 데이터베이스의 칼럼에 포함된 데이터를 XML 문서에서 요소의 속성으로 표현할 때 사용

CDATA 검색한 데이터를 XML 데이터의 CDATA 섹션으로 표현ID, IDREF, IDREFS

요소의 속성을 id, idref, idrefs 의 형식이 되도록 함

Page 37: 2 부  3 장 DataBase 를 이용한  XML  문서작성

37

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (12) ELEMENT, XML 명령어을 이용한 검색

- ELEMENT 와 XML 명령어는 EXPLICIT 모드와 함께 사용되는데 XML 문서에서 요소를 생성

① 학생의 학번과 이름을 XML 의 요소로 지정한 소스코드

② 위와같은 소스를 실행시키면 학생정보가 최상위 요소이름이 되었고 학번 , 이름 , 주민등록번호가 하위 요소의 이름으로 생성

SELECT 1 as Tag, NULL as Parent, student.number as [학생정보 ! 1 ! 학번 ! ELEMENT], student.name as [학생정보 ! 1 ! 이름 ! ELEMENT], student.cs_number as [학생정보 ! 1 ! 주민등록번호 ! ELEMENT]FROM studentFOR XML EXPLICT

<학생정보 > <학번 >20002206</ 학번 > <이름 > 김기동</ 이름 > < 주민등록번호>791103-1234567</주민등록번호></ 학생정보 >

.....................중략 ( 반복 )

Page 38: 2 부  3 장 DataBase 를 이용한  XML  문서작성

38

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (13) XMLTEXT 명령어를 이용한 검색

- XMLTEXT 명령어는 데이터베이스의 컬럼에 포함된 데이터를 XML 문서에서 요소의 속성으로 표현할 때 사용

① student 테이블이 구성되었다고 가정

② 저장되어있는 데이터를 병역사항 요소의 속성으로 표현SELECT 1 as Tag, NULL as Parent, student.number as [ 병역사항 ! 1 ! 학번 ], student.name as [ 병역사항 ! 1 ! 이름 ], etc as [ 병역사항 ! 1 ! ! XMLTEXT]FROM studentFOR XML EXPLICT

number

name …… Etc

20002206

김기동 …… <추가사항 군별 =“육군” >소집해제 </추가사항 >

20021100

이영진 …… < 추가사항 군별 =“ 해군” > 군필 </ 추가사항 >

…… …… …… ……

20021124

홍길동 …… < 추가사항 군별 =“ 공군” > 군필 </ 추가사항 >

Page 39: 2 부  3 장 DataBase 를 이용한  XML  문서작성

39

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (14)

③ 작성한 구문을 실행시키면 다음과 같이 etc 컬럼에 저장되어있던 데이터가 학생 정보 요소의 속성으로 표현

< 병역사항 학번 ="20002206" 이름 =" 김기동“ 군별 =육군 ">소집해제 </병역사항 >< 병역사항 학번 ="20021100" 이름 ="이영진“ 군별 = 해군 ">군필 </병역사항 >

.....................중략 ( 반복 )< 병역사항 학번 ="20021124" 이름 =" 홍길동“ 군별 = 공군 ">군필 </병역사항 >

Page 40: 2 부  3 장 DataBase 를 이용한  XML  문서작성

40

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (15) CDATA 명령어을 이용한 검색

- CDATA 명령어는 데이터가 text, ntext, varchar, nvarchar 형식일 때만 사용이 가능 데이터를 CDATA 형식으로 표현

① 학생의 주민등록번호를 CDATA 형식으로 표현하기 위해 student.cs_number 컬럼을 검색할 때 별칭을 CDATA 로 표현

② 실행시킨 결과를 보면 학생의 주민등록번호 (cs_number) 가 CDATA 형태로 표현 컬럼 별칭을 지정할 때 PropertyNmae 을 지정해서는 안됨

SELECT 1 as Tag, NULL as Parent, student.name as [학생정보 ! 1 ! 이름 ], student.cs_number as [학생정보 ! 1 ! ! CDATA]FROM studentFOR XML EXPLICT

<학생정보 이름 =" 김기동” <![CDATA[791103-1234567]]></ 학생정보 ><학생정보 이름 ="이순정” <![CDATA[800208-1587890]]></ 학생정보 >

.....................중략 ( 반복 )<학생정보 이름 ="이영진” <![CDATA[810822-1356545]]></ 학생정보 ><학생정보 이름 =" 홍길동” <![CDATA[810624-1386522]]></ 학생정보 >

Page 41: 2 부  3 장 DataBase 를 이용한  XML  문서작성

41

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (16) ID, IDREF, IDREFS 명령어을 이용한 검색

- ID, IDREF, IDREFS 명령어는 XML 문서 내의 요소들이 식별되어야 할 경우에 사용

① 학생의 학번을 ID 형식으로 선언하여 EXPLICIT 모드로 검색하는 소스코드

② 실행시킨 결과를 보면 일반적인 검색과 동일하게 각각의 요소와 속성으로 표현

SELECT 1 as Tag, NULL as Parent, student.number as [학생정보 ! 1 ! 학번 ! ID], student.name as [학생정보 ! 1 ! 이름 ]FROM studentFOR XML EXPLICT

<학생정보 학번 ="20002206" 이름 =" 김기동” ><학생정보 학번 ="20011126" 이름 ="이순정” >

.....................중략 ( 반복 )<학생정보 학번 ="20021100" 이름 ="이영진” ><학생정보 학번 ="20021124" 이름 =" 홍길동” >

Page 42: 2 부  3 장 DataBase 를 이용한  XML  문서작성

42

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (17) XMLDATA 옵션을 이용한 검색

- ID 명령어와 XMLDATA 옵션을 사용하여 EXPLICIT 모드로 검색 , 검색 결과는 스키마 구조를 포함한 XML 형태로 표현하고자 할 때 이용

① 학생의 학번을 ID 형식으로 선언하고 FOR XML 부분에 EXPLICIT 모드와 XMLDATA 옵션을 함께 사용

SELECT 1 as Tag, NULL as Parent, student.number as [ 학생정보 ! 1 ! 학번 ! ID], student.name as [ 학생정보 ! 1 ! 이름 ]FROM studentFOR XML EXPLICT, XMLDATA

Page 43: 2 부  3 장 DataBase 를 이용한  XML  문서작성

43

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (18)

② 소스를 실행시키면 다음과 같이 스키마 정보를 포함한 형태로 나타나며 , 실행결 과처럼 학번의 dt:type 속성이 id 형식으로 정의

<Schema name="Schema1" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <ElementType name="학생정보 " content="mixed" model="open"> <AttributeType name="학번 " dt:type="id"/> <AttributeType name="이름 " dt:type="string"/> <attribute type="학번 "/> <attribute type="이름 "/> </ElementType></Schema><학생정보 xmlns="x-schema:#Schema1" 학번 ="20002206" 이름 =" 김기동 " ><학생정보 xmlns="x-schema:#Schema1" 학번 ="20011126" 이름 ="이순정 " >

.....................중략 ( 반복 )<학생정보 xmlns="x-schema:#Schema1" 학번 ="20021100" 이름 ="이영진 " ><학생정보 xmlns="x-schema:#Schema1" 학번 ="20021124" 이름 =" 홍길동 " >

Page 44: 2 부  3 장 DataBase 를 이용한  XML  문서작성

44

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 ▶▶ OPENXML 을 이용한 SQL Server 2000 에서의 저장

OPENXML 을 이용한 SQL Server 2000 에서의 데이터 저장과정

OPENXML 의 기본 문법

- OPENXML 은 SQL Server 2000 에서 로우셋 제공자로 XML 문서의 로우셋 뷰를 생성

- 로우셋은 테이블과 같기 때문에 SELECT쿼리에서 테이블 혹은 관계형 뷰 대신에 사용

- OPENXML 은 XML 문서나 조각으로부터 데이터를 데이터베이스 테이블에 저장

SQL Server2000

XML문서

FOR XML

OPENXML

SQL Server2000

XML문서

FOR XML

OPENXML

OPEN XML (idoc, rowpattern, flags) [WITH (SchemaDecl | Tablename)]

㉯ WITH 구문㉮ OPEN XML의 파라미터

Page 45: 2 부  3 장 DataBase 를 이용한  XML  문서작성

45

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (2)

OPENXML 의 파라미터

- OPENXML 의 파라미터는 XML 문서를 받아서 sp_preparedocument 프로시저를 사용 하여 XML 문서를 분석하여 메모리에 올려놓고 핸들값을 반환해 주고 , 핸들값이 유지 되는 한 메모리상에 분석된 XML 문서가 상주하도록 함

파라미터 설 명

IdocXML 문서를 처리하기 위한 내부적으로 다루는 handle 값 sp_preparedocument 시스템 저장 프로시저를 사용하여 document handle 을 받아냄

Rowpattern Xpath 표현 , 이 표현은 생성된 로우셋으로 매핑될 XML 문서 안의 노드를 식별

Flags

XML 문서의 속성 /하위 요소가 생성되는 행과 매핑되는 형태를 결정하는 태그

0 일때 속성 중심의 매핑에 대한 기본값

1 일때 속성 중심 매핑을 할대

2 일때 요소 중심으로 매핑하여 나타낼때

3 일때 Byte 타입 혼합하여 매핑할때

Page 46: 2 부  3 장 DataBase 를 이용한  XML  문서작성

46

XML PROGRAMMING

MS-SQL Server 2000 과 XML 과의 연동 (3)

WITH 구문

- WITH 문을 사용하여 실제 테이블이나 컬럼에 각 노드를 매핑시킬수 있고 , 생성할 로우셋의 설명을 제공하는데 사용

선택사항 내용지정하지 않음 정의된 로우셋 스키마를 사용

테이블 사용 이미 존재하는 테이블 이름을 지정하여 그 테이블 스키마를로우셋 뷰를 생성하는데 사용

직접 지정기본값으로 로우셋 컬럼 같은 이름으로 된 XML 의 속성 /하위요소로 매핑 , 만약 로우셋 칼럼 이름이 다르거나 컬럼을 XML의 메타 속성으로 매핑하고자 할 때 , 매핑 정보를 추가할 수 있음

Page 47: 2 부  3 장 DataBase 를 이용한  XML  문서작성

47

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (1)▶▶ OPENXML 을 이용한 데이터 저장

OPENXML 이 데이터베이스 테이블에 데이터를 저장하는 단계

① FOR XML 에서와 동일하게 학번 (number) 과 이름 (name), 주민등록번호 (cs_number) 등으로 구성된 student 테이블을 생성하여 파라미터와 구문을 적용

순서 내용1 XML 문서의 DOM 표현을 메모리에 생성2 OPENXML 을 사용하여 XML 로우셋 뷰를 생성 (OPENXML 의

일부분으로 원하는 요소를 얻기 위한 Xpath 표현을 지정함 )

3 생성된 로우셋을 INSERT, UPDATE, DELETE 문에 전달하여 데이터베이스를 갱신

4 메모리상의 XML 문서를 제거

number name cs_number ……

20002206 김기동 791103-1234567

……

20011126 이순정 800208-1587890

……

…… …… …… ……

20021124 홍길동 810624-1386522

……

Page 48: 2 부  3 장 DataBase 를 이용한  XML  문서작성

48

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (2)

② XML 을 삽입 하 기 위 한 사 용 자 저 장 프 로 시 저 를 생 성 하 기 위 해 CREATE PROCEDUER(PROC 생략 가능 ) 의 구문을 사용 , 프로시저 이름은 insert_student, 매개 변수는 xmldata 라고 입력하여 지정

- 저장 프로시저 종류

CREATE PROC insert_student @xmldata ntext AS........ 중략

프로시저 내용

시스템저장프로시저SQL 서버에서 미리 저장되어져 사용되는 프로시저 .거의 대부분이 master 데이터베이스에 저장되어 있음 .Sp_help 등과 같이 sp_로 시작하는 프로시저 .

사용자 저장 프로시저 사용자가 임의로 생성하여 사용하는 프로시저 .

확장 저장 프로시저 DLL 로 구현되어 있는 외부 함수들이 이에 속함 .Xp_ 로 시작하는 프로시저 .

Page 49: 2 부  3 장 DataBase 를 이용한  XML  문서작성

49

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (3) ③ hDoc 이라는 하나의 변수를 선언하기 위하여 DECLARE 구문을 이용

④ XML 을 문 서 로 읽어 들 여 구 문 분석을 하 기 위 해 EXEC 구 문 을 사 용 , sp_xml_preparedocument 저장 프로시저를 통해서 xmldata 변수의 내용을 읽음

CREATE PROC insert_student @xmldata ntext ASDECLARE @idoc int........ 중략

DECLARE @idoc intEXEC sp_xml_preparedocument @hDoc OUTPUT, @xmldata........ 중략

⑤ 읽어온 XML 문서에서 root 엘리먼트 이하를 student 테이블에 삽입하기 위하여 INSERT INTO 구문과 WITH 구문을 사용 . OPENXML 을 사용하여 XML 구조와 관계형 구조를 매칭

INSERT INTO studentSELECT *FROM OPENXML[@hDoc, '/root/student',2]WITH student

Page 50: 2 부  3 장 DataBase 를 이용한  XML  문서작성

50

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (4) ⑥읽어온 XML 문서를 메모리에서 sp_xml_removedocument 저장프로시저를 통해 제거

⑦ OPENXML 을 이용한 프로시저를 작성후 SQL Server 2000 의 저장프로시저에 저장

WITH studentEXEC sp_xml_removedocument @hDocGO

CREATE PROC insert_student @xmldata ntext ASDECLARE @idoc intEXEC sp_preparedocument @idoc OUTPUT, @xmldataINSERT INTO studentSELECT *FROM OPENXML[@idoc, '/root/student',2]WITH studentEXEC sp_removedocument @idocGO

Page 51: 2 부  3 장 DataBase 를 이용한  XML  문서작성

51

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (5)

⑨ 입력폼을 가지고 있는 HTML 문서를 작성한 후 그림과 같이 입력하여 전송 .

InsertExam_1.html 에서는 입력된 데이터를 student_insert.xml 파일로 보내고 , student_insert.xml 은 데이터를 받아서 OPENXML 구문이 있는 프로시저를 실행 .

<root xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:header> <sql:param name ="xmldata"> </student> <sql:param> </sql:header> <sql:query> exec insert_student @xmldata </sql:query> </root>

⑧ 생성한 저장프로시저를 실행하기 위하여 다음과 같이 XML 문서를 작성

CLICK

Page 52: 2 부  3 장 DataBase 를 이용한  XML  문서작성

52

XML PROGRAMMING

OPENXML 을 이용한 SQL Server 2000 에서의 저장 (6)

⑩ 저장작업이 실행된 후의 student 테이블의 모습 .

저장프로시저에서 OPENXML 구문과 함께 사용한 INSERT INTO 가 데이터를 SQL Server 2000 의 테이블에 저장

number name cs_number ……20002206 김기동 791103-1234567 ……

20024104 김석훈 760322-1567899 ……

20011126 이순정 800208-1587890 ……

…… …… …… ……

20021124 홍길동 810624-1386522 ……

Page 53: 2 부  3 장 DataBase 를 이용한  XML  문서작성

53

XML PROGRAMMING

SQL Server 2000 에서의 HTTP 접근

SQL Server 2000 의 설정과정은 교재 424 Page 를 참고

Page 54: 2 부  3 장 DataBase 를 이용한  XML  문서작성

54

XML PROGRAMMING

HTTP 를 이용한 데이터 검색 (1)▶▶ URL 쿼리 허용

URL 쿼리는 URL 쿼리 문자열이 가상 디렉터리에 접근될 때 사용되는 T-SQL 구문 URL 쿼리는 개발한 SQL Server 애플리케이션을 테스트할 때 유용 클라이언트 애플리케이션이 T-SQL 문장을 서버측에 보내기 위한 문자열을 사용할 수 있기 때문에 이 URL 쿼리는 보안적인 측면이 약하다 .

컬럼 중에서 number, name, css_number 의 값만을 검색 , 공백이었던 부분에 + 기호를 사용하여 연결

http://203.247.40.92/student?sql=SELECT* FROM member FOR XML AUTO&root=root

URL 쿼리 실행 결과

http://203.247.40.92/student?sql=SELECT+number,name,css_number+FROM+ member+FOR+XML+AUTO&root=root

URL 쿼리 실행 결과

ID PASSWORD

stud1, stud2, stud3

pw1, pw2, pw3

※ test 용 임시 ID 및 PASSWORD

Page 55: 2 부  3 장 DataBase 를 이용한  XML  문서작성

55

XML PROGRAMMING

HTTP 를 이용한 데이터 검색 (2)

▶▶ 템플릿 쿼리 허용 템플릿 쿼리는 애플리케이션이 가상디렉터리를 통해 처리되는 것을 허용하는 방법으로 템플릿은 웹서버에 xml 파일로 저장 T-SQL 구문을 파일 내에 포함하며 쿼리를 수행하기 위해 서버측의 템플릿을 사용하는 데 이때 쿼리 결과만을 클라이언트에게 보여줌 . 이러한 방법은 실제 쿼리의 내용을 완전히 숨길수 있기 때문에 데이터 처리에 대해 보 안효과를 가지고 있음 설정 방법은 교재 432 페이지 참고

‘student.xml’ 파일 -> CLICK

http://203.247.40.92/student/template/student.xml

템플릿 쿼리 실행 결과

저장프로시저 저장과 프로시저 호출을 위한 XML 문서 작성 => 교재 435 페이지 및 사례연구 1( 학생정보관리편 ) 참고

Page 56: 2 부  3 장 DataBase 를 이용한  XML  문서작성

56

XML PROGRAMMING

HTTP 를 이용한 데이터 검색 (3)

▶▶ XPath 허용 XPath 언어는 표준 탐색언어로 W3C 에 의해서 표준규약이 완성 XPath 쿼리는 XPath 언어의 주석 스키마로 된 데이터를 검색하는 것을 가능하게 한다 . 스키마는 데이터베이스의 데이터와 XML 요소 속성을 매핑하는 파일로 웹서버 상에 저장 , 스키마에 의해 지정된 데이터가 반환될 것인지를 XPath 로 지정할 수 있음 .

http://203.247.40.92/student/student_dbobject/member/@number

XPath 실행 결과

▶▶ Post 허용 post 방식은 XML 이외의 다른 스크립트 언어나 웹언어에서 데이터를 전송할 때에도 많이 사용하는 방식

Page 57: 2 부  3 장 DataBase 를 이용한  XML  문서작성

57

XML PROGRAMMING

DataBase 를 이용한 XML 문서 작성

교재 440 페이지 및 사례연구 1( 학생정보관리편 ) 참고

사례연구 1 ( 학생정보관리편 )

사례연구 2 (XML 을 이용한 쇼핑몰 )

http://203.247.40.92/

CLICK

http://203.247.40.92/shop

CLICK

※ 사례연구 1, 2 예제 사이트 이용시 데이터 삭제 금지 !