<테마특강>차세대 인터넷 표준언어 XML

박기복 펜타고등기술연구소 선임연구원

93년 고려대학교 물리학과 졸업

95년 고려대학교 물리학과 대학원졸업 이학석사

95∼99년 펜타시스템테크놀러지 펜타정보통신연구소 주임연구원

99년∼현재 펜타시스템테크놀러지 펜타고등기술연구소 선임연구원

관심분야-XML, 데이터베이스, 미들웨어 연구

1) 마크업 언어란 무엇인가.

XML(eXtensible Markup Language)을 글자 뜻 그대로 해석하면 확장 가능한 마크업 언어라는 뜻이다. 그렇다면 마크업 언어는 무엇이며 확장 가능하다는 것은 무엇을 의미하는가.

마크업은 특별한 의미나 추가적인 정보를 문서의 특정 부위에 더하기 위해서 문서에 덧붙이는 표현을 의미한다. 간단히 설명하면 우리가 문서의 일부 문장을 강조하기 위하여 밑줄긋기를 한다든지, 문서의 내용에 순서를 주기 위하여 문단번호를 매긴다든지, 구분과 분류 등을 통한 데이터의 명확한 이해를 위해 테이블을 만드는 등의 작업 모두가 마크업을 이용하는 것이라고 할 수 있다.

이런 마크업을 이용해서 문서 표현을 다루는 언어가 바로 마크업 언어다. 마크업 언어로 만들어진 문서는 엘리먼트라는 기본 단위의 집합으로 이뤄지는데 마크업 언어에서의 엘리먼트는 문서 작성자가 문서에 표현하고자 하는 사용자 데이터와 이 데이터에 덧붙이는 표현 즉, 마크업의 합으로 이루어진다. 여기서 사용자 데이터를 이 엘리먼트의 콘텐츠라고 한다.

마크업은 그 사용 용도에 따라서 크게 3가지로 분류할 수가 있는데 사용된 마크업이 콘텐츠의 화면 표현과 관계된 정보(가령 글자의 크기라든지 색깔, 밑줄 등에 관한)의 마크업을 스타일 마크업이라고 한다. 또 HTML이나 일반적으로 문서 작성기에서 흔히 사용하는 테이블과 같이 사용자 데이터에 구조적인 정보를 표현하기 위한 마크업이면 구조적 마크업이라고 하며 엘리먼트 콘텐츠의 의미를 기술하는 마크업의 경우 의미론적 마크업이라고 한다.

2) SGML, HTML, XML

SGML(Standard Generalized Markup Language)은 1960년대에 GML(Generalized Markup Language)이라는 이름으로 등장, 86년 ISO 국제표준으로 채택되면서 「표준」이라는 형용사를 얻게 됐다. SGML은 다른 마크업 언어를 만들 수 있는 메타언어로 500여 페이지에 이르는 방대한 스펙을 갖고 있으며 따라서 일반적으로 사용하기 어려운 언어다.

개발자들은 SGML을 사용하여 많은 마크업 언어를 만들었는데 SGML로 만들어진 마크업 언어 중 가장 잘 알려진 언어가 바로 HTML이다. HTML은 89년에 고안됐으며 90년대 초에 스펙이 공개됐다.

HTML은 스펙이 단순하며 사용이 용이하다. HTML의 단순함과 사용의 용이성은 현재와 같은 웹의 발전에 결정적인 역할을 했다. HTML은 주로 사용자 데이터의 화면표현을 위한 마크업으로 이루어졌고 현재 웹 문서의 사실상 표준이며 웹에서 사용하는 모든 데이터는 HTML파일로 직접 저장되어 조회되거나 또는 다른 형태의 데이터를 HTML파일로 변환하여 조회된다. 즉 서버상의 데이터 저장방법에 관계없이 항상 클라이언트에게는 HTML파일이 전달되는 것이다.

