개발자들은 XML의 표준화를 애타고 기다리고 있거나 이에 대한 공포의 나날을 살고 있거나 둘 중에 하나일 것이다. 칼럼리스트인 수지 아담스(Susie Adams)가 미스터리속에 숨겨져 있는 XML에 대한 비전을 제시한다.
컴퓨터 업계에 등장하는 새로운 기술들은 대다수가 “여러분의 문제를 시원하게 해결해 줄! XXX”와 같은 미사어구를 달고 나타나곤 한다. 현재 이렇게 등장한 기술이 바로 XML(Extensible Markup Language)이다. 그렇다면 이 신기술이 들고 나온 선전 문구란 무엇인가? XML은 범용의 텍스트 기반 형식으로 데이터를 묘사할 수 있게 해 주는 마크업 언어이다. 많은 부분이 HTML과 유사하지만 가장 큰 차이점은 XML이 HTML과는 다르게 확장 가능하다는 것이다. HTML은 마크업(markup)으로 알려진 일련의 태그 세트로 구성되어 있으며 웹 브라우저에서 정보가 출력되는 시각적인 면을 정의한다. 반면에 XML은 사용자 스스로 정의하는 태그 세트로 이뤄지며 문서내에 포함된 데이터를 기술하는 용도로 만들어 졌다.
현재 인터넷의 주된 용도가 정보를 보기 위한 것이기는 하지만 앞으로 멀지 않은 미래에 인터넷을 통해 전자 형태의 봉급 명세서를 주고 받으려 하거나 이보다 조금 더 복잡한 경우로 환자의 진료기록을 병원에서 각 진료 과와 담당 의사간에 교환하려고 한다면 어떻게 해야 할까? 컴퓨터 업계는 이런 유형의 데이터 교환을 돕기 위해 특정 업계에 적합한 표준 또는 규칙(vocabularies)을 만들기 위해 XML을 사용하기 시작했다. 이런 예로 이미 만들어진 몇 가지 분야에 적합한 여러 가지 마크업 언어를 들 수 있다. 이들 중 하나는 개방형 재무정보 교환 마크업 언어(Open Financial Exchange markup language)로 고객의 재무관련 데이터를 그들의 거래 은행과 주고 받기 위해 다양한 프레임워크를 기반으로 제공되고 있다.
그렇다면 이런 구조에서 ASP는 어떻게 이용될 수 있을까? XML은 개발자들에게 데이터를 보통 텍스트로 묘사하고 이 데이터를 각 응용 프로그램간에 자유롭게 교환할 수 있게 해 준다. 하지만 XML 문서 자체는 데이터의 집합일 뿐이다. 데이터를 생성하고 이용하기 위해서는 이 데이터에 접근하기 위한 ASP나 자바 스크립트와 같은 프로그래밍 언어가 필요하다. 여기에서 우리는 간단한 XML 데이터 소스를 만들기 위해 ASP를 이용하는 방법에 대해 알아 보기로 한다.
XML이란 무엇인가?
XML 문서는 트리 형태의 데이터 구조로 가장 잘 표현된다. 트리 구조의 최상위 레벨은 문서의 루트(root)라고 하며 그 아래 속해있는 데이터들은 가지가 되며 엘리먼트(element)라고 한다. 이를 나타낸 것이 그림 A이다.
XML 문서를 작성할 때는 원칙적으로 전송될 데이터에 대한 자신만의 표준을 만들어야 한다. 자신만의 표준을 만드는 데 필요한 규칙은 간단하다.
모든 시작 태그(opening tag)에는 그에 짝이 되는 종료 태그(closing tag)가 뒤따라 한다는 것과 각 태그가 중첩되는 경우에는 반드시 계층적인 구조를 따라야 한다는 것 뿐이다. 언뜻 봐도 HTML과 XML은 근본적으로 매우 유사하다. 하지만 이 둘 사이에는 몇 가지 미묘한 차이점이 있다. 첫번째는 HTML이 조금 더 느슨한 구조로 되어 있어서 와 같은 몇몇 태그는 짝이 되는 종료 태그를 뒤에 붙이는 것이 선택 사항으로 되어 있다. 반면에 XML에서는 모든 시작 태그에는 짝이 되는 종료 태그가 와야 하며 선택적인 생략을 허용하지 않는다. 그 다음 차이점으로 HTML에서는 엘리먼트의 시작과 끝이 겹칠 수 있지만 XML에서는 이런 것도 허용하지 않는다. XML은 계층적 구조를 가지며 트리 구조의 시작과 끝이 계층적인 구조에 맞아야 한다. 예를 들면 다음의 코드는 잘못된 것이다.
Susie Manager
이런 식으로 되야 한다.
Susie Manager
속성값(attribute value)을 가지는 XML 아이템이 있다면 그 속성값은 반드시 따옴표(“) 안에 있어야 한다. 또한, XML 엘리먼트는 데이터를 나타내기 때문에 태그 내부에 포함된 모든 문자(공백 문자 포함)는 무시되지 않으며 하나의 ‘값’으로 처리된다. 마지막으로 XML 태그의 이름은 대소문자를 구별해 사용된다. 예를 들어 XML 문서 내에서
HTML과는 다르게 XML 문서는 여러 가지 방법을 사용해 스스로에 대한 정보를 유지하며 자체적인 유효성을 검증한다. HTML은 제한된 태그를 인식하는 브라우저에 의해 해석되기 때문에 브라우저가 인식할 수 없는 태그는 무시된다. 하지만 XML은 XML 해석기(XML parser)에 의해 해석되며 해석기는 문서의 구조를 점검하고 필요한 경우에는 그 문서의 유효성을 확인해 준다. XML에서는 두 가지 종류의 유효 문서가 있다. 그 중 하나는 ‘갖춘 문서(well-formed document)’이며 나머지 하나는 유효한 것으로 판정되는 문서이다. 갖춘 문서(Well-formed document) 는 앞서 설명한 여러 가지 기본 제약 사항과 규칙(모든 시작 태그는 종료 태그를 동반하며 데이터는 계층적인 구조를 가져야 한다는)을 따르는 문서를 말한다.
XML 문서의 유효성을 검사하기 위해서는 이에 적용할 문서 타입 정의(DTD, Document Type Definition)를 만들어야 한다. DTD는 XML 문서의 일부가 될 수도 있으며 XML 문서 내부의 내용에 적용될 외부 문서일 수도 있다. 예를 들어 사용자는
ASP를 이용한 XML 데이터 소스의 생성
한번쯤 다음과 같은 의문을 가져본 적이 있을 것이다. “내 시스템에서 충분히 사용할 수 있는 데이터를 왜 XML과 같은 새로운 포맷으로 변환하는 수고를 해야 하는걸까?” 이런 번거로움을 기꺼이 감수할 수 있는 가장 중요한 이유는 XML이 HTML 페이지의 스크립트와 같이 다른 응용 프로그램에 의해 쉽게 해석되고 조작될 수 있는 공통의 데이터 포맷을 기반으로 하고 있기 때문이다. 만약 데이터를 관계형 데이터 포맷으로 계속 둔다면 이 데이터는 OLEDB 데이터 소스를 지원하는 ASP와 응용 프로그램에서만 사용할 수 있을 것이다. XML을 이용하면 XML 구조를 해석할 수 있는 모든 클라이언트에서 데이터를 사용할 수 있다.
그렇다면 왜 굳이 XML 데이터 소스를 생성하는데 ASP를 쓰려고 하는 걸까? 그냥 각 데이터 베이스 테이블에 저장된 데이터에 따라 직접 XML 파일을 생성하는 작은 프로그램을 필요할 때 마다 만들어서 사용하면 안될까? XML 문서를 데이터 베이스에 저장된 정보를 기준으로 동적으로 생성하게 만들어 두면 데이터 베이스의 내용이 변경될 때 마다 자동으로 XML 문서도 갱신된다. 이런 방법을 이용하면 여러분의 관계형 데이터 베이스와 XML 데이터 소스를 따로따로 작성해 줘야 하는 수고 없이 관리할 수 있다.
관계형 데이터 베이스 테이블에 저장된 데이터를 ASP를 이용해 XML 데이터 소스로 변환하는 것은 무척 쉽다. 전형적인 ASP 개발에서는 데이터 소스에 접속한 후 클라이언트 측의 브라우저로 전송하기 위한 HTML 출력을 위해 데이터를 조작하게 된다.
XML 데이터 소스를 만들기 위해서도 클라이언트측 브라우저로 전송할 정보를 출력하기 위해 ASP를 이용하게 된다. 차이라면 출력 과정에서 그 형태가 HTML이 아닌 XML이라는 것이다. HTML을 생성하는 ASP 페이지와 XML을 생성하는 ASP간의 가장 큰 차이점은 실행 결과 생성되는 텍스트의 구조이다. 다음의 예에서 우리는 노스윈드 엑세스 데이터 베이스()에 접속할 것이며 그곳에서 고객, 주문 그리고 주문 상세내역 테이블을 참조해 XML 데이터 소스를 생성하게 될 것이다. 이 예제를 이용해 프로그램을 만들 때에는 Nwind 데이터 베이스를 위한 ODBC 데이터 소스를 생성해야 하며 자신의 개발 환경에서 그 데이터 소스에 접근할 수 있어야 한다. 그 다음 단계는 그림 B에 나와 있는 것과 같이 XMLData.asp라는 이름으로 새로운 ASP 페이지를 만드는 것이다.
그런 후에 리스트 A에 나와 있는 코드를 추가한다. 모든 ASP 페이지의 시작에는 언제나 스크립트 태그가 온다. 또한 XML 파일을 만들기 위해서는 이곳에 지금 XML 데이터를 만들고 있다는 것을 브라우저에게 알릴 수 있는 추가적인 정보가 들어가야 한다.
<%@ LANGUAGE = VBScript %>
XML을 만들기 위해 첫번째 코드는 데이터 베이스에 대한 ADO 접속을 생성하고 고객 데이터가 들어있는 ADO recordset을 만들기 위한 SQL 질의문을 수행한다. 그런 후에 각 고객의 정보가 저장된 recordset을 가지고 루프를 돌며 그에 해당하는 XML을 생성하게 된다. XML 데이터를 위한 트리 구조는 고객, 주문 그리고 주문 상세내역 이렇게 3개의 레벨로 구성된다. 루프에서 새로운 고객 정보가 추출될 때 마다 그 고객의 주문 내용을 요구하는 새로운 질의문이 실행된다. 주문에 대한 정보가 나오면 이에 따라 각 주문 상세내역을 불러 들이는 루프를 수행하게 된다.
ASP 코드에 의해 생성된 XML을 보려면 IE5 브라우저를 이용해 ASP 페이지를 불러 들인다. IE5에는 XML 해석기가 포함되어 있으며 ASP 페이지에서 생성된 XML은 해석기를 통해 해석되고 그 결과가 브라우저에 데이터 트리의 형태로 출력된다. 생성된 XML 데이터 트리는 그림 C와 같은 모습일 것이다.
참고: IE4 브라우저는 XML 데이터를 그림 C와 같은 트리 구조로 출력하지 못한다. 현재로서는 IE5가 이 기능을 지원하는 유일한 브라우저이다.
XML 데이터의 유효성 검사 방법
XML 데이터 트리는 매우 복잡하게 나타날 수도 있다. 그렇다면 ASP 코드가 만들어낸 XML 데이터 소스가 올바른 것인지 어떻게 알 수 있을까? XML 데이터의 유효성을 검사하는 방법은 여러 가지가 있지만 그 중에서 가장 간단한 방법은 앞에서 했던 것처럼 생성된 XML 데이터를 IE5로 읽어 보는 것이다. 만약 생성된 XML이 부적절한 것이라면 브라우저에서 오류 메시지를 출력하게 된다. 실제로 이런 동작을 시험하기 위해 리스트 A에 나와있는 코드에서 태그를 로 바꿔 ASP 페이지를 수정해 보기로 하자. 이렇게 하면 그림 D와 같이 될 것이다.
그런 후에 저장하고 IE5에서 이 페이지를 로드해 보자. 브라우저에서는 그림 E에 나와있는 것과 같은 오류 메시지를 출력할 것이다.
XML 데이터 소스가 유효한지를 확인하는 또 다른 방법은 명령행 유틸리티인 XMLINT.EXE를 실행시키는 것이다. XMLINT.EXE는 IE4 SDK에 포함되어 있던 XMLINT 명령행 유틸리티의 개선된 버전이다. 이 프로그램은 주어진 XML 파일이 정상적인 규칙을 따르고 있는지를 검사해 준다. 새로운 버전에서는 새로운 XML DOM을 이용해 지정된 DTD(또는 XML 데이터 스키마)를 기준으로 문서의 유효성을 검사해 주기도 한다. 이 유틸리티는 두 가지 옵션을 지원하는데 한가지는 “갖춤(Well-formness)”이며 또 다른 하나는 IE4와의 호환성을 위한 것이다. XMLINT.EXE에서 사용되는 전달인자와 옵션에 대한 설명은 표 A에 나와 있다.
예를 들어 d:xml 디렉터리에 있는 모든 문서의 유효성을 검사하려면 다음과 같이 입력한다.
xmlint d:xml*.xml
앞선 설명에 의해 생성된 XML을 검사하기 위해서 먼저 IE5에서 오류가 없는 XML 문법을 사용한 페이지를 로드하고 소스 보기 윈도우를 연다. 여기에서 생성된 XML을 오려 붙이기 기능을 이용해 메모장으로 옮기고 포맷 오류를 유발하기 위해 XML 태그를 앞에서 했던 것처럼 수정한 후 저장한다. 그 결과는 그림 F와 같을 것이다.
이제 MS-DOS 윈도우를 열고 방금 만들어 저장한 파일에 대해 XMLINT 유틸리티를 실행 시킨다. 이렇게 하고 나면 그림 G에 나와 있는 것과 같은 오류 메시지가 출력되어야 한다.
결론
아직은 시각적인 면과 사용자 인터페이스의 표준이 필요 하지만 데이터를 관리하고 묘사하는데는 부족함이 없다. XML이 나오기 전에는 인터넷과 HTTP를 이용해 지능적인 검색과 데이터 교환을 가능하게 해 주는 표준이 전혀 없었다. 오늘날의 인터넷은 단순히 정보를 보여주는 것에 그치지 않고 직접 데이터를 사용자에게 전송해 그 내용을 해석하도록 하고 있다. XML은 개발자들이 다양한 종류의 데이터를 이해도가 높은 구조적 방식으로 표현할 수 있게 해 준다. 이미 XML을 지원하는 다양한 응용 프로그램이 나와 있으며 지속적으로 인터넷 개발자들에 의해 만들어 지면서 그 인기를 더해가고 있다. XML의 강력함은 미래에 대한 밝은 비전을 제시하고 있지만 아직은 완성되기까지 시간이 조금 필요한 상태이다. XML이 데이터 교환 문제를 해결하기 위한 현실적인 방법으로 받아 들여 지려면 먼저 그 표준에 대한 각 계층의 동의가 필요하다.
현재 XML은 IE 4.10과 베타 버전의 IE5에서 지원하고 있다. 마이크로소프트는 이 외에도 다양한 제품에서 XML을 지원할 계획이다. 넷스케이프 브라우저에서는 아직 XML을 지원하지 않고 있지만 앞으로 나올 새로운 버전에서는 XML을 지원할 것이라고 한다.@
원문 등록일 : 1999/07/30










