메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

파이썬과 XML의 예술적인 만남

한빛미디어

|

2002-11-08

|

by HANBIT

10,911

저자: 우체 옥버지(Uche Ogbuji), 역 전순재

파이썬-XML 칼럼에 오신 여러분을 환영하는 바이다. 본 칼럼에서는 파이썬으로 XML을 처리하는 법과 관련된 팁과 테크닉들을 비롯하여 특정 패키지들을 자세하게 살펴 볼 것이다. 파이썬은 XML을 처리하는데 탁월한 언어이며, 용기있는 개발자라면 이러한 풍부한 도구들과 자원들의 도움을 받아 생산성을 높일 수 있을 것이다. 앞으로 이런 도구와 자원을 조사하면서, 파이썬이 얼마나 광범위하게 XML 테크놀로지를 제공하는지 감을 잡을 수 있도록 하고, 계속해서 여러분이 추구할 더욱 깊이있는 주제들로 향한 첫 출발점을 제공하겠다.

파이썬과-XML의 세계

파이썬-XML의 궁합에서 얻을 수 있는 가장 큰 이점은 실무 전문가들과 기여자들로 구성된 활동적인 공동체이다. 개론격의 텍스트로부터 메일링 리스트로 가는 참조점들까지, 파이썬과 XML에 대해 물어볼 만한 대부분의 질문들에 대하여 이러한 자원들이 해답을 제공할 것이다. 만약 여러분이 XML기본 지식을 갖고 있는 파이썬 초보자라면 세언 맥크래쓰(Sean McGrath)의 기사인 XML Processing with Python(파이썬으로 하는 XML 처리법)이 오래되긴 했지만 여전히 뛰어난 개론서로 추천할 수 있겠다.
Python Cookbook


파이썬 XML 동호회(SIG)는 XML을 위한 파이썬 작업에서 기본적으로 초점을 맞추어야 할 곳이며, 그의 메일링 리스트는 논의를 위한 좋은 장소이다. 파이썬 XML 동호회는 XML 북마크 교환 언어(XBEL, XML Bookmark Exchange Language)와 같은 중요한 보편적인 XML 작품을 내놓기도 했는데, 이 작품은 이제 여러 웹 브라우저에서 사용되고 있다. 또한 4SuiteZope-xml 메일링 리스트에는 일반적인 Python-XML 토론이 많이 있다.

파이썬으로 하는 XML 처리에는 인쇄 자료가 많이 있다. 크리스토퍼 존스(Christopher A. Jones)와 프레드 드레이크(Fred L. Drake, Jr.)가 오라일리에서 집필한 『Python & XML』이 이와 관련된 귀중한 책이다. 이 외에도 가르숄(Lars Marius Garshol)이 Prentice Hall에서 집필한 『Definitive XML Application Development』에서는 XML 처리를 소개하면서, 철저하게 파이썬을 구현 언어로 사용한다. 이 책에서는 자바도 사용하는데 Java-XML 프로그래밍에 익숙한 사람들이 관심가질 만한 비교거리를 제공한다. 오라일리에서 출간된 『Python Cookbook』은 알렉스 마르텔리(Alex Martelli)와 데이비드 아셔(David Ascher)가 편집했는데, XML 비법에 한 섹션을 할애하고 있을 정도이다. 데이텔(Deitel), 리페리(Liperi), 비더만(Wiedermann)이 Prentice Hall에서 집필한 『Python How to Program』도 여러 챕터와 상세한 사례 연구를 통해 XML을 다루고 있다. 또한 스티브 홀든(Steve Holden)과 데이비드 비즐리(David Beazley)가 New Riders에서 집필한 『Python Web Programming』도 XML에 대해 한 장을 할애하고 있다. Python-XML 책으로는 Prentice Hall에서 출간된 『XML Processing with Python』을 들 수 있다. 이 책은 세언 맥그래스(Sean McGrath)가 집필했으며 약간 오래되었지만 다른 책들에서 다루지 않는 주제들을 다루고 있다. 마틴 브라운(Martin C. Brown)이 Sybex에서 집필한 『XML Processing with Perl, Python, and PHP』에서는 파이썬에 총 6챕터에 해당하는 분량을 할애하고 있다. 버전 2.0 이상을 다루는 대부분의 일반적인 파이썬 책들이라면 내장된 XML 처리 라이브러리를 소개할 것이다. 이 외에도 마크 루츠(Mark Lutz)는 파이썬 책 목록을 유지보수하고 있다. 이에 대해서는 나중에 Python-XML 책들을 자세하게 검토해 볼 생각이다.

초보자에게는 쿠클링(Andrew Kuchling)의 Python/XML HOWTO가 훌륭한 시작 문서가 되어 줄 것이다. Python-XML 처리에 관한 알렉산더 페이욜(Alexandre Fayolles)의 EuroPython 2002 튜토리얼 온-라인 슬라이드도 역시 유용한 시작 문서이다. 『Python Cookbook』에서는 XML에 관련된 상당수의 비법이 소개된다. 필자는 XML을 파이썬으로 처리하는 법에 관한 비법, 팁과 포인터의 모음집을 유지보수하고 있다. 거기에 가면 다른 많은 온-라인 자원들을 찾을 수 있을 것이다. XML 동호회가 위키(Wiki) 를 운영하고 있지만, 아직 그렇게 내용이 풍부하지는 않다.