그러나 실제 HTML의 역할은 매우 단순하다. 서버상에서의 데이터 처리결과를 웹 브라우저에서 디스플레이하는 용도가 대부분이다. 이는 HTML이 탄생할 때부터 데이터의 화면 표현용으로 만들어졌기 때문이다. 따라서 HTML은 웹에서의 자동화된 정보처리와 같은 업무에는 잘 맞지 않는다.

이러한 단점을 극복하기 위한 대안으로 등장한 것이 바로 XML이다. XML은 98년 봄에 W3C(WorldWideWeb Consortium)의 권장규약으로 채택됐고 SGML과 같이 다른 마크업 언어를 만들 수 있는 메타언어이면서도 SGML과는 달리 간단한 스펙을 가지고 있어 전세계적인 지지를 얻고 있다. 여기서 확장의 의미는 XML이 메타언어라는 것을 뜻하며 이는 바로 문서 작성자가 자신이 원하는 마크업 즉, 태그를 만들어서 사용할 수 있는 것을 의미한다.

3) XML 개요

XML은 다른 마크업 언어를 만들 수 있는 메타언어다. 이것은 문서 작성자가 자신이 원하는 태그를 직접 만들어서 사용할 수 있다는 것을 의미한다. 문서에서 사용할 마크업 즉, 태그를 정의하는 방법에 관한 규약을 DTD(Document Type Definition)라고 하며 DTD에 정의되어 있는 태그만을 사용하고 이에 따라 만들어진 문서를 유효문서(Valid Document)라고 한다.

XML문서가 반드시 유효문서일 필요는 없다. DTD없이 XML문서를 작성할 수도 있으며 DTD가 있더라도 DTD명세에 맞지 않는 태그를 사용할 수도 있다. 그렇다고 문서 작성자가 아무런 제약 없이 자신이 사용하고 싶은 태그를 이용하여 아무렇게나 문서를 만들 수 있는 것은 아니다. 모든 XML문서는 DTD의 사용유무에 관계 없이 반드시 다음과 같은 조건을 만족하여야 한다. 이 조건을 만족하는 문서를 「잘 구성된 문서(Well-Formed Document)」라고 하며 모든 XML문서는 반드시 「잘 구성된 문서」이어야 한다.

모든 XML문서가 「잘 구성된 문서」일 것을 요구하는 것은 HTML문서와 비교하면 상당히 엄격한 조건이다. 이것은 XML이 HTML처럼 단순히 화면 표현용 언어가 아니라 보다 진보된 데이터 표현과 처리를 위한 언어인 것을 의미한다. 문서 작성자는 「잘 구성된 문서」의 규칙을 지켜서 데이터에 관한 예외상황이나 차후에 있을 수 있는 2차 가공을 위한 프로그램 제작에 도움을 줄 수 있다.

XML의 가장 큰 특징 중 하나는 내용과 표현이 분리되었다는 것이다. XML문서 자체는 화면표현과는 아무런 관계가 없다. XML로 기술된 데이터를 화면에 표현하려면 다른 화면 표현용 언어를 사용해야 한다.

이 화면 표현과 관련된 언어가 바로 XSL(eXtensible Stylesheet Language)이다. XSL은 자체 포맷기능과 변환기능을 가지고 있으며 이 중 XSLT(XSL Transformations)라고 명명된 XSL의 변환기능은 XML데이터 문서에 XSLT를 적용하여 결과 문서가 또다른 마크업 언어로 작성된 문서가 되게 하는 방법을 이용한다.

이 변환 기능을 이용하여 화면표현을 얻는 방법은 결과문서가 화면 표현용 마크업 언어로 작성된 문서가 되게 하는 것이다. 가장 광범위하게 사용되는 화면표현용 언어로는 HTML이 있다. 이렇게 결과문서가 HTML문서가 되게 하는 방법이 유용한 점은 서버측에서 XSLT를 이용하여 XML문서를 HTML문서로 변환시키면 XML을 지원하지 않는 일반적인 표준 웹 브라우저를 사용하여도 XML을 채용한 시스템을 구축할 수 있다는 점이다.

