한국산학기술학회논문지 Vol. 11, No. 11 pp. 4583-4591, 2010 동적편집과포맷팅기능을갖는 XML 기반의가변데이터출판시스템 임광택 1* 1 호원대학교컴퓨터게임학부 XML-based Variable Data Publishing System with Dynamic Editing and Formatting Function Kwang-Taeg Lim 1 1 Division of Computer & Game, Howon University 요약사용자가직접템플릿규칙을코딩하고편집해야하는기존의 XML 기반가변데이터출판환경은일반사용자에게문서제작에많은부담을주고어려움을갖게한다. 또한매뉴얼이나기술문서와같은대용량의가변 XML 문서처리시편집을위한빠른응답속도를제공하기위하여신속한포맷팅이제공되어야하지만기존의일괄적인처리방식으로는해결하기어렵다. 본논문에서는템플릿기반의가변문서의처리결과를 WYSIWYG 화면상에표시하여대화식방식을통해템플릿을편집할수있도록하며대용량문서에대해서도사용자의요청에따라신속하게포맷팅하는, 동적편집과포맷팅방식의기능을갖는가변데이터출판시스템을제안한다. 제안된시스템은개인이나기업또는지역등과같이개별적인특성에따라변동되는다량의가변데이터를가지는맞춤형문서제작을위해효과적으로사용될수있으며, 입력문서와템플릿문서, 포맷된결과문서는모두 W3C에서제안하는 XML, XSLT, XPath의표준을수용함으로써웹문서처리시스템으로도쉽게확장될수있도록하였다. Abstract Existing XML-based variable data publishing, in which a user has to manually prepare and edit template rules, is rather difficult for general users to create documents. Especially when processing large variable XML documents such as manuals or technical documents, fast document formatting is required to provide fast response speed for editing, which the existing batch processing cannot provide. This paper proposes a variable data publishing system with dynamic editing and formatting function, which support fast formatting upon user's request for large volume documents as well as for template editing through interaction by displaying the result of template-based variable documents on WYSIWYG screen. Proposed system can be effectively used for creating customized documents with many variable data that can be changed according to individual characteristics such as individual, company or area; source documents, template documents and formatted documents adopt XML, XSLT and XPath standards suggested by W3C, which facilitates extension to web document processing system. Key Words : XML, XSLT, Document Template, Dynamic Formatting, Electronic Publishing 1. 서론 최근디지털인쇄및문서처리기술의발전에따라온라인 / 오프라인에서맞춤형문서의제작과인쇄, 주문등의기능을편리하게이용할수있는자동화된출판에대 한관심이고조되고있다 [1]. 특히개인및기업, 지역, 학교등과같이개별적인특성으로인하여수시로변동되거나다른상태값을가지는가변데이터출판 (Variable Data Publishing) 에대한요구가급증하고있다. 이러한출판방식은기존의레이아웃기반의 WYSIWYG 전자 본논문은 2010 년호원대학교교내학술연구비지원에의하여연구되었음. * 교신저자 : 임광택 (ktlim@howon.ac.kr) 접수일 10 년 10 월 15 일수정일 10 년 10 월 25 일게재확정일 10 년 11 월 19 일 4583
한국산학기술학회논문지제 11 권제 11 호, 2010 출판방식과는다르게내용기반의출판을가능하게하는새로운전자출판분야로주목받고있다. 가변데이터출판은문서내용에대한재활용성을중요시하므로내용과스타일, 레이아웃을분리하여처리하는것이일반적이다 [2,3]. 이를위해현재대부분의가변문서처리시스템은템플릿 (template) 을기반으로문서내용을처리하는방식을채택하고있다. 그러나이러한규칙기반의템플릿처리방식은장점과단점을가지고있다. 템플릿은가변문서에적용하여일괄적으로빠르게처리할수있는장점이있지만, 반면에프로그램적인방식으로편집되기때문에최종결과를즉시알기가어렵고템플릿규칙에대한상당한지식이요구된다. 따라서템플릿의작성및편집작업은전문가로국한되며, 문서의양이많거나편집이자주일어나는경우에는매우비효율적이다. 현재이러한문제를개선하고해결하기위한가변데이터출판에관한저작도구및처리방식에관한다양한연구가진행되고있다. 이에본논문에서는이러한문제를해결하기위하여동적편집과포맷팅처리방식을갖는가변데이터출판시스템을제안한다. 동적편집방식이란기존의가변문서처리환경과는다르게 WYSIWYG 화면상에서대화형다이얼로그등을통해소스문서와템플릿을수정하고그결과를확인할수있는편집환경을의미한다. 동적포맷팅은사용자의요청에따라선택된페이지별로신속하게포맷팅처리하여편집응답속도를제공하는포맷팅방식이다. 제안된시스템은 XML 기반의표준언어를이용하여입력문서, 템플릿, 포맷된문서를정의하고처리하도록구현되어졌으며, 웹기반의문서처리시스템으로도쉽게확장될수있는구조를갖는다. 2. 관련연구 2.1 가변데이터문서처리의개요 가변문서를처리하는시스템은그림 1과같이크게세가지로구분되는구성요소를가진다. 즉, 문서편집부, 레이아웃처리부, 문서출력부로구성된다. 문서편집부에서는데이터베이스또는저장장치로부터가변데이터를추출하여소스문서를구성하며, 또한소스문서의구조를변환하고레이아웃을처리하기위한템플릿 (template) 문서를작성한다. 그리고이러한입력문서는템플릿을적용하여결과트리로변환하는처리과정을거친다. 레이아웃처리부에서는텍스트, 이미지등의레이아웃처리를수행하여최종결과문서를생성한다. 이과정에서생 성된포맷된문서는다음단계인문서출력부로전달되어브라우저등화면에표시되거나프린터출력을위한포맷형식으로변환되어진다. [ 그림 1] 가변데이터문서처리시스템 2.2 XML 출판관련기술가변데이터문서의장점은논리적구조만으로구성된가변데이터들에레이아웃및스타일을적용하여다양한출력형식의결과를얻는것이다. XML은이러한접근방법을가장잘수용하고있는표준마크업언어중의하나이며, 출판을위한관련표준들을제시하고있다. XML은문서의내용과표현을분리하고있다. 따라서 XML 문서는데이터의구조와의미에관한정보만을기술한다. XML에서문서의레이아웃에대한실질적인표현은 XSL (extensible Stylesheet Language) 등과같은스타일시트언어를사용한다. XSL은 XSLT, XPath, XSL-FO 세가지표준으로구성되어있다. XSLT[4] 는 XML 문서를다른형태의문서로변환하거나재구성하기위한 XML 기반의변환언어이다. XSLT 스타일시트는 XML 문서를변환하기위한템플릿규칙들로구성되며, XSLT 처리기를통해처리되어결과문서를생성한다. XPath[5] 는 XML 문서의구조에접근하기위한언어이다. 문서구조의노드를찾기위해패턴식 (pattern expression) 을사용하며, 데이터타입과연산자, 함수등을함께사용하여패턴식을만들수있다. XSL-FO [6] 는 XML의논리적요소에포맷팅객체를지정하여다양한매체에적용되는출력결과를생성할수있도록하는스타일언어이다. 이를통해문서를재구성하거나여과 (filter) 하여책, 신문, 잡지등과같은복잡한레이아웃문서를생성할수있다. 4584
동적편집과포맷팅기능을갖는 XML 기반의가변데이터출판시스템 2.3 전자출판시스템의특성분석문서처리방식은일괄처리방식과대화형처리방식으로구분할수있으며, 처리방식에있어각각장단점을가진다. 일괄처리방식은편집과정이불편한반면, 대량의문서를정해진규칙에따라빠르게처리하여결과를생성할수있는장점을가진다. 그에비해서 WYSIWYG 방식은최종결과의화면위에서편집할수있는장점이있지만편집을위한내부의많은상태정보와포맷된결과를가지게되므로대량의문서를처리할경우시스템성능이저하되는주요요인이된다. 또한문서내용과스타일정보, 레이아웃정보들이문서에강하게연결되어있기때문에다른크기를갖는매체로문서를재배치 (reflow) 하는것이매우어렵게된다. 2.4 가변데이터시스템의분석가변데이터문서를위한문서포맷, 고속인쇄, 구현기술에대한여러가지연구및개발이진행되어왔다. UCancode[7] 는카피홀모델에서데이터베이스필드를연결하여가변문서를인쇄할수있도록페이지기반의편집기능을제공하고있다. Quint[8] 는 Amaya 편집기내에서 XML 문서의구조화된편집방법에대해서연구를수행하였고, 결과문서에서특정엘리먼트에대한어떠한스타일이변경되었는지를알기위해 CSS 스트일시트를분석하여처리하는편집방법을제시하였다. Villard[9] 는실행상태의정보와연관된패턴을가지고소스또는변환된것으로부터변경될필요가있는출력부분만재계산하도록하는점진적 XSLT 처리방식을제안하였다. 이와유사한연구로명령단위가아닌엔티티와결과문서의파일단위로재실행해서크기가큰대량의 XSLT 문서를점진적인방법으로처리하는연구가이루어졌다 [10]. 또한 XML 문서의저장및검색을위한관련연구가진행되어왔다. DBMS 종류와플랫폼에독립적인 XML 문서의변경탐지기능을갖는통합리파지토리시스템이제안되었고 [11], 구조기반인덱싱모델을통해 XML 문서의효율적인구조검색을위한연구가이루어졌다 [12]. 이외에도 HP Exstream, Pageflex와같은상용화된제품에서는서버기반의맞춤형출판방식과웹기반의온라인템플릿편집과자동화된출판방식에대한연구가이루어져왔다. 3. 가변데이터출판시스템설계 3.1 시스템의전체구성 본논문에서제안한가변데이터출판시스템은크게 XSLT/XPath 처리기, 템플릿및스타일관리자, 포맷터, 포맷팅관리자, UI 관리자, 렌더러, 출력변환기로구성되어있다. 그림 2는시스템을구성하는각요소와실제가변문서처리를위한요소들간의상호관계및전체흐름을보여주고있다. XML 문서와템플릿, 레이아웃정보는 XSLT 프로세서를통해 FO(Fomatting Object) 문서로변환된다. 포맷터는 FO 문서를처리하여포맷된문서와포맷팅환경정보를생성한다. 포맷된최종결과는렌더러를통해화면에표시되거나, 출력변환기를통해 PDF, HTML 등과같은출력파일로생성되어진다. 포맷팅환경정보는동적포맷팅을위해포맷팅관리자로전달된다. UI 관리자는사용자상호작용을제어하며포맷터와템플릿, 스타일관리자를호출하는기능을담당한다. 템플릿과레이아웃관리자는화면에표시된결과문서위에서템플릿과레이아웃을수정할수있도록대화형편집다이어로그등의사용자인터페이스기능을제공한다. [ 그림 2] 전체시스템구성도 3.2 동적편집기 3.2.1 편집문서의구성과처리본논문에서가변데이터문서는크게 XML 데이터, 템플릿, 스타일정보세개의파일로구성된다. 즉, 편집을위한문서는데이터, 구조, 표현으로분리하여관리한다. 이러한가변문서의구조는확장성과융통성에서많은장점을제공하며, 특히동적편집을위한데이터관리와매핑을위한처리에서많은유용함을준다. 가변데이터는 XML 편집도구또는 DB로부터추출되어 XML 문서로구성된다. 내장된 XML 파서는 XML 문서를파싱하여문서의유효성을검증하고 DOM 객체트리를생성한다. 이객체트리는템플릿의노드를지정하기 4585
한국산학기술학회논문지제 11 권제 11 호, 2010 위한 XPath 식을만들기위해서템플릿관리자에서이용된다. 템플릿과스타일파일은 XSLT와 XPath 언어를사용하여표현되며, XSLT 프로세서를통해처리된다. 템플릿은크게두부분으로구성된다. 한부분은 XML 문서의노드를지정하는경로식이며, 다른부분은결과트리로변환될규칙들로구성된다. 이를위해사용자가직접규칙을입력하는방식이아닌대화형편집기능을갖는템플릿관리자를제공한다. 스타일파일은문서의레이아웃을지정하기위한페이지, 블록, 인라인, 테이블, 리스트, 이미지등과같은클래스로분류되며각각에대한포맷팅객체속성으로구성된다. XML 데이터와템플릿, 스타일파일은다음처리단계인포맷터의입력으로사용하기위해 XSLT 프로세서를통해결과문서즉, FO 객체트리로변환된다. FO 객체트리는입력문서를템플릿과스타일속성을적용하여재구성되는 XML 문서이다. 입력문서가 FO 객체트리로변환된후이두개의문서사이에는연관관계를갖지않지않으므로, FO 객체트리를통해서입력문서를만드는역변환은불가능하다. 하지만 FO 객체트리를생성할때어느템플릿을통해서생성되어졌는지원인에대한소스위치를제공할수있다. 이를통해동적편집을위한역추적이가능하며템플릿관리자와스타일관리자를통해해당속성을변경할수있다. 3.2.2 역추적을위한매핑정보앞서기술한데로템플릿을통해변환된 FO 객체트리는입력문서와연관성을갖지않으므로, 동적편집을위해서는매핑정보를가질필요가있다. 이매핑정보는실제로포맷된최종결과문서위에서사용자상호작용에따라선택된텍스트또는이미지, 그룹및플로우속성등을변경하기위해서사용된다. 이와같은동적편집을위해서다음두가지의전제조건에대한해결이필요하다. 하나는소스템플릿문서의어느부분에서편집이일어나는지정확한위치를알아야하고, 다른하나는결과엘리먼트에대해어떠한편집속성이적용되는지를식별할수있어야한다. 이를해결하기위해서는결과문서의각엘리먼트들은소스템플릿에대한위치정보와편집속성에대한정보를가지고있어야한다. 본시스템에서는변환과포맷팅의각처리단계에서이들정보를전달하는구조로설계하였다. 그림 3은매핑을위한처리과정을나타내고있다. [ 그림 3] 매핑을위한처리과정소스문서의위치는문서파싱단계에서생성된 DOM 트리객체로부터만들어지는노드의깊이정보이며, 템플릿노드의위치는템플릿관리자를통해서사용자가각템플릿에부여하는이름정보이고, 스타일이름은템플릿관리자에서템플릿규칙을만들때적용하는스타일에대한이름정보를나타낸다. 3.2.3 템플릿문서구조템플릿관리자의주요기능은 XSLT 형식의 template 구조를만드는것이다. XSLT의 template을만들기위해대화형다이얼로그인터페이스기능이제공되며, 패턴식뿐만아니라페이지레이아웃, 스타일정보들을 template 에연결하는기능을갖는다. 전형적인 XSLT template은다음과같이매치패턴과규칙으로구성된다. <xsl:template match="pattern"> [template 규칙 ] </xsl:template> 본시스템에서는동적편집을위한매핑정보를삽입하기위하여 template 노드의구조를그림 4와같이확장하였다. <xsl:template match="pattern" vdp:name="" vdp:class="" vdp:style=""> <vdp:element vdp:name=""> <xsl:apply-templates [select=""]/> </vdp:element> </xsl:template> [ 그림 4] 템플릿문서구조 XML 표준에서사용하는이름공간과의충돌을피하기위하여 vdp라는이름공간을사용한다. name 속성은템플릿자체의유일한이름을나타낸다. class 속성은포맷터객체트리에서사용되는클래스유형을나타내며, 6가지 4586
동적편집과포맷팅기능을갖는 XML 기반의가변데이터출판시스템 유형을제공한다. 즉, inline, block, image, list, table, link 클래스유형을갖는다. style 속성은 template에적용되는스타일속성이름을나타낸다. vdp:element는 FO 객체트리에생성되는클래스유형을나타내는엘리먼트이름이다. xsl:apply-templates은패턴과일치하는입력문서의노드들을재귀적으로처리하기위한 XSLT 명령이다. 3.2.4 스타일문서구조스타일정보는포맷팅속성을표현하는선언적마크업구조를가진다. 표 1에시스템에서사용되는스타일속성들을분류하여표시하였다. 스타일정보는포맷팅객체의클래스유형에따라다르게적용된다. 예를들어, inline 과 block 객체는 Font, Tab 그룹이적용되지만, image 객체에는적용되지않는다. 이를위해스타일관리자는포맷팅객체의유형에따라포맷팅속성에대한사용자다이얼로그를다르게표시한다. [ 표 1] 스타일정보의분류그룹속성 Font name, size, color, weight, style Alignment left, right, center, justify indent, margin:left,right word space, Horz. char. space Vert. line space, para space:top, bottom Break. page, column, widow, orphan bullet, number counter, number style, AutoNum position Tab. position, alginment, leader Border color, width, style horz./vert. writing, dropped capital, Misc. padding 스타일정보는템플릿문서구조에포함하지않고독립적인형태즉, 파일로관리된다. 스타일을템플릿과분리하면포맷팅속성을파싱하고편집을위한매핑처리가수월한장점을가진다. 또한 WYSIWYG 방식의시스템과같이포맷팅속성을다이얼로그형태로제공하기위한처리가간편해지며, 시스템에서정의한스타일구조를 CSS2와같은표준스타일시트로쉽게변환할수있게한다. 3.3 동적포맷터 3.3.1 처리모델 본논문에서제안한동적포맷팅의기본처리방식은사용자의선택에따라점진적으로포맷팅을수행하는것이다. WYSIWYG 화면에서사용자가특정페이지를선택하면, 해당페이지를기준으로선행하는페이지를조사하여가장최근까지변화되지않은페이지이후부터포맷팅을수행한다. 그림 5는동적포맷팅방식의처리모델을나타내고있다. [ 그림 5] 동적포맷팅방식의처리모델동적포맷팅의가장핵심적인부분은페이지환경정보이다. 페이지환경정보는페이지마다의의존성을추적할수있도록포맷터가저장하는상태정보이다. 문서를처음으로포맷팅하는경우페이지환경정보는없으나, 이후포맷팅을할때마다해당페이지에대한페이지환경정보가자동으로저장된다. 사용자가특정페이지를선택하면 UI 관리자를통해포맷팅관리자에게포맷팅에대한요청이이뤄지고, 포맷팅관리자는페이지환경정보로부터유효한페이지인지를검사한다. 여기서유효한페이지란포맷처리를행한페이지중문서레이아웃이변경되지않은페이지를의미한다. 해당페이지가유효한페이지이면포맷팅을하지않는다. 만약유효한페이지가아니면포맷팅환경정보를토대로해당페이지에대한포맷팅을수행하게된다. 이때포맷팅을위한노드의시작위치는페이지환경정보로부터추출되어그위치로부터포맷팅을수행한다. 동적포맷터는이와같이페이지의의존성에따라포맷팅의여부를결정할수있고, 재처리에따른계산비용을크게줄일수있다. 3.3.2 페이지환경정보페이지환경정보는크게정적변수, 동적변수로구분할수있다. 정적변수는페이지포맷팅을하기전에초기화에사용되고포맷팅도중변경되지않는정보들이다. 동적변수는사용자의상호작용으로인해포맷팅도중변경되는정보들이다. 이변수들은해당페이지의포맷팅을위한초기화정보로사용된다. 표 2는페이지환경정보를분류하여적용범위와포맷팅속성을보여주고있다. 4587
한국산학기술학회논문지제 11 권제 11 호, 2010 변수유형적용범위포맷팅속성 ( 그룹 ) 정적변수 문서전체및페이지 동적변수문서전체 동적변수텍스트 [ 표 2] 페이지환경변수의분류 page layout auto numbering, TOC, index, footnote, cross-reference font, alignment, horz./vert. attrib, break, tab, border, writing mode, dropped capital. 또한페이지환경정보는페이지마다의포맷팅의시작위치를알기위해다음과같은정보를가진다. node_position: FO 객체트리의노드위치 text_position: 텍스트의시작위치 node_positon은페이지경계에서마지막으로처리된 FO 객체트리의노드위치이다. 예를들어, inline, block, list와같이포맷팅객체의클래스유형을나타내는노드가이에해당된다. text_position은 node_position 내에있는텍스트로페이지경계에서마지막으로처리된텍스트의위치이다. 이들두정보는다음페이지의포맷팅시작위치를가리키기위해서사용된다. 3.3.3 포맷된문서구조 포맷팅된결과는포맷된문서 (fomatted document) 로저장된다. 포맷된문서는렌더러를통해화면에표시되거나출력변환기를통해 PDF, HTML와같은다른구조의문서포맷으로변환하기위해사용된다. 본시스템에서는그림 6과같은트리구조를갖는포맷된문서를 XML 언어로설계하였다. (rectangular area model) 의개념을사용한다. Page는페이지노드를나타내며, Region은하위요소의전체레이아웃영역을나타내는노드이다. BlockArea 노드는텍스트와이미지의표시영역이며내포되어나타날수있다. BlockArea가내포되는것은템플릿규칙에의해서변환된입력문서의엘리먼트간의종속관계를표현하는것으로최종결과트리에서원본문서에대한매핑하기위한정보로사용되어진다. Word는텍스트의단어정보를나타내며, Iamge는이미지내용을표현하기위한정보이다. 4. 구현및고찰 4.1 구현 본논문에서개발한시스템의구현환경은 Windows Vista 운영체제에서동작하며, 구현언어는 Microsoft Visual C# 3.0을사용하였고, XML 파서및 XSLT 처리기는 Microsoft 사의 COM으로구성된 MSXML을사용하였다. 4.1.1 템플릿관리자구현사용자다이얼로그를통해 template 규칙을작성하고편집하는템플릿관리자를구현하였다. 템플릿관리자의중요한부분은각각의템플릿과포맷된문서사이에매핑정보를유지하도록하는것이다. 이를위해그림 7과같은템플릿관리테이블구조를이용하였다. [ 그림 7] 템플릿관리를위한데이터구조 [ 그림 6] 포맷된문서트리구조 포맷된문서의각노드정보는사각형영역모델 템플릿관리테이블에서각행은하나의 <xsl:templeate> 엘리먼트에대한노드정보를나타내며, 이들정보는패턴, 템플릿이름, 스타일이름들로구성된다. 패턴은 <xsl:templeate> 엘리먼트의 pattern 식을나타낸다. 이패턴식은사용자가직접입력하는방식이아닌, 4588
동적편집과포맷팅기능을갖는 XML 기반의가변데이터출판시스템 사용자가소스문서의 DOM 객체트리구조에서노드를선택하고이에따라시스템에서자동으로패턴식을입력하도록구현하였다. 스타일이름은템플릿규칙에적용되는스타일속성정보에대한이름이다. 템플릿각각을식별할수있도록템플릿에유일한이름을지정하는방식을사용하였다. 이러한템플릿이름은변환및포맷팅과정에서포맷팅객체트리와포맷된문서에도전달되어진다. 따라서최종적으로포맷된가변문서의인스턴스에서원본템플릿의정확한위치를찾을수있다. 본논문에서동적편집은이러한템플릿의매핑정보를토대로실현되어진다. 4.1.2 포맷터구현입력문서의변환처리를통해생성된 FO 결과트리 (FOT) 의추상적의미를해석하여실질적인페이지구조로배치하는포맷팅처리기를구현하였다. 또한선택된페이지에따라의존성을추적하여동적으로포맷팅하는기능을갖도록포맷터를구현하였다. 그림 8에구현된포맷터의구조를보인다. 정보등을포맷터의내부자료구조인스택에설정한다. 또한포맷터는페이지의포맷팅시작위치정보를페이지환경정보로부터참조하여스택에설정한다. 이와같은페이지포맷팅을위한초기화과정이마쳐지면포맷터는실질적인페이지레이아웃처리를위한포맷팅과정을수행한다. 즉, 텍스트, 이미지, 테이블등에대한배치작업을처리한다. 페이지경계에서적용되는 inline, block 포맷팅객체의속성은다음페이지에직접적인영향을미치므로동적포맷팅을위한다음페이지의초기환경을구성하는중요한정보가된다. 따라서이러한정보는페이지환경변수에저장된다. 텍스트포맷팅객체는하나의상위객체가여러개의내포된하위객체를포함할수있기때문에포맷팅명령의유효범위를효과적으로관리할필요가있다. 위를위해스택자료구조를사용하였다. 페이지에대한포맷팅과정을마치면포맷터는앞서기술한포맷된문서구조로결과문서를저장한다. 이문서는다음처리단계인문서출력부로넘겨져화면출력을위해사용되거나, 프린터출력을위한포맷으로변환되어진다. 4.1.3 구현결과그림 9는전체시스템의화면구성을보이고있다. 좌측에보이는 XML 문서트리창은 XML 가변데이터문서의구조를표시하고노드의위치를관리하며, 템플릿관리자창은작성되는템플릿들의이름을표시하고템플릿규칙을편집할수있는기능을제공한다. 템플릿을적용하여포맷팅처리결과는화면중앙의출력화면에표시된다. 그리고화면하단에있는편집속성창들은템플릿, 스타일등의편집속성들을표시하고관리하는기능을갖는다. [ 그림 8] 포맷터의구조 포맷터의처리방식을요약하면다음과같다. 템플릿을적용하여생성된 FO 문서는포맷팅처리전단계에서 DOM 트리로구성된다. 이트리는루트로부터탐색되어지며, 각노드단위로토큰과스타일정보를추출하여포맷터의입력으로사용한다. 토큰 (token) 은트리의각노드를구성하는엘리먼트이름으로부터추출되어지며, 스타일정보는템플릿속성으로지정된스타일이름으로스타일관리자로부터포맷팅속성을참조하기위해사용되어진다. 포맷터는페이지레이아웃관리자로부터페이지속성값을참조하여페이지영역, 머리말, 꼬리말, 본문영역 [ 그림 9] 시스템화면구성 4589
한국산학기술학회논문지제 11 권제 11 호, 2010 그림 10은템플릿규칙을설정하는예를보이고있다. 가변데이터의소스위치에대한패턴식은 XML 문서트리창에표시된노드를선택하면자동으로 XPath식이구성되도록하였으며, 추가적으로템플릿에적용될스타일속성, 변환규칙에관한속성들도다이얼로그화면의메뉴를통해서입력되고편집될수있도록하였다. [ 그림 10] 템플릿규칙설정예 4.2 고찰본논문은템플릿기반의가변문서처리결과를 WYSIWYG 화면상에표시하여동적으로편집하고대용량문서에대해서도신속한응답속도를제공하는가변데이터출판시스템의설계및구현에관한것이다. 이를위해 XML, XSLT, XPath와같은 W3C 표준마크업언어들을사용하여가변데이터문서, 템플릿, 스타일정보, 포맷된문서를정의하였고처리되도록하였다. 또한대화형다이얼로그기능을통해템플릿을편집하고포맷팅결과를즉시화면에서확인할수있는기능을제공하도록시스템을구현하였다. 본시스템이갖는장점은첫째, 표준마크업언어를사용함으로써다른가변문서출판시스템과의정보교환과웹기반의출판시스템으로확장이용이하다는점이다. 둘째, 문서의데이터, 구조, 표현을분리하고 XML 기반언어로설계함으로써구조의변경및확장이수월하다는점이다. 미흡한점으로는 XML의표준스타일시트인 XSL-FO 를처리하지못하며, XLink(XML Linking Language) 와 XPointer(XML Pointer Language) 와같은다른기술에대한설계가미흡하다. 또한현재본시스템은결과문서를 HTML, PDF의두가지포맷으로만변환출력할수있으며, 아직개발중이므로실용적인사용을위해서는부가 기능에대한추가적인보완이필요하다. 5. 결론및향후연구과제 최근다변화되는사회에서출판의요구는점점복잡하고다양해지고있다. 기존의레이아웃기반의고품질인쇄 출판이적합한분야도있지만, 개인이나기업등의개별적인특성에따라가변데이터를포함하는문서출판의요구도커져가고있는실정이다. 이에본논문에서는문서편집전문가뿐만아니라일반인도가변데이터문서를쉽게편집할수있도록 WYSIWYG 방식의편집기능을지원하는동적편집과포맷팅방식을설계및구현하였다. 본시스템의장점은 W3C에서제안하는 XML 관련표준들을수용함으로써다른시스템과의정보교환을용이하게하고, 시스템의구조변경및확장이수월하다는장점이있다. 본논문에서제안된시스템은계약서, 보험증권, 명함, 브로셔, 학습보조자료등과같은개별적인특성에따라가변적인데이터를갖는맞춤형문서제작을위한출판에서유용하게사용되리라사료된다. 또한 XML을기반으로하는가변문서출판에서대화형편집방식과포맷팅기능이결합된시스템개발을위한연구모델로사용될것이라기대된다. 향후연구과제로는 XML의표준스타일언어인 XSL-FO에대한포맷팅객체의편집방식과포맷터의개발이필요하다. 또한본시스템은템플릿의동적편집과동적포맷터의개발에초점이맞춰어져있기때문에실용적으로사용되어지기위해서는부가기능에대한추가적인보완이필요하다. 그리고현재웹기반의동적출판에대한중요성이커져가고있기때문에, 문서편집자과문서작성자의역할에기반한저작도구와처리방식에대한연구가필요할것이다. 참고문헌 [1] Nathan Hurst, Wilmot Li, Kim Marriot, "Review of Automatic Document Formatting," In Proceedings of the 2009 ACM Symposium on Document Engineering, Sep. 2009. [2] John Lumley, Roger Gimson, Owen Rees, "A Framework for Structure, Layout & Function in Documents," In Proceedings of the 2005 ACM 4590
동적편집과포맷팅기능을갖는 XML 기반의가변데이터출판시스템 Symposium on Document Engineering, Nov. 2005. [3] John Lumley, Roger Gimson, Owen Rees, "Configurable Editing of XML-based Variable-Data Documents," In Proceedings of the 2008 ACM Symposium on Document Engineering, Sep. 2008. [4] W3C, XSL Transformations(XSLT) Version 2.0, http://www.w3.org/tr/xslt20/, 2007. [5] W3C, XML Path Language(XPath) 2.0, http://www.w3.org/tr/xpath20/, 2007. [6] W3C, Extensible Stylesheet Language(XSL) 1.1, http://www.w3.org/tr/xsl11/, 2006. [7] UCanCode.NET, Variable Data Printing Solution, http://www.ucancode.net. 2010. [8] Quint V., Vatton, "Technique for Authoring Complex XML Documents," In Proceedings of 2004 ACM Symposium on Document Engineering, Oct. 2004. [9] Villard, L and Layaïda, N, "An Incremental XSLT Transformation Processor for XML Document Manipulation," In Proceedings of the 11th World Wide Web Conference, Hawaii, 2002. [10] 윤상민, 큰 XML 문서를위한점진적인 XSLT 처리, 한국과학기술원석사학위논문, 2003. [11] 박성진, XML 문서변경탐지기능을갖는통합리파지토리시스템, 한국산학기술학회논문지, Vol. 10. No. 10, pp.2696-2707, 2009. [12] 공용해, 김명숙, XML 정보검색의효율적전처리를위한문서여과알고리즘, 한국산학기술학회논문지, Vol. 6, No. 1, pp.1-11, 2005. 임광택 (Kwang-Taeg Lim) [ 정회원 ] 1989 년 3 월 : 광운대학교전자계산기공학과 ( 공학석사 ) 1993 년 8 월 : 광운대학교전자계산기공학과 ( 공학박사 ) 1997 년 9 월 ~ 현재 : 호원대학교컴퓨터게임학부교수 < 관심분야 > 문서정보처리, 전자출판시스템, XML 응용 4591