Python & XML

참고 도서

Python & XML
Fred L. Drake, Jr. / Christopher A. Jones




파이썬과 XML 소프트웨어

아래 표에서는 현재 구할 수 있는 Python-XML 소프트웨어를 나열하고 있다. 개인적으로 필자는 이것들이 중요하다고 평가한다. 이 표는 XML과 관련된 파이썬으로 작성된 소프트웨어 목록들을 일일이 나열한 것은 아니다. 예를 들어 pyglade가 빠져 있는데 이 소프트웨어는 유닉스를 위한 GNOME 데스크탑 사용자 인터페이스를 만드는데 사용된다. 해당 사용자 인터페이스 규격은 XML 형태이지만, 이 정도로는 실제로 파이썬을 위한 XML 처리 도구라고 부르기에는 부족하다. 그렇지만 pyglade 규격을 편리하게 조작하는데 내가 언급할 도구들을 사용해도 좋다. 소프트웨어를 선별하는 일반적 규칙은 다음과 같이 정했다. "그 소프트웨어가 테크놀로지나 테크놀로지 모둠을 XML과 긴밀하게 연관하여 구현하였는가" 그리고 "필자가 처리하고자 하는 XML 파일에도 그 소프트웨어가 쓸모 있게 구현되었는가"이다.

XML 테크놀로지의 영역에 맞추어서 표를 만들었다. 이 표를 사용하여 파이썬 초보자는 파이썬으로 XML 테크놀로지를 신속하게 한번 훑어볼 수 있을 것이다. 그리고 이 표는 간편가이드로 기여하여 필요한 구체적 XML 처리방법에 접근하기 위하여 가야 할 곳을 가리켜 줄 것이다. 나열된 각 프로젝트를 최근의 가시적인 활동을 반영하여 그 활동력을 "미약(weak)", "견실(steady)" 또는 "왕성(strong)"으로 평가하였다. 메일링 리스트의 정보 교환량, 배포횟수, 관련 글들, 그 프로젝트를 사용하는 다른 프로젝트의 개수 등등을 반영하였다. 종종 필자는 다른 프로젝트들이 견실하거나 왕성한 활동력을 보이는 영역에서 활동력이 약하다고 판단되는 진입점들을 생략할 것이다.

파이썬 용 XML 처리 소프트웨어
이름 설명 생명력
XML 파싱
PyLTXML

PyLTXML은 LTXML 파서를 포장한 파이썬 확장이다. DTD 유효성검사를 지원한다.

견실
cDomlette

cDomlette은 4Suite의 일부이다. 고속의 C-기반 DOM 구현으로 파이썬 API를 구비하고 있으며, expat 파서의 포장자를 포함한다. DTD 유효성검사를 지원한다. 또한 XIncludeXML Base를 지원한다.

왕성
libxml/python

이 파이썬 확장 모듈은 libxml에 대한 포장자이다. DTD 유효성검사를 지원한다.

왕성
pyRXP

pyRXP는 RXP XML 파서를 포장한 파이썬 확장이다. DTD 유효성검사를 지원한다.

견실
pyexpat

Pyexpat는 PyXML의 일부이며 expat 파서의 포장자이다. DTD 유효성검사를 지원한다.

왕성
qp_xml

qp_xml은 PyXML의 일부이다. 전적으로 파이썬으로 작성된 간단한 파서이며 유효성검사는 지원하지 않는다.

견실
xmlproc

xmlproc는 PyXML의 일부이다. 전적으로 파이썬으로 작성되었다. DTD 유효성검사를 지원하며 해석된 DTD 구조에 접근하는데 필요한 API를 제공한다.

견실
XPath, XSLT 그리고 XPointer
4XSLT

4XSLT는 4Suite의 일부이며, 4XPath와 4XPointer도 마찬가지다. 4XSLT는 EXSLT를 상당부분 지원한다.

왕성
Pyana

Pyana는 Xalan XSLT 엔진을 포장한 파이썬 확장 모듈이다.

왕성
libxslt/Python

이 파이썬 확장 모듈은 libxslt를 위한 포장자이다. EXSLT를 상당부분 지원한다.

왕성
스키마 언어들 (DTD 제외)

XSV

XSV는 W3C XML Schema (WXS)의 구현이다. 사실 첫 번째 WXS 구현이며, W3C의 온-라인 유효성검사기를 구동한다.

견실
XVIF

XVIF는 RELAX NG를 구현하며, XML 처리 파이프라이닝을 위한 XML 유효성검사 상호운용 프레임워크(XML Validation Interoperability Framework)로 개선되었다. XML Regular Fragmentations이 포함되어 있다. 4Suite에는 실험적으로 RELAX NG 그리고 XVIF가 통합되어 있다.

견실
프로토콜(Protocols)
파이썬 웹 서비스(Python Web Services)

