2001년 2월 27일
XML은 다른 마크업 언어를 만들고, 다듬고, 사용하기 위한 툴킷이다. XML을 사용하면, 다양한 애플리케이션을 서로 함께 사용할 수 있다. 에릭 레이(Erik Ray)는 Learning XML이라는 책을 썼는데, 이 책에서는 XML이라는 강력한 도구의 바탕이 되는 이론과 철학을 설명하고, 이를 통해 독자들이 XML을 익힐 수 있도록 한다.우리는 에릭에게 XML에 대해 이것저것을 물어보았다.
스튜어트: 처음부터 시작합시다. XML이란 무엇입니까?
레이: 좋습니다. 대답을 약간 길게 해야 할 것 같군요. 질문에 대답하려면 XML의 정체뿐만 아니라 XML이 필요한 이유에 대해서도 설명을 할 필요가 있겠습니다.
사람들은 대부분 XML이 "확장 마크업 언어(Extensible Markup Language)"의 줄임말이라는 것은 알고 있습니다. 그리고 XML은 웹 언어로 전반적으로 사용되었던 HTML을 개선한 것이라는 생각하는 사람들도 있지요. 하지만, 실제로 XML은 마크업 언어가 아니며, HTML을 대체하지도 않을 것입니다. XML은 사용자의 필요에 맞도록 데이터를 구성하고 표현할 수 있는 마크업 언어를 만드는 데 사용될 툴킷입니다. 그건 TV 광고와 비슷한 면이 있습니다. TV 광고는 상품을 직접 만들지는 않지만, 사람들이 상품을 사도록 유도하는 것이지요. 또한, HTML은 사라지지 않고, XML의 규약을 따르는 HTML인 XHTML로 발전할 것입니다.
XML은 인터넷에 있어,데이터의 저장 및 전송을 발전시키기 위한 최소한의 표준이라는 의미가 있습니다. XML을 "인터넷의 터퍼웨어(Tupperware)"라고 부르고 싶은데, 터퍼웨어의 그릇과 같이 크기와 모양이 다양해서 사용자의 데이터에 완전하게 꼭 맞기 때문입니다. 어떤 의미냐구요? 자, 웹에 어떤 데이터를 올려야 하는 경우를 생각해 보지요. 웹에 데이터를 전송할 때에는 문서를 HTML 형태로 맞춰야만 하는데, 이렇게 되면 처음에 내용을 구상했을 때와 똑같은 모양으로 웹에서 보이게 될지를 걱정해야 합니다.(역주 터퍼웨어: 미국에서 가장 많이 쓰이는 플라스틱 용기 상품명)
예를 들어, 사람들은
태그를 단락을 구분하기 위해 사용할 뿐만 아니라 공백을 넣고 싶은 경우에도 사용하게 됩니다. 2단으로 된 페이지를 만들기 위해서는
태그를 사용하기도 하지요. 이런 경우를 "표현적인(presentational)" 마크업이라고 부르며, 문서를 만드는 별로 재미없는 방법입니다. 문서를 만들때는 표시 형태가 아니라 그 기능에 따라 문서를 구성한 다음에 문서를 구성하는 각각의 요소와 문서가 표현되는 스타일을 대응시키는 방법이 훨씬 좋습니다. 이를 테면, 오라일리에서는 기술 관련 서적을 출판하므로, XML을 이용하여 만든 DocBook이라는 언어를 사용합니다. 이 언어는 책을 만들기 위해 특별히 고안된 것이죠. 이렇게 함으로써 일반적인 문서를 DocBook에서만 사용되는 요소인 나 , 등을 구분할 수 있습니다. 이를 HTML로 변환하고 싶으면, DocBook에 해당되는 각 요소에 특정한 HTML 요소를 대응시키면 되지요. 물론, 하나의 데이터를 가지고 책이나 CD-ROM 또는 점자책 등 어떤 형태로든 변환할 수 있습니다.
XML을 통해 만들어진 모든 언어는 어떤 최소한의 기준을 지킨다는 점이 보장됩니다. 그 기준이란, 소위 "웰폼드(Well-formed)"라는 것이지요. 이것은 데이터에 있어서 매우 중요한 장점입니다. 즉, 쉽게 구할 수 있는 도구나 코드 라이브러리를 통해서 데이터를 처리할 수 있다는 의미입니다. 지금까지 방법에 비해 더 쉽게 데이터의 일관성을 확인하고 다른 형태로 변환할 수 있다는 의미지요. 그러므로, 특정한 소프트웨어만을 고집해야 할 이유가 없어집니다. XML은 국제 표준이므로 다른 사용자가 데이터를 재사용하고, 다시 가공하고, 저장하기가 훨씬 더 좋겠지요.
스튜어트: 현재 XML은 표준화 과정에서 어느 정도의 위치에 와 있습니까?
레이: XML은 1998년 이후 표준으로 추천 받아 왔습니다. XML은 아직 2년 정도밖에 안 되었지만, 이미 수학 방정식에서부터 개념적 주제 표현에 이르기까지 다양한 것을 XML로 기술하는 수십 여가지의 방법이 이 만들어졌습니다. XML은 월드 와이드 웹 컨소시엄(W3C: World Wide Web Consortium)에서 수행한 훌륭한 일입니다. 아시다시피 W3C는 계속 여러가지 명세를 만들어서 이를 무료로 공개하고 있습니다. XML은 앞으로도 계속 새로운 기능이 추가되면서 표준화 작업이 진행되겠지만, 이미 많은 사람들이 이를 사용하고 있지요.
스튜어트: XML 스키마(schema)가 무엇입니까?
레이: XML에는 도큐먼트 타입 정의(DTD)라고 하는 것이 포함됩니다. DTD는 어떤 문서가 어떤 특정한 언어에 속하기 위해 따라야 할 규칙들입니다. X를 어떤 언어라고 해봅시다. 예를 들면, DocBook, XHTM 혹은 그 어떤 언어도 될 수 있습니다. 어떤 문서가 X의 모든 규칙을 통과하면, 그 문서를 X의 올바른 인스턴스라고 합니다. 이런 이유에서 문서의 품질을 통제할 수 있습니다. 즉, 문서의 양식이 온전하게 완성되었는지, 모든 요소에는 적절한 값이 있는 지를 보장할 수 있게 되지요.
하지만 DTD에는 몇 가지 결점이 있습니다. 예를 들어, 텍스트가 포함된 요소가 필요한데, 특정한 종류의 텍스트로만 그 요소의 값을 제한할 수 있는 방법은 없습니다. 이렇게 되면, 필드에는 반드시 날짜에 대한 내용만 있도록 하고 싶을 때 문제가 됩니다. DTD에는 이런 부분까지 제어할 수 있는 기능이 없기 때문이죠. 그래서 스키마가 필요한 것입니다.
스키마는 DTD와 같이 어떤 요소를 처리하는 방법 등 문서 내의 구조를 체계화 하는 것입니다. 그런데, DTD보다 발전된 점은 스키마를 통해서 각 요소가 포함하고 있는 데이터 타입을 검사할 수 있다는 점이지요. 다시 말하면, 스키마를 통해서 어떤 필드에는 부동소수점 형식의 데이터가 있어야 하고, 어떤 필드에는 문자열이 있어야 하며, 다른 필드에는 날짜 형식의 데이터가 있어야 하는지를 명확하게 할 수 있습니다. 데이터베이스에 대한 질의나 웹 폼과 같이 일정한 형식의 필드가 필요한 문서에 알맞습니다. 게다가 스키마는 그 자체가 XML 저작 도구를 사용하여 편집할 수 있는 XML 문서라는 점이 멋진 부분입니다.
DTD는 XML에서 여전히 중요한 부분이기 때문에, 스키마가 DTD를 대체하지는 않을 것입니다. 오히려, 스키마와 DTD는 한창 발전하고 있는 XML 기술에서 중요한 위치를 차지하게 될 것입니다.
스튜어트: 얼마동안은 XML이 HTML을 대신할 것 같아 보이기도 했습니만… 어떻습니까? XML이 HTML을 대신할 수 있을 것이라고 생각하십니까? 그리고, 정말 이런 일이 벌어질까요?
레이: 아니오, 그렇지는 않습니다. 앞에서도 말씀드렸지만, 둘 사이의 차이가 있습니다. XML은 마크업 언어가 반드시 지켜야 하는 규칙이라는 데 가치가 있습니다. 반면, HTML은 일반적인 웹 페이지를 기술하는 언어로 매우 유용합니다. 다만, XML을 통해서 기존의 HTML처럼 엉망진창으로 코드가 엉키지 않도록 할 수 있으며, 지금까지 HTML 만으로 불가능했던 여러 가지가 XML을 통하여 가능해 지겠죠. 어쨌든, XML은 HTML을 확장시키고 발전시킬 것입니다.
또한, XML이 HTML에 대한 대안이 될 수도 있겠지요. 많은 디자이너와 작가들이 지난 몇 년 동안의 경험을 통해서 알고 있겠지만, HTML에는 많은 제약이 있습니다. 원래 HTML이 물리학 연구실에서 간단한 연구 논문을 표현하기 위해 설계된 언어 일뿐, 겹쳐진 이미지에 다단 편집을 지원하는 복잡한 형태의 문서나 특정 전문 분야에서 사용되는 문서를 지원하기 위한 것은 아니기 때문이죠. 이러한 분야에서 XML은 HTML이나 다른 해결책 사이의 가교 역할을 하게 될 것입니다.
스튜어트: 웹 개발자들 입장에서는 XML-규약을 따르는 XHTML이 언제고 곧 HTML을 대체할 것이다라고 생각할 수도 있을 것 같은데요? 어떻습니까?
레이: XHTML은 점진적으로 HTML을 대체하겠죠. 물론 그렇게 되려면 웹 파일에 XML을 도구를 사용하는 것과 같은 장점이 있어야 할 것입니다. 킵 햄튼(Kip Hampton)은 XML.com에서 XML::Path라는 새로운 펄 라이브러리에 대한 글에서 이 라이브러리를 사용하면 일단 XHTML로 변환된 파일을 아주 다양한 형태로 변환할 수 있게 됩니다. 사이트 매퍼나 개선된 검색도구 등도 만들 수 있지요. 벌써 XML 관련 제품이 판매되고 있으며 조만간 저작도구나 품질 보증 도구, 디지털 관리 시스템과 같은 다양한 도구들을 사용할 수 있게 될 것입니다. 장기적으로 보면 XML 규약에 맞도록 파일을 만드는 것이 이익이 될 것이며, 단기적인 측면에서도 이에 대한 준비를 해야 할 것입니다. 월드 와이드 웹 컨소시엄(W3C)에서는 HTML Tidy라는 도구를 제공하는데, 이를 사용하면 XML과 관련된 작업을 간단히 할 수 있습니다.
스튜어트: FOP가 무엇입니까?
레이: FOP는 "(XSL) Formatting Objects to Point"의 약자입니다. XSLT와 XSL-FO(XSL for Formatting Objects)을 사용하여 XML을 인쇄하기 위한 방법입니다. XSL-FO 작업이 아직 진행 중이므로, FOP도 여전히 개발 과정에 있습니다. 자세한 정보를 얻고 싶으면 아파치 XML 프로젝트 사이트에서 FOP 페이지를 참고하십시오..
스튜어트: XSLT는 XML에서 사용되는 웹 개발자들에게 익숙한 일종의 스타일시트라고 할 수 있습니까?
레이: XSLT가 왜 만들어졌는지에 대해 간단히 말씀드려야 겠군요.
대부분의 웹 개발자들은 캐스케이딩 스타일쉬트(CSS)를 이용해 왔습니다. 웹 페이지에 스타일을 적용하는 데 있어 CSS는 단순하지만 아주 효과적인 수단이죠. 표시 방법이 정의된 스타일을 각 요소에 적용하여 테두리를 설정한다거나 여백을 줄 수도 있고, 여러 가지 다양한 효과를 적용할 수 있습니다. 현재 W3C에서 개발 중인 새로운 스타일시트가 있는데, XSL(Extensible Stylesheet Language)라고 합니다. XSL는 CSS에 비해 훨씬 강력하고 다양한 표시 방법을 지정할 수 있도록 개발되고 있습니다.
XSL은 XSLT(XSL for Transformation)과 XSL-FO(XSL for Formatting Objects)라는 두 부분으로 구성됩니다. 그런데, XSLT는 각 요소에 적용되는 스타일을 위한 언어는 아니고, XML의 특정한 형식을 다른 형태로 변환하는 방법을 기술하는 언어입니다. 원래는 XSL-FO와 함께 사용하여 특정한 XML 문서를 다른 형태의 최종 결과물로 표시할 수 있도록 설계되었습니다. XSLT는 XML 문서를 포매팅 객체 트리(기본적으로 XSL-FO)라고 하는 임시 형태로 변환한 다음, 이 포맷팅 객체 트리가 최종 결과로 바뀌게 됩니다.
XSL-FO는 아직도 작업 단계에 있지만, XSLT는 현재 어느 정도 완성된 상태입니다. XSLT은 문서를 XSL-FO 형태로 만들 때 보다 훨씬 다양한 목적에 적용할 수 있다는 것이 강점입니다. 다시 말하면 XSLT는 범용 도구이며, 이에 따라 문서를 만들면 원하는 어떤 형태든 원하는 형태로 바꿀 수 있습니다. 이를 테면, DocBook 문서를 웹에서 표시하기 위해 HTML을 바꿀 수도 있지요. 이런 식으로 CD-ROM 작업을 하고 있으며, 오라일리의 온라인 도서관인 사파리(Safari)에서도 적용되고 있습니다.
자, 이야기가 너무 길어졌는데요. 결론적으로 CSS는 현재 그 역할을 충실하게 수행하고 있기 때문에 앞으로도 상당기간 비교적 간단한 문서에 단순한 스타일을 적용할 때 사용되게 될 것입니다. 제가 Learning XML에서 설명한 것과 같이 스타일시트를 XML과 함께 사용할 수도 있습니다. 하지만, 복잡한 포매팅을 해야 하는 경우라면, XSL를 쓰는 것이 낫겠죠.
스튜어트: DocBook에 대해서 좀 더 말씀해 주십시오. 왜 DocBook이 기술 도서에 적합한 도구라고 하십니까?
레이: DocBook은 XML을 응용한 것입니다. 데이터에 라벨을 붙이고, 구조를 설정하는 데에 엄격한 XML의 규칙을 쉽게 적용할 수 있는 마크업 언어입니다. DocBook의 적용 대상에는 컴퓨터 기술과 관련된 책과 같은 기술 도서도 포함됩니다. DocBook에는 , , 와 같은 것들을 위한 매우 구체적인 태그들이 많이 포함되어 있습니다. 특정한 용어에 이러한 태그를 사용함으로써 엘리먼트 단위의 검색과 같은 고급 기능을 구현할 수 있지요. 예를 들면, "print"가 포함된 (명령을 입력하는 상황에서처럼)를 검색할 수 있고, print()라는 과 같이 이름은 같지만, 사용되는 상황이 다른 경우를 구별할 수 있습니다. 이런 경우도 XML을 이용하여 모호하지 않도록 각 대상을 표현할 수 있는 예입니다.
SGML, XML, DockBook DTD나 DocBook에 관련된 정보는 DocBook: The Definitive Guide를 참고하십시오.
스튜어트: 웹 기술에 있어 XML이 중요한 이유가 무엇이라고 생각하십니까?
레이: 웹은 전세계 수백만 개의 컴퓨터 사이트에서 엔터테인먼트, 비즈니스, 뉴스, 인터넷 뱅킹, 검색, 참고 자료, 연구 자료등 컨텐츠를 제공하고 있습니다. XML을 통해 거의 모든 애플리케이션에서 정보를 표현하고 묶어낼 수 있습니다. 웹과 XML 사이에 궁합이 아주 잘 맞게 되지요.
XML을 이용하면 정보의 교환을 방해하는 병목현상을 줄일 수 있습니다. 하나의 형식에서 다른 형식으로 정보를 변환하고, 문서를 필터링하거나 요약하고, 검색 작업을 수행하기가 더 쉬워지게 되지요. 일반적인 HTML에 비해 문서를 온라인으로 보거나 인쇄하거나 또 점자나 음성 등 여러 가지 다양한 형태로 표현하기가 훨씬 더 쉽습니다.
디자이너들은 어떻게 표현될지를 결정할 수 있다는 점에서 XML을 좋아하게 될 것입니다. 프로그래머 입장에서도 쉽게 컨텐트를 제어하고 조작할 수 있다는 점이 마음에 들겠죠. 웹 저작자들에게는 마크업 언어를 개인화하여 만들어 쓸 수 있다는 점이 매력으로 작용할 것입니다. 그렇다면, 누가 XML을 싫어하겠습니까?
스튜어트: 애플리케이션 간의 데이터 공유와 비즈니스 사이의 데이터 공유라는 잠재력이 XML 을 통해 드러난 예가 있을까요?
레이: 아직도 세계적으로 많은 것들이 개발되고 있고, 성공을 거둔 사례도 찾아 볼 수 있습니다. 몇 가지 예를 들어 보자면, WML은 텍스트로 된 정보를 휴대 전화에 전달하기 위해 만든 XML 언어이며, XML을 사용하여 컨텐츠 제작자가 소비자에게 신문 기사를 전송하는데 ICE라는 시스템을 사용하기도 합니다. XML을 응용하여 일상적으로 마케팅 정보를 교환하고 있기도 하고, 오픈 E-Book은 디지털 형태로 책을 표현하는 좋은 방법으로 마이크로소프트와 여러 출판사에서 사용되고 있습니다.
스튜어트: Learning XML을 쓸 때 염두에 둔 독자는 어떤 사람들입니까?
레이: 저는 적어도 웹과 HTML에 대한 지식이 있고, 새로운 기술에 관심을 가진 독자를 대상으로 했습니다. 그러나, XML을 처리하는 프로그램을 작성하는 방법과 같이 깊은 수준의 지식을 요구하지는 않습니다. 이 책에서는 XML을 이용하여 할 수 있는 일에 대해 개괄적으로 설명하고, XML의 철학에 대해서도 설명했습니다. 그리고 XML의 전망에 대해서도 간략하게 설명하였습니다. 기술적인 지식을 좀 더 얻고 싶은 사람이라면 Building Oracle XML Applications이나 Java와 XML과 같은 책을 참고하는 것도 좋겠습니다.
스튜어트: Learning XML이 개발자는 아니지만 웹과 관련된 일을 하는 사람에게 도움이 될까요?
레이: XML은 기술인 동시에 철학이기도 합니다. 그래서 저는 두 가지 측면 모두에 똑 같은 시간을 할애하려고 하였습니다. 저는 문서를 만들기 위한 마크업 언어의 사용과 필요성에 대한 기본적인 내용을 설명하였습니다. 그 다음에는 문서 연결, 스타일시트 사용, XML 변환, DTD과 국제화 등 XML과 관련된 중요한 영역에 대해 설명하였습니다. 이렇게 하면 XML의 겉모습은 한번 쭉 훑어 보게 되는 셈이지요. 이런 내용들은 아마도 웹과 관련된 일을 하는 사람들에게 새로운 기술에 대한 좋은 안내가 될 것입니다.
스튜어트: 마이크로소프트의 닷넷 플랫폼과 XML의 관계는 어떻습니까?
레이: 닷넷은 마이크로소프트의 새로운 패러다임입니다. CD-ROM으로 된 소프트웨어를 구입해서, 하드 디스크에 설치하는 방법 대신에 소프트웨어 서비스를 "구독하고" 필요할 때 인터넷에 등록된 애플리케이션을 다운받아 사용하는 형태지요. 어떻게 비즈니스를 전개할지는 저도 잘 모르겠습니다만, 흥미로운건 사실입니다. XML은 애플리케이션이 데이터를 공유하고 전송하는 어떤 네트워크 시스템에서든지 강력한 컴포넌트가 될 것입니다. 닷넷과 관련된 글을 보려면 저희 사이트의 .NET/C# 관련 글 모음을 참조하십시오.
마이크로소프트는 XML과 관련된 중요한 역할을 하겠다는 입장을 명확하게 밝힌바 있습니다. 그래서 표준화 과정에도 깊숙하게 개입하고 있으며, 구체적인 기술로 구현하는 데도 아주 적극적이고 빠르게 대응하고 있지요. 인터넷 익스플로러 5.0을 통해서 표준을 잘 따르는 위치로 자리매김하였습니다. 인터넷 익스플로러 5.0의 경우 DTD를 통한 XML 타당성, XSLT 스타일시트를 이용한 변환 등을 지원하지요. 이런 부분들이 닷넷에 대한 어떤 징조라고 한다면, 레드몬드에서 XML의 미래는 밝다고 말할 수 있을 것입니다.
스튜어트: 마이크로소프트가 XML을 받아들인다는 사실은 어떤가요? MS의 경우 공개 표준으로 작업하는 것과는 별로 관련이 없지 않았습니까?
레이: 리눅스나 다른 오픈 소프트웨어 프로젝트가 점점 힘을 가지게 되면서, 마이크로소프트에서도 그들이 계속 발전하려면 전반적인 커뮤니티와 좋은 관계를 유지해야 한다는 점을 인식한 것 같습니다. 마이크로소프트 입장에서 보면 XML은 기존의 형태와는 다른 모양새로 마케팅과 기술력을 투자할 수 있는 있는 방법이지요. 이는 또한 공개 표준을 통해서 기업체가 수익을 얻을 수 있는 사업을 벌일 수도 있다는 점을 보여주는 새로운 모습이기도 합니다.
스튜어트: 앞으로 XML은 어떻게 될 것이라고 생각하십니까?
레이: HTML 때문에 웹이 번성했다면, XML은 커뮤니케이션을 더 쉽고 유연하게 해 줄, 웹이 발전하는 두 번째 단계가 될 것입니다. 다국어와 유니코드 지원기능으로, 국가간의 경계도 허물것입니다. XML을 처리하는 소프트웨어는 쉽게 만들 수 있으므로 예전처럼 독점적인 형테를 가지고 일정한 지위를 누려온 소프트웨어들과는 달리 다양한 형태로 데이터를 공유하는 수많은 소프트웨어를 만날 수 있을 것입니다. 물론, XML도 HTML이 그러했듯이 일정 기간 동안 성장, 발전하다가 XML로만은 원하는 모든 것을 할 수 없다는 한계에 부딪칠 것인지 또는 그렇지 않을 것인지에 대해서는 장담할 수 없습니다. 하지만 확실한 사실은 XML이 기존의 다른 어떤 것들보다 훨씬 유연하고 풍부한 기능을 제공한다는 점입니다. 이런 특징으로 미루어 보면 앞으로 꽤 오랫동안은 수명을 유지할 것이라고 생각합니다.
TAG :