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 문서조작

 

 

댓글