이것은 SOAP용 파이썬 모듈의 집단이다. WSDL 그리고 관련 테크놀러지가 있다.

견실
WDDX/Python

PyXML에는 파이썬용으로 WDDX 모듈이 따라온다.

wsdl4py

wsdl4py는 WSDL 처리를 위한 간단한 파이썬 라이브러리이다. uddi4py도 참조하라.

견실
xmlrpclib

파이썬 버전 2.1에서부터 XML-RPC 클라이언트 모듈과 서버 모듈이 함께 배포된다.

왕성
RDF 그리고 Topic Maps
4RDF

4RDF는 4Suite의 일부이다. 여기에는 RDF/XML 그리고 NTriples 파서, RDF 저장 시스템, 파이썬 삼중 API와 Versa 질의 언어의 구현이 포함되어 있다.

왕성
Redfoot 그리고 RDFLib

Redfoot은 파이썬으로 작성된 RDF 서버이다. RDFLib는 삼중 저장(triple store, 데이터가 주어(subject), 술어(predicate), 목적어(object)의 형태로 서로 관련되어 저장된) 컴포넌트와 RDF/XML 파서 컴포넌트이다.

왕성
Redland/Python

이것은 Redland RDF 어플리케이션 작업틀을 위한 파이썬 인터페이스이다.

왕성
tmproc

tmproc는 XML Topic Maps의 파이썬 구현이며, ISO/IEC 13250 Topic Maps에 기반한다.

왕성
DOM
4DOM

4DOM은 PyXML의 일부이다. W3C DOM Level 2를 광범위하게 구현한다.

견실
cDomlette

"XML 파싱" 섹션 참조

왕성
minidom

파이썬 버전 2.0에서부터 함께 minidom 모듈이 배포된다. Minidom은 가벼운 DOM 구현으로 더욱 파이썬적이다. DOM Level 2의 일반적인 노선을 따른다.

왕성
pulldom

파이썬 버전 2.0에서부터 pulldom 모듈이 함께 배포된다. Pulldom은 요구된 XML 문서의 일부만을 적재하는 특수한 DOM-류의 구현이다.

왕성
기타

4XLink

4XLink는 4Suite의 일부이다. XLink 부분을 구현한다.

미약
4XUpdate

4XUpdate는 4Suite의 일부이다. XUpdate의 파이썬 구현이다. XMLDiff에 의해서 생성된 서로다른 패치들을 적용하는데 사용될 수 있다.

왕성
Pyxie

Pyxie는 줄-지향의 XML 처리기이다.

미약
XIST

XIST는 "객체 지향적 XSLT"인데, 쉽게 확장 가능한 DOM-류의 소스 보기와 XML 문서의 트리 변형에 목표를 두고 있다.

왕성
XMLTools

XMLTools는 그래픽적인 XML 트리 뷰어와 GTK 윈도우 라이브러리를 위한 편집기가 포함되어 있는 작은 도구 모음집이다.

왕성
XMLdiff

XMLdiff는 두개의 XML 파일이나 DOM 트리에서 둘 사이의 큰 차이점들을 알아 내는 파이썬 도구이다. XUpdate 출력을 만들어 낼 수 있다.

왕성
c14n.py

c14n.py는 PyXML의 일부이다. XML 표준화(canonicalization)를 구현한다.

왕성
xml.sax

파이썬 버전 2.0에서부터 SAX 모듈이 함께 번들된다.

왕성
xmlarch

xmlarch는 SAX를 사용하여, 파이썬으로 작성된 XML 아키텍처 형태(XML architectural forms) 처리기이다.

미약

XML 문서에 대하여 특화된 기능을 보유하고 있는 데이터 저장방법이나 네트워크 서비스를 위한 파이썬 프로젝트도 많이 있다. 여기에는 Maki, Zope, 4Suite repository, XDisect가 포함된다. 위의 표에서 이런 것들을 나열하지 않은 이유는 과연 이러한 것들이 XML 도구인가 아닌가 하는 문제가 너무 주관적이기 때문이다. 앞으로 필자는 XML 처리능력을 지닌 파이썬 서버 프레임워크에 대한 기사를 쓸 생각이다.

아마도 여기 저기에서 몇몇 진입점들을 놓쳤을 것이다. 빠진 것이 있다면 한빛미디어 분야별 C/C++/기타 게시판에 게시하여 주기 바란다. 그리고 파이썬과 XML의 새로운 유익한 점들을 알아 낸 사람들은 반드시 파이썬 XML 동호회 메일링 리스트에 선언을 게시하여 주기 바란다. 이것이 다른 많은 사람들과 함께 여러분의 작업상태를 알 수 있는 가장 좋은 방법이다. 필자는 새로나온 소프트웨어와 업데이트 소식에 대해서도 주기적으로 언급할 생각이다.

결전을 앞두고

이 포인터들로 여러분이 파이썬과 XML 세계로 훌륭한 출발을 할 수 있기를 바란다. 다음 기사에서는 PyXML 패키지를 가지고 파이썬 핵심에 추가된 많은 기능들을 탐험해 보겠다.

TAG :
댓글 입력
자료실