XSL을 사용하면 XML문서 자체는 수정하지 않고 하나의 XML 문서에 대하여 여러 개의 화면 표현을 얻을 수 있다. 만약 HTML을 이용하여 하나의 내용에 대한 둘 이상의 화면 표현을 얻으려면 거의 같은 크기 두 개의 HTML파일을 만들어야 하고 클라이언트는 두 파일을 모두 네트워크를 통해서 내려 받아야만 한다. 그러나 XSL을 이용하면 내용을 기술하는 XML파일은 하나만 만들고 상대적으로 작은 크기의 XSL 파일을 두 개 만들어서 클라이언트는 서버로부터 한번 캐시된 XML데이터에 대하여 XSL만 다시 내려받아 서로 다른 두 가지의 화면 표현을 얻을 수 있게 된다. 이 방법은 경우에 따라서 네트워크의 부하를 현저히 줄여줄 수 있다.

XML은 XLink(XML Linking Language)와 XPointer(XML Pointer Language)를 이용하여 HTML에서 사용하던 단순 링크뿐만 아니라 보다 진보된 다중 링크, 양방향 링크 등의 확장된 링크를 구현할 수 있다.

XML문서를 프로그래밍 언어에서 쉽게 다룰 수 있도록 API(Application Programming Interface)들을 정의하여 놓았는데 이것이 DOM(Document Object Model)이다. 프로그래머는 DOM을 사용하여 XML문서를 마치 하나의 오브젝트처럼 다룰 수 있다. DOM에서 제공하는 메소드와 프로퍼티를 이용하여 XML문서의 생성, 문서내 엘리먼트의 내용 조회, 수정, 삭제, 추가 등의 다양한 작업을 할 수 있다.

XML문서는 데이터 소스로 사용될 수 있다. 클라이언트는 서버에 존재하는 XML문서에 대해 질의어를 사용, 전체 XML문서 중 원하는 부분만을 얻어 낼 수 있다. 이때 사용하는 언어가 XQL(XML Query Language)이다. HTML의 경우에는 질의어를 사용할 수 없기 때문에 HTML문서 중 일부분만 필요하더라도 클라이언트는 전체 문서를 다운받아서 스크롤바를 이용해 관심 부문을 조회해야 한다. 하지만 XML문서는 XQL을 이용하여 클라이언트가 원하는 부문만을 조회할 수 있다.

4) XML의 특징

* 단순성 : XML은 사람이 이해하기 쉬우면서도 기계가 다루기 쉬운 구조를 제공한다.

* 개방성 : XML은 W3C의 표준이며 세계적으로 영향력 있는 많은 주요 업체들로부터 지지를 받고 있다.

* 확장성 : 고정된 태그가 없다. 새로운 태그들은 필요에 따라서 언제든지 만들어 사용할 수 있다.

* 자체 기술(Self Describing) : 전통적인 데이터베이스(DB)에서 데이터 레코드는 DB관리자에 의해 만들어지는 각 레코드 집합에 관한 스키마들을 필요로 한다. 그러나 XML문서는 태그와 그 속성을 이용하여 메타 데이터를 스스로 가지고 있기 때문에 이러한 정의 없이 저장할 수도 있다.

* 기계가 쉽게 이해할 수 있는 내용 정보 : 태그, 속성, 엘리먼트를 갖는 XML의 구조는 콘텐츠의 의미를 해석할 수 있도록 해주는 정보를 제공하기 때문에 고효율의 검색엔진이나 지능적인 데이터마이닝에 대한 새로운 가능성을 제시한다. 이것이 바로 XML이 HTML이나 텍스트 파일에 대해 갖는 주된 장점이다.

* 내용과 프레젠테이션의 분리 : HTML 태그가 주로 화면 표현을 기술하는 반면 XML 태그는 내용을 기술한다. XSL은 XML문서의 수정 없이 화면 표현을 바꿀 수 있게 하여 하나의 XML문서의 여러 가지 화면 표현과 여러 개의 XML문서의 동일한 화면 표현을 갖도록 하는 것이 가능하게 한다.

* 다국어 문서와 유니코드 지원 : XML을 분석하는 XML파서는 유니코드를 이해한다.

