XML 이론과 실제

2008. 9. 21. 18:06잡다한 이야기들/책을 통한 감수성!




저자 : 임광택
출판사 : 기한재 2002년 1판 1쇄

언젠가 XML에 대해 공부해야 겠다는 생각을 한채 가볍게 기본 개념에 대해 알고 싶어 책을 한권 선택했다.
그 책이 바로 이 XML 이론과 실제.
XML 바이블 같은 책은 존나 두껍지만 이책은 한 400페이지 밖에 되지 않기 때문에 부담이 보기위해 선택하였다.

근데 살짝 아쉬운것은 저자 임광택씨의 이력인데, 광운대 대학원 졸업과 당시 호원대학교 컴퓨터학부 조교수로 일했다고 하는데, 그 상태에서 책을 낼정도라니 약간 의아하다. 그정도로 실력이 있는 분이거나, 인맥이나 본인을 알아주는 출판사쪽 사람이 있지 않나하는 생각이 든다.

사실 책이 그다지 무겁고 매우 심도 있는 부위를 다루는 것이 아니라 적당하다고 생각된다.
몇 번을 강조하지만^^, 자세히 알기 보다는 대강의 내용을 흝어보기에 적절한 책이다.

XML(eXtensible Markup Language)이란 HTML(Hyper Text Markup Language)의 단점을 극복하고, 표준 마크업 언어인 SGML의 장점을 수용하여 웹 상에서 구조화된 문서표현을 할 수 있도록 만들어진 웹 문서 표준이다. XML은 표준 마크업 언어로 확장성과 이식성, 호환성이 우수하여 다양한 분야에서 정보처리 및 문서정보교환을 위하여 구조화된 문서표준이다.
XML은 하나의 마크업 언어라기 보다는 SGML과 마찬가지로 다른 마크업 언어를 정의하기 위해 사용되는 언어이다. 이는 웹에서 정보를 전달하고 처리하는 웹 응용 프로그램의 구현을 쉽게 할 수 있도록 하는데 목표를 두고 있다.
이 XML의 예제를 하다보면 DTD(Document Type Definition)으로 정의 된다. 웹상의 수학식을 표현하기 위한 정보 즉, 엘리멘트 이름,속성,엘리먼트들의 구조에 대한 문법적 규칙 등을정의하게 된다.
XML은 XSL(Extensible Stylesheet Language)를 통해 페이지 레이아웃을 제어할 수 있게 된다.

좀더 쉽게 XML을 표현하자면 문서의 논리적 구조를 표현하고 규격화한 것이라 할 수 있다. 문서의 논리적 구조는 트리의 형태로 표현이 가능하며 이는 DTD에 의해 설정이 되고, 문서의 물리적 구조는 entity라 불리는 저장객체로 표현이 된다.

entity는 물리적인 저장단위 또는 저장 객체로 정의된다. 작게는 하나의 문자에서부터 컴퓨터 파일 또는 데이터베이스등에 이르기까지 XML이 저장되는 모든 물리적단위를 entity라고 지칭한다. 이 엔터티(entity)는 XML문서 작성시 반복되는 타이핑으로인한 시간을 줄일 수 있게하고, 여러 개의 저장 객체에 흩어져 저장된 조각의 문서를 통합하여 하나의 완전한 연속된 문서를 구성이 가능하다.

DTD(Document Type Definition) : DTD란 개념은 명확한 문서구조를 가짐으로서 다른 유형의 문서와는 별개의 정보표현을 가능하게 하기 위해 도입되고 있다. 이는 XML문서를 표현하기 위한 XML 마크업 규칙들의 집합이다. 이 DTD는 외부정의 및 혼합정의가 가능하며 이 안에서도 여러 설정 및 선택문등이 존재한다.

XML문서는 문법적으로 HTML문서보다 매우 엄격한 조건들을 만족해야 한다.(ex:시작태그와 종료태그가 반드시 매치되어야 함.) XML에서는 문법중 하나라도 지켜지지 않으면 에러를 일으키며 더 이상 처리하지 않는다. 이러한 점은 융통성 및 유연성이 떨어지더라도 오히려 자동화 및 명확화, 규격화등 다른 장점들이 더 많이 존재한다. 이러한 엄격성은 정보처리 환경에서 데이터를 교환하거나 처리할 목적으로 XML을 이용하고자 할때 데이터의 정확성과 구조적인 정보가 올바르다는 것을 보장한다.

XML에서는 데이터의 정확성과 문서가 구조적으로 올바르게 기술되었다는 것을 보장하고 검증하기 위한 방법으로 DTD라는 수단이 존재한다.
XML을 개념적으로 나누자면 [잘 구성된 XML문서][유효한 XML문서]로 나뉜다.
이 둘의 관계는 [잘 구성된 XML문서] ⊃[유효한 XML문서] 로 표현이 가능하다.

