XML
태그 :
- 개념
- XML(eXtensible Markup Language)의 정의 - ‘96년 W3C에서 제안하고 XML Working Group에 의해 개발됨. - 웹에서 구조화된 문서를 효율적으로 처리하도록 설계된 표준화된 데이터형식 - SGML의 장점 (구조화된 문서를 정의하여 Tag를 자유롭게 정의)과 HTML의 장점 (인터넷 상에서 손쉽게 하이퍼 미디어 문서를 제공) 을 모두 가질 수 있도록 제안된 ”웹 표준 문서 포맷” - Markup: 원래의 내용에 특별한 또는 추가적인 정보를 표시하는 모든 것(양식적, 구조적, 의미적) - 확장 가능한 마크업 언어로써 프로그래밍 언어가 아닌 데이터를 Description하는 메타 데이터 언어
I. 확장 가능한 마크업 언어, XML의 개요
가. XML(eXtensible Markup Language)의 정의
- ‘96년 W3C에서 제안하고 XML Working Group에 의해 개발됨.
- 웹에서 구조화된 문서를 효율적으로 처리하도록 설계된 표준화된 데이터형식
- SGML의 장점 (구조화된 문서를 정의하여 Tag를 자유롭게 정의)과 HTML의 장점 (인터넷 상에서 손쉽게 하이퍼 미디어 문서를 제공) 을 모두 가질 수 있도록 제안된 ”웹 표준 문서 포맷”
- Markup: 원래의 내용에 특별한 또는 추가적인 정보를 표시하는 모든 것(양식적, 구조적, 의미적)
- 확장 가능한 마크업 언어로써 프로그래밍 언어가 아닌 데이터를 Description하는 메타 데이터 언어
나. XML의 등장 배경
- WWW의 전자상거래를 위한 비즈니스 영역으로 확대
- HTML의 단점(고정된 태그, 페이지 Layout)을 극복하고, SGML의 복잡한 기능을 축약할 필요
다. XML의 관련언어
라. XML의 특성
- 단순성 : SGML의 간략화 (사용되지 않는 기능은 없애고, 주요기능은 수용)
- 개방성 : HTML과 더불어 Web에서 함께 사용 가능하고, meta-data를 주고 받을 수 있음
- 확장성 : 자신만의 태그 생성가능, 자체기술(Self-describing)
- 사람과 기계가 모두 이해할 수 있는 구조 : 데이터의 비교와 취합이 용이
- 내용과 표현의 분리 : 이용자가 원하는 포맷으로 변환가능 (재 사용성 증가)
- 계층적 구조 : 구조검색, 전문검색가능
- 유니코드 : 여러 국가 언어 지원
마. HTML, XML, SGML 비교
비교항목 |
HTML |
XML |
SGML |
등장배경 |
웹 문서 전용 |
SGML장점을 살린 웹문서, Middle Tier |
문서 구조와 외양의 분리 |
DTD |
1 DTD |
임의의 DTD DTD가 옵션 |
임의의 DTD DTD가 필수 |
스타일 |
CSS |
XSL |
DSSSL |
브라우저 |
웹 브라우저 |
웹 브라우저 |
전용 브라우저 |
링크 |
URL A(Anchor) |
XLink, XPointer ID/IDREF |
ID/IDREF |
확장성 |
낮음 |
높음 |
높음 |
웹문서 적용범위 |
인터넷 문서 |
인터넷, 인트라넷 문서 |
주로 인트라넷 문서 |
복잡도 |
낮음 |
보통 |
복잡 |
II. XML 의 구성도 및 구성요소
가. XML 의 구성도
나. XML의 구성요소
구분 |
세부내용 |
특징 |
DTD |
-Document Type Definition -XML문서의 형태를 일관된 구조로 정의하는 문서 -XML문서에 대한 논리, 물리적 구조정의 -XML유효성검증을 위해 필요 |
-반복정의 가능: 태그의 중첩순서의 정의(N회 반복) |
XML스키마 |
-DTD보다 강력한 문서구조, 내용, 의미지원 -스키마 자체가 XML문법을 따름 |
-사용자 정의 형식 -다양한 반복형식(최대,최소) |
XML Namespace |
-DTD가 하나이상의 XML문서를 참조 시 각DTD를 위한 고유의 Namespace를 정의(각각의 DTD식별) |
URI형식 |
XSL |
-eXtensible Style Language -XML문서의 스타일 정보를 기술하지 위한 표준어로 사용 -다양한 출력형식(HTML, WAP, PDF)을 정의하기 위한 포맷을 정의 |
-XSLT: 입력된 XML문서를 원하는 출력구조로 변환 |
XLL |
-eXtensible Linking Language -XML요소간이 연결 및 관계를 표시 |
-XLink: Hyper Link의 인식과 처리 -XPointer: XML문서내의 요소에 대한 주소 |
다. XML Processor의 구조
라. XML Processor의 주요 구성요소
구성요소 |
기능 |
XML parser |
XML문서의 문법과 구문구조의 점검검사(validation검사) |
XML구분분석기 |
XML문서의 구문구조를 분석처리(SAX, DOM) |
XSL엔진 |
XML문서를 표현정보를 갖는 문서형식으로 변환 |
III. XML문서 작성 절차
절차 |
내용 |
제작하고자 하는 문서의 유형을 결정 (예) 사용자 매뉴얼, 계약서, 카탈로그, 공문서 등 |
|
-문서의 사용 용도 결정 -문서의 논리적인 구조와 요소들을 결정 |
|
-DB에 기초적인 스키마를 제공하고 상호 연동이 이루어지도록 함 |
|
-DTD에 정의한 태그를 이용하여 XML문서 작성 -XML문법을 준수하여 작성 |
|
-문서의 외형 및 문서 내의 처리되어질 내용에 대한 절차를 작성 -XML문서와 독립적으로 작성되고 다른 파일로 관리 |
IV. XML 트리 형태 구조 Parsing, DOM (Document Object Model)
가. DOM(Document Object Model)의 정의
- XML 문서를 root에서 트리 구조로 파싱하여 XML 문서 Contents와 구조 전체를 메모리에 올려 놓고 해석하는 시스템
- 문서에 접금하는 방법을 갖고 있는 도구들의 모음으로 XML 문서를 실질적으로 우리가 활용하고 컨트롤할 수 있는 방법을 제공
나. DOM의 특징
- XML 문서를 Object화 해서 트리 구조로 Access 하는 Parser
- 여러 XML 문서를 메모리 상에서 공유할 수 있는 장점
- SAX에 비해서 유연하게 XML 문서에 Access 가능하지만, 문서 전체에 대한 정보를 메모리 상에 올려 처리하므로 메모리 사용이 많다는 단점
다. DOM의 역할
- DOM은 문서에 접근하고 조작하기 위해 문서를 계층적 구조로 트리화한 DOM 트리를 생성한다.
- DOM은 트리의 요소와 속성, 그외의 문맥노드 탐색, 수정 및 추가, 삭제 등을 자유롭게 할 수 있어 트리화된 XML문서를 다른 XML문서로 쉽게 변환하는 작업을 할 수 있다. 다시말해 DOM은 XML 문서상의 각종 노드를 다양하게 조작할 수 있게 해 준다.
- DOM은 XML 문서뿐만 아니라 HTML과 별도로 작성한 스타일 시트도 동적으로 적용할 수 있게 해준다.
- DOM은 XML API(Appication Programming Interface) 중 하나로 메서드(Method)와 프로퍼티(Property)를 제공해 준다.
- DOM은 여러 언어에서 인식하고 사용할 수 있게 중립적인 API로 제공되는 인터페이스이다. 따라서, DOM을 이용하려면 VS, Java, ASP, Javascript, C++등과 같은 다른 언어가 있어야 한다.
마. DOM의 모듈(Module: 하나의 단위로 처리되는 프로그램의 모음) 기능
- 모듈은 문서를 개체화하기 위해 기본적으로 트리화하고, 트리화된 구조적인 개체들을 쉽게 탐색하고 조작할 수 있는 각종 연산자와 인터페이스를 제공
기능 |
설명 |
DOM Core |
문서를 트리화하여 트리를 만들고 탐색 |
DOM XML |
COM Core를 XML 스펙에 맞게 확장 |
DOM HTML |
HTML 문서를 쉽게 조작할 수 있는 인터페이스, 메서드를 정의 |
COM Event |
DOM 트리, 사용자 조작에의한 이벤트나 HTML에서 제공하는 이벤트를 처리 |
DOM Cascading Style Sheets |
스타일 시트를 동적으로 적용하거나 스타일 시트를 조작하는 인터페이스 제공 |
DOM Load And Save |
XML 문서를 DOM 트리로 로드하거나 DOM 트리를 XML 문서로 저장, 각종 연산자 제공 |
DOM Xpath |
템소를 사용하여 트리를 쉽게 질의할 수 있는 인터페이스 제공 |
바. DOM 인터페이스
인터페이스 |
설명 |
Document |
DOM의 가장 상위 레벨에 존재, 특정기능의 사용여부와 새로운 Document인스턴스를 만드는데 사용하는 인터페이스 제공 |
Node |
DOM의 가장 기본적인 인터페이스로 문서의 구조와 내용에 접근할 수 있는 메서드(함수)와 프로퍼티(속성) 인터페이스 제공 |
NodeList |
상, 하위의 토드들 사이의 관계를 정리해 주고 저장 장소와 같은 역할을 하는 인터페이스를 제공 |
NamedNodeMAP |
NodeList 인터페이스와 같은 역할을 하지만, 속성만 처리하는 인터페이스 |
DOMException(예외) |
에러 발생 등의 예외처리를 해주는 인터페이스 |
- 위의 인터페이스 중 가장 중요한 인터페이스는 Node 인터페이스이다. Node 인터페이스는 가장 기본적인 인터페이스이면 문서의 노드 개체들을 쉽계 다룰 수 있는 기능을 포함하고 있다.
사. DOM의 계층구조
Level |
설명 |
Level 1 |
Core, HTML & XML 문서 모델에 관한 내용 |
Level 2 |
Style Sheet를 적용한 객체 모델 지원 |
Level 3 |
문서의 스타일, 내용, 구조에 동적 접근 및 갱신 |
V. XML 문서의 이벤트 처리 기반의 구문 분석기, SAX (Simple API for XML)
가. SAX(Simple API for XML)의 정의
- 이벤트 처리 기반으로, 자료 구조를 만들지 않고 XML 문서를 스캔 해 가면서 특정 Element를 중심으로 이벤트를 발생시켜 XML 문서를 처리하는 방식
나. SAX의 특징
- Event-driven 형태의 파서로서 DOM에 비해 성능이 우수하며, Resource 사용률이 적음
- DOM과 달리 갱신이나, 삽입 등이 불가능함
다. SAX의 한계
- 데이터를 SAX가 주는 순서대로 받음
- 파서가 문서를 탐색하는 순서에 대해서는 어떤 통제도 할 수 없음
- SAX방식에서는 사전식 정보를 주지 않음
- SAX가 사용하고 있는 원래 문서의 정확한 복사본을 만들 수가 없음
- SAX1.0에 DTDHandler인터페이스가 정의되어 있어도 DTD에 대한 어떤 실제적 정보도 제공하지 못함
- 읽기 전용
- 문서의 요소들을 조절할 수 없음
라. SAX Event 유형
유형 |
설명 |
Start Doc / End Doc |
- 문서의 시작과 끝을 알림 |
Start Element |
- 엘리먼트의 시작을 알림 - 엘리먼트 내의 모든 속성과 태그 포함 |
End Element |
- 엘리먼트의 끝을 알림 |
Characters |
- Character Data 포함 |
Warning Error |
- 화상 오류를 표시 |
VI. DOM과 SAX의 주요 장단점 비교 및 접근 방식 비교
가. DOM과 SAX의 주요 장단점 비교
구분 |
DOM |
SAX |
접근방법 |
트리 구조 |
Event Driven구조 |
장점 |
-문서구조에 대한 풍부한 표현력 -XML문서의 생성, 편집이 가능함 |
-XML문서의 크기에 관계없이 파싱이 가능 -자신만의 데이터 구조 생성이 가능 -단순하고 속도가 빠름 |
단점 |
-메모리 요구량이 많음 -처리속도가 늦음 |
-문서의 구조에 대한 정보 파악이 불리함 -문서 생성, 편집이 불가능 |
적용분야(용도) |
-구조적 접근이 필요한 경우 -특정 부분으로 이동할 경우 -문서를 수정할 경우 |
-문서 일부분만 읽는 경우 -유효성처리, 데이터 변환 -동일 오류 처리 -문서로부터 특정한 값을 넘겨 받고자 하는 경우 |
나. DOM과 SAX 접근 방식 비교
DOM |
SAX |
- DOM은 XML Parser와 Application 사이의 계층에 놓여짐 - XML Parser에서 얻은 결과를 이용하여, 문서 객체 모델 DOM을 만듦 - 표준DOM을 이용하면 Parser에 독립적인 응용 프로그램 개발이 가능함 |
- SAX는 XML의 각 구성요소들을 순차적으로 접근하면서 이벤트 방식으로 문서를 취급 - XML문서의 각 요소나 속성, 혹은 문자열 들에 접근할 때 발생하는 이벤트를 인식하여 XML 문서를 처리 - 응용 프로그램은 이러한 Event를 가로채서 Element의 이름이나 속성값을 얻어내는 등 처리할 작업과 관련된 일을 진행할 수 있음 |
라. DOM과 JDOM의 비교
구분 |
DOM |
JDOM |
처리구조 |
-객체 트리 기반 API |
-DOM/SAX 장점 수용 |
특징 |
-Random Access 가능, 내용 갱신가능 |
-적은 메모리 사용 -엘리먼트와 내용을 갱신 |
단점 |
-복잡한 프로세스 -과다한 메모리 사용 |
-JAVA 기반 XML 문서만 접근허용 |
활용 |
-XML 문서 빈번수정 |
-JAVA 기반 XML 문서조작 |