이벤트 중심 XML API인 Simple API for XML (SAX)은 XML이 파서에서 특화된 핸들러 코드로 전달될 때 이벤트 스트림을 정의한다. SAX가 어떻게 만들어졌는지, XML을 처리하는데 가장 효율적이면서도 어려운지 그 이유를 알아보자.
Simple API for XML (SAX) [community specification]는 이벤트 중심 API이다. XML 마크업의 다른 부분들(시작과 끝 태그, 텍스트, 엔터티)에서 실행된 특정 이벤트용 핸들러 코드를 등록한다. 이 파서는 인풋 XML에 기반하여 이러한 이벤트들의 스트림을 보내면, 핸들러 코드는 이를 처리한다.
SAX는 XML-DEV mailing list에서 1997년 후반, 만들어졌고, XML 전문가라면 거쳐가야 할 필수 코스라 할 수 있다. 대기업 또는 표준 기구의 후원도 없었으나, David Megginson이 이것을 이끌었고, 결국 가장 성공적인 XML 이니셔티브 중 하나가 되었다. SAX 이전에, 각 파서는 XML 구조와 핸들러 코드가 통신할 수 있는 고유의 API를 사용했고, SAX는 이를 통합했다. 일반적으로, 파서는 저급 파서 이벤트를 SAX 표준 이벤트로 변환하는 SAX 드라이버를 제공하고, 이식 가능한 코드에도 적용된다. SAX는 자바™ 언어를 염두 해 두고 개발되었지만, 다양한 언어와 환경에도 대중적으로 사용되고 있다. 가끔은 자바 중심적 특성으로 인해 포팅이 복잡해 질 때가 있다. SAX는 현재 2기에 해당하고, XML 네임스페이스 프로세싱과 문서 구조와 관련된 특정 이벤트의 선택적 리포팅이 포함된다.
대부분의 언어에서는, 이벤트 중심 인터페이스들은 주로 콜백(callback) 함수, GUI 프로그래밍 스타일을 사용하여 구현된다. 객체 지향 언어에서, 콜백은 객체용 메소드로 등록되고, 다형성을 사용하여 메소드 이름과 핸들러 코드를 매치 시키고, 캡슐화를 사용하여 콜백들 간 핸들러의 상태를 관리한다. 이벤트 기반 프로그래밍의 전체적인 모델은 푸쉬(push) 모델로 알려 있으며 많은 프로그래머들이 마스터링 하기에 까다롭다고 정평이 나있다. 프로그래밍이 쉬운 것으로 간주된 대부분의 모델들은 문서로의 랜덤 액세스가 필요하고 이는 비효율적이기 때문에 SAX가 XML을 처리하는데 가장 효율적인 표준 방식으로 인정받고 있는 것이다.
-
Understanding SAX 튜토리얼: Nicholas Chase (developerWorks, 2003년 7월).
- Benoit Marchal의 SAX, the
power API: XML API의 개념, SAX를 설명하고, Document Object Model (DOM)과 SAX를 비교한다. (developerWorks, 2001년 8월).
- C++ 개발자라면 The Joy of
SAX: a Visual Basic Sample (Martin Naughton - MSDN, 2000년 6월)을 읽어보기 바란다.
- Perl 프로그래머를 위한 Using
Perl with XML (Part 1).
- 기타 XML 표준들: XML 표준 (한글).
- XML 관련 포럼 참여하기: XML 존 토론 포럼.
- developerWorks 커뮤니티: developerWorks 블로그
-
IBM XML 인증: XML 부분 IBM 인증 개발자가 되는 방법.
-
XML 기술 자료: 기술자료, 팁, 튜토리얼, 표준, IBM 레드북.
-
developerWorks 기술 이벤트와 웹캐스트.
- 소프트웨어 다운로드 (한국 developerWorks): IBM 시험판 소프트웨어