잘 구성된 문서(Well Formed XML Documents)란 직접적으로 DTD를 갖지는 않지만 XML의 문법적 규칙을 잘 따르는 문서이다. 이는 기본적인 문법적인 조건을 충족시킬 뿐이다.
유효한 문서(Valid XML Documents)란 DTD를 포함하고 있고 또한 문법적으로 DTD에 선언된 제약사항을 따르는 문서이다. 모든 유효한 문서는 "문서의 구조적인 규칙", "문서의 외부자원 또는 외부 엔터티들의 목록", "내부자원 또는 내부 엔터티 선언", "비 XML자원들의 목록과 노테이션"의 정보를 포함하는 헤더 정보를 가지고 시작하여야 한다.

XML, SGML과 같은 범용 마크업 언어는 문서의 내용과 외형적 출력 형식을 분리하고 있다. 이들 마크업 언어는 문서의 구조적 정보 표현이 주목적이지만 사용자들은 문서가 보기 좋은 형태로 출력되기를 원한다. 이러한 언어들은 구조적인 정보를 유지하면서 문서의 출력형식을 제어할 수 있는 메커니즘인 스타일시트(style-sheet)를 제공한다.
스타일시트는 별도의 분리된 엔터티로 XML문서와는 별개의 포맷팅 속성만을 포함하고 있는 파일 또는 객체로 생각할 수 있다. 이를 이용한 장점으로는 문서출력 필요없고, 데이터 처리가 주목적인 문서의 경우 스타일을 무시하고 빠르게 처리할 수 있으며, 여러가지 XML 응용들이 각각의 목적을 위해 순수 XML문서를 처리한 다음, 처리결과를 출력하기 위하여 각기 다른 스타일 시트를 적용할 수 있다.

이러한 출력은 CSS(Cascading Style Sheets)로 제어가 가능하며, 후에 CSS의 단점을 보완하기 위해 XSL을 사용한다. 이 XSL은 XML과 같이 확장성 있는 구조를 가지는데, CSS와는 달리 XSL은 HTML뿐 아니라 모든 문서를 위한 스타일 표현을 위해 적절하도록 표준 규격이 만들어지고 있다.  - 필자는 XSL은 사용 못해보았다 ㅠ.ㅜ;

XML은 한마디로 데이터를 처리하기 위한 규격화된 문서이고, 이는 CSS나 XSL을 통해 다양한 출력이 브라우져상으로 가능한 것이다.

XML은 DTD를 이용한다고 했는데, 과연 XML상에 DTD가 제대로 적용되어 있는지 어떻게 확인하는가?
그 부분은 바로 "XML Parser"라는 부분에서 담당한다.


이는 XML문서의 문법적인 구문을 검사하여 XML문서가 문법적으로 정확한지 확인하며, 또한 XML문서의 구조에 접근할 수 있도록 응용프로그램에게 XML정보를 제공하여 주는 역할을 한다. 이러한 파서들은 많은 것들이 개발되어 있으며 대부분의 파서들은 응용프로그램에서 XML문서 정보에 접근하여 사용할 수 있도록 API를 제공하고 있다. 이 API에는 DOMSAX가 존재하고, 그림으로 나타내면 다음과 같다.



위 그림을 보면 전체적인 과적인 확실히 이해가 갈 것이다.
DOM(Document Object Model)은 XML 문서내에 있는 객체를 액세스 하기 위한 API를 정의한다. 이는 플랫폼과 언어 독립적인 인터페이스를 제공하는데 파서가 어떤 언어로 구현되어 있는가에 상관없이 어떤 하드웨어와 운영체제 상에 개발하든지 문제가 되지 않는다.
SAX(Simple API for XML)은 이벤트 기반의 파서에서 작동하며 XML문서를 이벤트 중심으로 처리한다. 이러한 이벤트 기반의 파서는 XML문서의 전체 구조를 파악하려 하지 않고, 대신에 현재 XML문서에서 무엇이 발견되었는지를 알려주는 역할에 촛점을 맞춘다. 문서 구조가 필요치 않는 XML응용에서는 매우 효율적이며 편리하게 사용된다.



좀 중요한 부분들, 알게된 것들을 정리해봤다.
하지만, 처음 책을 읽을 때에도 이런 것들이 한번에 이해되거나 머리속으로 들어오지는 않는다.
과연 xml이 어떤 구조로 문서가 작성되면 DTD는 어떻게 정의되면 entity가 어떤 개념인지는 xml문서를 예제로 몇개 작성하면 그때서야 "아하"하고 이해가 갈 것이다.
필자는 XSL이나 DOM쪽은 이 책으로는 조금 부족한 면이 있어 직접 해보지는 못했다.
간단한 XML을 작성해봤는데, 하면서 사실 CSS(xml출력)쪽에 좀 흥미가 생겼다.(HTML이나 기타 태그에도 바로 적용이 되서리, 그리고 예전에 해볼려고 하던거라^^;)
그러나 혹시 좀더 쉽게 알고자한다면, 기타 인터넷상의 예제들을 한번 작성해 보면 이해가 아주 빠르게 될 것이다.


XML 이론과 실제
카테고리 컴퓨터/인터넷
지은이 임광택 (기한재, 2002년)
상세보기