1 / 57

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

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

sirius
Télécharger la présentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. XML 데이터의 저장과 검색 (1) ▶텍스트파일로 저장과 검색 • 확장자가 .xml인 파일 형태로 XML 데이터를 저장하여 검색 시스템 등으로 검색하는 방법 • 트랜잭션이나 베타 제어 등과 같은 비교적 소규모인 웹 프로그램에서 사용되는 방법 • 모든 문서의 검색 - 워드프로세서의 '찾기' 기능과 같이 모든 문서에 대하여 검색 - XML문서의 논리구조를 유지하고 있는 파일을 검색하면 그 구조를 고려하지 않고내용에관계없는 정보까지 나타나게 된다는 문제점을 가지고 있음 • 구조를 의식한 검색 - XML 문서에서 요소들 사이의 구조를 고려하여 검색 - XML구조는 그 정보의 의미를 반영하고 있는 것이 일반적이므로 구조를 사용한 검색은 비교적 검색결과가 정확

  3. XML 데이터의 저장과 검색 (2) ▶관계형 데이터베이스로의 저장과 검색 • 일반적으로 사용되는 데이터베이스는 관계형 데이터베이스 • 관계형 데이터베이스는 기본적으로 행과 열로 테이블을 구성하므로 트리 구조를 가진 XML을 그대로 저장하지 않음 • XML의 구조나 내용을 복수의 테이블로 나누고 XML문서의 각요소를 매핑하는 기법을 사용 - XML문서의 논리구조를 유지하고 있는 파일을 검색하면 그 구조를 고려하지 않고내용에 관계없는 정보까지 나타나게 된다는 문제점을 가지고 있음 • XML 문서를 테이블로 표현 • <학생테이블> • <학생> • <학번>2001103</학번> • <이름>홍길동</이름> • </학생> • .....................중략(반복) • <학생> • <학번>2003001</학번> • <이름>이은미</이름> • </학생> • </학생테이블>

  4. XML 데이터의 저장과 검색 (3) ▶관계형 데이터베이스의 검색 • SQL에서는 테이블에서 정보를 추출할 때 SELECT 구문을 사용하는데 이때 SELECT 와FROM 구 및 WHERE 절을 사용하여 특정 테이블을 검색 • 학년이 2학년이상인 학생이름을 검색하고 싶을 경우, WHERE 조건절에 학년 > 2 라는 조건을 추가하여 검색 SELECT컬럼이름 FROM테이블 이름 WHERE조건 SELECT 이름 FROM 학생테이블 WHERE 학년 > 2

  5. XML 데이터의 저장과 검색 (4) • 복수테이블에 대한 질의문은 학과명이 컴퓨터공학과인 학생의 이름을 검색하기위해 컴퓨터공학과의 학과코드가 학생테이블의 학과 코드와 같은 조건을 사용 SELECT 학생테이블.이름 FROM 학생테이블, 학과테이블 WHERE 학생테이블.학과코드= 학과테이블.학과코드 AND학과테이블.학과명= ‘컴퓨터공학과’ ▶추출된 데이터의 XML로의 변환 • 데이터베이스에 저장된 데이터를 검색하여 XML문서를 작성하려면 SQL을 이용하여 추출한 정보를 XML로 변환 • 데이터베이스에서 검색한 데이터를 XML로 변환하고 다시 HTML 문서형태로 만들어 지기까지 작업순서는 다음과 같다.

  6. Excel 2000/97 데이터의 XML 변환 ▶Excel 2000/97 데이터의 XML 변환 • Excel 문서를 XML로 변환하는 Converter를 설치해야하는데 교재의 부록을 참고하여 DB2XML 프로그램을 설치 • 다음의 순서에 따라 작업 ① 윈도우즈에 설치되어있는 Microsoft Excel 2000프로그램을 실행시킨후, Sheet1에 그림과 같이 입력하고 ExcelExam.xls로 저장

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

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

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

  10. Excel 2000/97 데이터의 XML 변환 (5) ⑤ DB2XML 프로그램을 실행시키면 DB2XML Application 대화상자가 나타나면, 그림과 같이DTD를 클릭한다.

  11. Excel 2000/97 데이터의 XML 변환 (6) ⑥ Specification of Output 대화상자가 나타나는데 이때 그림과 같이 선택하고 ok버튼을 클릭 ⑦ DB2XML Application대화상자에서 Database를 선택하면 Specification of Database 대화상자가대화상자가 나타나는데 그림과 같이 설정하고ok버튼을 클릭.

  12. Excel 2000/97 데이터의 XML 변환 (7) ⑧ DB2XML Application 대화상자에서 XML Attribute를 선택하면 Specification of XML Attributes 화면이 나타나는데 그림과 같이 설정

  13. Excel 2000/97 데이터의 XML 변환 (8) ⑨ DB2XML Application 대화상자에서 XML Element를 선택한다. 그러면 Specification of XML Elements 대화상자가 나타나는데 그림과 같이 설정

  14. ⑩ Stylesheet 탭을 누른후 그림과 같이 공백으로 처리 Excel 2000/97 데이터의 XML 변환 (9)

  15. Excel 2000/97 데이터의 XML 변환 (10) ⑪Database query부분에 검색할 질의문을 작성후, File name 부분에 ExcelExam.xml이름을 입력하고 Generate XML버튼을 클릭

  16. Excel 2000/97 데이터의 XML 변환 (11) ⑫①∼⑩ 번 과정을 마치고 나면 그림과 같이 ExcelExam.xml 파일이 생성 ⑬ XML 문서를 실행한 결과 실행결과

  17. Access 2000/97 데이터의 XML 변환 ▶Access 2000/97 데이터의 XML변환 • 앞서 설명한 Excel 2000/97 데이터의 XML변환에서처럼 DB2XML을 사용하여 변환 • XML 문서를 실행한 결과 실행결과 실행결과

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

  19. 객체지향 데이터베이스로의 저장과 검색 (2) ▶객체지향 데이터베이스와 XML • DOM형 데이터모델 - DOM에서 사용되고 있는 객체를 그대로 객체지향 데이터베이스에 저장하는 형식 - 사용하는 클래스는 Node 클래스와 이것을 계승한 Document 클래스 등으로 구성 - 다양한 형태의 XML을 객체지향언어로 조작하고 싶거나 또는 객체지향 데이터 베이스에 저장할 때 매우 적합함 • DTD형 데이터모델 - XML 문서의 구조는 DTD 정의에 의해 제약을 받을 수 있음. - DTD 제약에 따라 XML 문서가 작성되었을 때 DTD와 XML 문서 내용은 객체지향의 클래스와 인스턴스 관계에 대응됨. - 다만 DTD 전체를 하나의 클래스로 취급하는 것은 현실적이 아니므로 보통의 경우 요소형 선언마다 클래스를 작성

  20. XML 전용데이터베이스로의 저장과 검색 ▶XML 전용데이터베이스로의 저장과 검색 • XML 전용 데이터베이스의 특징 - XML 전용 데이터베이스의 특징은 XML과 데이터베이스 데이터모델의 다른 점을 의식할 필요가 없음 - XML 전용 데이터베이스를 사용하는 장점 • XML 검색 - 데이터베이스에 저장된 XML 데이터를 검색하는 경우에 관계형 데이터베이스에서는 주로 SQL을 사용 - XML 전용 데이터베이스 등에서는 XML 전용의 질의 언어가 많이 사용되고 있으며XML의 계층구조로 검색하는 특징이 있음

  21. 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.)이 있음

  22. XML 전용데이터베이스로의 저장과 검색 (3) - XQL규격은「http://www.w3c.org/TR/xquery」에서 확인 - XML-QL과 XQL과의 일반적 특징을 비교하면 다음의 표와 같다.

  23. 관계형 데이터베이스와 XML ▶관계형 데이터베이스의 XML 표현 • 요소로의 데이터베이스 표현 - 관계형 데이터베이스에서는 큰 개념을 기술하는 데이터 포인트들이 컬럼으로 구성된 테이블로 표현 - 학생 정보를 표현하기위한 테이블 생성구문 - 테이블 생성결과 CREATE TABLE Student ( StudentNumber varcher(50), StudentName varcher(50), Address varchar(100), TelNumber varchar(50), EmailAddress varchar(60))

  24. 관계형 데이터베이스와 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> hong@ce.hannam.ac.kr </EmailAddress> </Student>

  25. 관계형 데이터베이스와 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=“hms730@ce.hannam.ac.kr"/>

  26. MS-SQL Server 2000과 XML과의 연동 ▶FOR XML을 이용한 SQL Server 2000에서의 검색 • FOR XML을 이용한 SQL Server 2000에서의 데이터 추출과정 • FOR XML의 기본 문법

  27. MS-SQL Server 2000과 XML과의 연동 (2) • FOR XML에서의 3가지 모드 • FOR XML의 3가지 옵션

  28. 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

  29. MS-SQL Server 2000과 XML과의 연동 (4) ③ 작성한 코드를 실행하면 <row>태그가 최상위 요소로 전환, 컬럼들은 속성이름(number, name, cs_number)이 되고 검색된 데이터는 속성값으로 표현

  30. 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)으로 표현

  31. 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>

  32. MS-SQL Server 2000과 XML과의 연동 (7) • -두개 이상의 테이블에서 검색 : 두 개 이상의 테이블에서 검색할 때 검색 결과가 계층적 구조로 나타남 ① student 테이블과 dept 테이블이 존재하며, AUTO 모드를 이용하여 검색 ② Student 테이블과 Dept 테이블에서 number, name, cs_number, dept_name데이터를 추출하기 위한 SELECT 구문 SELECT student.number, student.name, student.cs_number, dept.dept_name FROM student, dept WHERE student.number = dept.number FOR XML AUTO

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

  34. MS-SQL Server 2000과 XML과의 연동 (9) • EXPLICIT 모드를 이용한 데이터 검색 - EXPLICIT 모드에서 컬럼별칭 지정 문법 : EXPLICIT 모드를 사용하기 위해서는 SELECT 구문에서 컬럼의 별칭을 기술, 만약 컬럼별칭을 지정하지 않고 검색할 경우 에러가 발생, 다음은 컬럼의 별칭을 기술 하는 형식을 나타내고 있음 ElementName ! TagNumber ! PropertyName ! Directive

  35. MS-SQL Server 2000과 XML과의 연동 (10) • ① EXPLICIT 모드에서 지원되는 명령어를 사용하지 않고 태그의 별칭을 지정하는 소스 SELECT 1as Tag, NULLas Parent, student.numberas [학생정보! 1 ! 학번], student.nameas [학생정보! 1 ! 이름], student.cs_numberas [학생정보! 1 ! 주민등록번호] FROM student FOR XML EXPLICT ② 실행시킨 결과를 보면 학생정보가 요소이름이 되었고 학생정보의 속성이름으로학번,이름,주민등록번호가 생성 <학생정보학번="20002206" 이름="김기동”주민등록번호="791103-1234567"/> <학생정보학번="20011126" 이름="이순정”주민등록번호="800208-1587890"/> .....................중략(반복) <학생정보학번="20021100" 이름="이영진”주민등록번호="810822-1356545"/> <학생정보학번="20021124" 이름="홍길동”주민등록번호="810624-1386522"/>

  36. MS-SQL Server 2000과 XML과의 연동 (11) - EXPLICIT 모드에서 지원되는 명령어

  37. 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 student FOR XML EXPLICT • <학생정보> • <학번>20002206</학번> • <이름>김기동</이름> • <주민등록번호>791103-1234567</주민등록번호> • </학생정보> • .....................중략(반복)

  38. 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 student FOR XML EXPLICT

  39. MS-SQL Server 2000과 XML과의 연동 (14) ③ 작성한 구문을 실행시키면 다음과 같이 etc 컬럼에 저장되어있던 데이터가 학생 정보 요소의 속성으로 표현 • <병역사항학번="20002206" 이름="김기동“ 군별=육군">소집해제</병역사항> • <병역사항학번="20021100" 이름="이영진“ 군별=해군">군필</병역사항> • .....................중략(반복) • <병역사항학번="20021124" 이름="홍길동“ 군별=공군">군필</병역사항>

  40. 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 student FOR XML EXPLICT • <학생정보이름="김기동”<![CDATA[791103-1234567]]></학생정보> • <학생정보이름="이순정”<![CDATA[800208-1587890]]></학생정보> • .....................중략(반복) • <학생정보이름="이영진”<![CDATA[810822-1356545]]></학생정보> • <학생정보이름="홍길동”<![CDATA[810624-1386522]]></학생정보>

  41. 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 student FOR XML EXPLICT • <학생정보학번="20002206" 이름="김기동”> • <학생정보학번="20011126" 이름="이순정”> • .....................중략(반복) • <학생정보학번="20021100" 이름="이영진”> • <학생정보학번="20021124" 이름="홍길동”>

  42. 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 student FOR XML EXPLICT, XMLDATA

  43. 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"> • <ElementTypename="학생정보" content="mixed" model="open"> • <AttributeTypename="학번" dt:type="id"/> • <AttributeTypename="이름" 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" 이름="홍길동 " >

  44. OPENXML을 이용한 SQL Server 2000에서의 저장 ▶OPENXML을 이용한 SQL Server 2000에서의 저장 • OPENXML을 이용한 SQL Server 2000에서의 데이터 저장과정 • OPENXML의 기본 문법 - OPENXML은 SQL Server 2000에서 로우셋 제공자로 XML문서의 로우셋 뷰를 생성 - 로우셋은 테이블과 같기 때문에 SELECT쿼리에서 테이블 혹은 관계형 뷰 대신에 사용 - OPENXML은 XML 문서나 조각으로부터 데이터를 데이터베이스 테이블에 저장

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

  46. MS-SQL Server 2000과 XML과의 연동 (3) • WITH 구문 - WITH문을 사용하여 실제 테이블이나 컬럼에 각 노드를 매핑시킬수 있고, 생성할 로우셋의 설명을 제공하는데 사용

  47. OPENXML을 이용한 SQL Server 2000에서의 저장 (1) ▶OPENXML을 이용한 데이터 저장 • OPENXML이 데이터베이스 테이블에 데이터를 저장하는 단계 ① FOR XML에서와 동일하게 학번(number)과 이름(name), 주민등록번호(cs_number)등으로 구성된 student 테이블을 생성하여 파라미터와 구문을 적용

  48. OPENXML을 이용한 SQL Server 2000에서의 저장(2) ② XML을 삽입하기 위한 사용자 저장 프로시저를 생성하기 위해 CREATE PROCEDUER(PROC 생략 가능)의 구문을 사용, 프로시저 이름은 insert_student, 매개 변수는 xmldata라고 입력하여 지정 - 저장 프로시저 종류 CREATE PROCinsert_student @xmldata ntext AS ........ 중략

  49. OPENXML을 이용한 SQL Server 2000에서의 저장(3) ③ hDoc이라는 하나의 변수를 선언하기 위하여 DECLARE 구문을 이용 ④ XML을 문서로 읽어들여 구문 분석을 하기 위해 EXEC 구문을 사용, sp_xml_preparedocument저장 프로시저를 통해서 xmldata변수의 내용을 읽음 CREATE PROC insert_student @xmldata ntext AS DECLARE@idoc int ........ 중략 DECLARE @idocint EXECsp_xml_preparedocument@hDocOUTPUT, @xmldata ........ 중략 ⑤ 읽어온 XML 문서에서 root 엘리먼트 이하를 student 테이블에 삽입하기 위하여INSERT INTO 구문과 WITH 구문을 사용. OPENXML을 사용하여 XML구조와 관계형 구조를 매칭 INSERT INTOstudent SELECT*FROMOPENXML[@hDoc, '/root/student',2] WITHstudent

  50. OPENXML을 이용한 SQL Server 2000에서의 저장(4) ⑥읽어온 XML문서를 메모리에서 sp_xml_removedocument저장프로시저를 통해 제거 ⑦ OPENXML을 이용한 프로시저를 작성후 SQL Server 2000의 저장프로시저에 저장 WITH student EXECsp_xml_removedocument@hDoc GO CREATE PROC insert_student @xmldatantextAS DECLARE @idocint EXEC sp_preparedocument@idocOUTPUT, @xmldata INSERT INTO student SELECT *FROM OPENXML[@idoc, '/root/student',2] WITH student EXEC sp_removedocument@idoc GO

More Related