* 데이터의 비교와 취합을 수월하게 한다 : XML문서의 트리 구조는 문서들의 엘리먼트 수준의 비교와 취합을 효율적으로 하게 한다.

* 분산된 데이터에 대한 단일한 서버 뷰를 제공 : XML문서는 인터넷 상에서 다수의 서버에 분산되어 있는 문서 부분들의 조합으로 구성될 수 있다. 전체 웹은 하나의 거대한 XML DB로 간주될 수 있다.

* 업계의 신속한 채용 : 소프트웨어AG, IBM, 선, 마이크로소프트, 넷스케이프, 데이터채널, SAP 등 많은 업체들이 XML을 지원하기로 발표했으며 앞으로 지원업체는 더욱 늘어날 전망이다.

5) XML 애플리케이션

메타언어로 마크업 언어를 만들었을 때 만들어진 마크업 언어를 메타언어의 애플리케이션이라고 한다. W3C를 비롯하여 많은 분야의 컨소시엄에서 현재 완성되었거나 만들어지고 있는 XML애플리케이션들이 있다.

* HTML 4.01(XHTML)-XML 기반의 HTML

* BiblioML-도서관리

* XML Court Interface-법원 문서관리

* WAP Wireless Mark Language-무선통신

* Weather Observation Definition Format-기상관측

* Open Trading Protocol-무역

* XML Digital Signature-전자서명

* Bank Internet Payment System-인터넷 은행 지불

* ACORD (XML for the Insurance Industry)-보험

* Portal Markup Language-포털

* XML/EDI-전자 데이터 상호교환

* Commerce XML (cXML)-전자상거래

* aecXML(Architecture, Engineering, Construction)-건축, 공학, 건설

* VoXML-음성인식

* XML-F(XML for Fax)-팩스

* BRML(Business Rules Markup Language)-비즈니스 규약

6) XML 응용분야와 미래

XML은 데이터를 기술, 교환, 저장하는 것과 관련된 규약이기 때문에 XML의 응용분야는 데이터가 사용되는 곳이면 모두 XML의 응용분야라고 할 수 있을 정도로 광범위하다.

먼저 SGML의 부분집합으로서 XML은 SGML을 주로 사용하던 문서관리 분야에 응용할 수 있다. XML로 문서관리 시스템을 구축하면 XML의 확장성을 이용해 보다 진보된 검색 인터페이스를 만들 수 있다. 또 XSL을 이용하여 하나의 내용에 대한 보다 다양한 프레젠테이션 서비스를 제공할 수 있다. 이 모든 것은 웹에서 구현 가능하다.

정보교환을 위한 데이터 기술언어로서 XML은 B2B(Business to Business) 프로세스의 원조라고 할 수 있는 EDI(Electronic Data Interchange)분야에 사용될 수 있다. 하드웨어를 포함하는 하부구조는 웹을 사용하고 교환 데이터의 포맷은 XML애플리케이션을 사용하는 것이다.

최근 XML의 응용분야로서 관심을 받는 분야는 바로 최소한의 지능을 가지고 있는 기기와 웹의 연동분야다. 가장 대표적인 예는 핸드폰과 웹을 연동할 때 사용하는 XML애플리케이션인 WML(Wireless Markup Language)이며 이는 텔레비전, 라디오, 주방기구, 냉장고, 자동차 등 일상생활에서 흔히 사용하는 유무선 기구들과 웹의 연동에도 큰 역할을 할 것이다.

그동안 SGML로 만들어져 오던 HTML은 4.0버전 이후에 5.0버전은 나오지 않고 있다. 대신 XML로 만든 XHTML 1.0이 권고안으로 채택됐다. 지금까지 SGML이 사용되던 곳은 점차 XML로 대체될 것이며 또 HTML이 사용되던 많은 부분에서 XML은 중요한 역할을 할 것이다. 앞으로 HTML은 프레젠테이션 언어로서 그리고 XML은 보다 진보된 데이터 표현과 처리를 위한 데이터 기술언어로서 폭 넓게 사용될 것으로 보인다.


브랜드 뉴스룸