XML Parser 순천향대학교 정보기술공학부 이상정
XML Parser 개요 XML Parser Non-Validating Parser Validating Parser Application XML Parser XML 문서 XML Parser XML 문서가 XML의 규칙 및 제약을 따르는 지를 검사 Application에게 XML 문서의 데이터 또는 자료구조를 제공 Non-Validating Parser 문서의 Well-formedness 만을 체크한다. Validating Parser 문서를 DTD의 구조에 맞는 지 검증한다. 순천향대학교 정보기술공학부 이 상 정 2
Non-Validating Parser XML Parser 툴 Non-Validating Parser Validating Parser XP (James Clark) Sun “Java Project X” TR-2 Oracle XML Parser IBM XML4j MSXML Apache Xerces 각 파서마다 다른 API를 사용하면 개발자들은 다른 파서를 사용할 때마다 그 API를 익혀야 하는 혼란이 발생 표준 API(SAX, DOM)를 제정하고 파서들이 지원하게 됨 순천향대학교 정보기술공학부 이 상 정 3
SAX (Simple API for XML) 자료구조를 만들지 않고 XML 문서를 스캔해 가면서 순차적으로 이벤트를 발생시켜서 XML 문서에 접근할 수 있게 해 주는 API DOM이 W3C의 표준인데 반해 SAX는 공식적인 표준은 아니지만 업계에서 많이 사용됨 현재 SAX 2.0이 최신 버전 http://www.megginson.com/ 장점 입력 파일의 크기에 구애 받지 않고 파싱할 수 있다. 자신의 데이터 구조를 만들기 원할 때 유용하다. 정보의 작은 부분만 원할 때 유용하다. 단순하고 속도가 빠르다. 단점 문서의 구조 정보에 대해 파악할 수 없다. 문서를 생성시키거나 편집하는데 사용할 수 없다. 순천향대학교 정보기술공학부 이 상 정 4
DOM (Document Object Model) XML 문서를 트리 구조의 형태로 access할 수 있게 해 주는 API DOM을 사용해서 XML 문서를 파싱하면 그 XML 문서의 논리적인 구조에 따라 트리 형태의 자료 구조가 만들어지고 DOM API는 트리에 접근할 수 있는 API들을 제공한다. 다양한 Language Binding: Java, JavaScript, ActiveX 현재 DOM Level 2가 W3C의 Recommendation임 http://www.w3.org/DOM/ 장점 문서의 구조에 대한 풍부한 표현력 XML 문서를 생성 및 조작할 수 있다. 단점 메모리 사용량이 많다. 속도가 느리다. 순천향대학교 정보기술공학부 이 상 정 5
Apache XML Parser - Xercex XML parsers in Java, C++ with Perl and COM(MS Common Object Model) bindings Fully-validating parsers W3C XML and DOM (Level 1 and 2) standards SAX (version 2) standard http://xml.apache.org/ 순천향대학교 정보기술공학부 이 상 정 6
Xerces-C++ 아파치 프로젝트의 C++ XML 파서 Unix,Windows 용 소스, 바이너리 제공 Win32 binary Command Line에서 실행 Bin\Domprint.exe 예제로 VoiceXML문서의 유효성 검사 VoiceXML문서도 XML의 서브셋이기 때문에 동일한 XML파서를 사용 테스트 순천향대학교 정보기술공학부 이 상 정 7
VoiceXML 예제 <?xml version="1.0" encoding="ksc5601"?> <!DOCTYPE vxml PUBLIC "-//Voicexml 1.0//EN" "http://www.voicexml.org/voicexml1-0.dtd"> <vxml version="1.0"> <menu> <prompt>원하시는 서비스를 선택하세요. 1번은 음성사서함관리 2번은 사용자정보관리 3번은 뉴스정보 입니다. </prompt> <choice dtmf="1" next="http://vservice.sch.ac.kr/userservice/voice.vxml"/> <choice dtmf="2" next="http://vservice.sch.ac.kr/userservice/userinfo.vxml"/> <choice dtmf="3" next="http://vservice.sch.ac.kr/userservice/news.vxml"/> <noinput>입력 시간이 지났습니다. 다시한번 입력해 주세요</noinput> <nomatch>잘못 입력하셨습니다. 다시 입력해 주세요.</nomatch> </menu></vxml> 순천향대학교 정보기술공학부 이 상 정 8
예제의 대화의 예 -> 사용자 접속 컴퓨터> 원하시는 서비스를 선택하세요. 1번은 음성사서함관리 2번은 사용자정보관리 3번은 뉴스정보 입니다. ->사용자는 DTMF를 이용하여 입력 사용자> (4번을 누름) 컴퓨터> 잘못 입력하셨습니다. 다시 입력해 주세요. 사용자> (3번을 누름) -> 3번에 해당하는 http://vservice.sch.ac.kr/userservice/news.vxml를 가져와서 계속 다이얼로그 진행 순천향대학교 정보기술공학부 이 상 정 9
DOMPrint 이용한 검사 순천향대학교 정보기술공학부 이 상 정 10