KR20010088529A - System and method for editing and formatting electronic document - Google Patents
System and method for editing and formatting electronic document Download PDFInfo
- Publication number
- KR20010088529A KR20010088529A KR1020010046815A KR20010046815A KR20010088529A KR 20010088529 A KR20010088529 A KR 20010088529A KR 1020010046815 A KR1020010046815 A KR 1020010046815A KR 20010046815 A KR20010046815 A KR 20010046815A KR 20010088529 A KR20010088529 A KR 20010088529A
- Authority
- KR
- South Korea
- Prior art keywords
- formatting
- module
- fot
- result
- tree
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/117—Tagging; Marking up; Designating a block; Setting of attributes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
- G06F40/154—Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Document Processing Apparatus (AREA)
Abstract
Description
본 발명은 전자문서 편집/변환처리장치와 그 방법에 관한 것으로, 보다 상세하게는 XML문서와 XSL스타일시트를 기초로 전자문서의 포맷팅(Formatting)처리를 실행하여 포맷팅 결과의 문서를 얻기 위한 전자문서 편집/변환처리장치와 그 방법에 관한 것이다.The present invention relates to an electronic document editing / conversion processing apparatus and a method thereof, and more particularly to an electronic document for performing a formatting process of an electronic document based on an XML document and an XSL style sheet to obtain a document of a formatting result. An apparatus for editing / conversion processing and a method thereof.
주지된 바와 같이, 전자/반도체 분야 및 통신기술분야의 비약적인 발전에 동반해서 대량의 정보를 고속으로 처리하는 기능이 설계된 컴퓨터가 보급되면서 정보화 사회로의 발전이 가속화되는 상황이다.As is well known, with the rapid development of the electronic / semiconductor field and the communication technology field, the development of the information society is accelerated with the spread of computers designed for a function of processing a large amount of information at high speed.
그러한 정보화 사회에서는 컴퓨터에 의한 전자문서처리의 필요성이 요구됨에 따라 워드프로세서라든지 전자출판시스템을 포함하는 전자문서처리시스템이 현실화된 상태이지만, 그러한 전자문서처리시스템에 의해 작성된 문서는 각기 독립적인 문서구조와 다양한 내용정보를 갖기 때문에 상호 다른 문서처리시스템 및 장치에 의한 문서처리환경에서 각 문서의 교환 및 공유를 위한 표준문서구조모델이 필요하게 된다.In such an information society, electronic document processing systems including word processors and electronic publishing systems have become a reality as the necessity of electronic document processing by computers is required. However, documents created by such electronic document processing systems have independent document structures. Since it has various contents information with each other, standard document structure model for exchange and sharing of each document is needed in document processing environment by different document processing systems and devices.
그 점을 고려하여, ISO(Internal Organization for Standardization)에서는 OSI(Open System Interconnection)환경에서 상호 다른 기종간의 효율적인 문서정보교환을 위한 세계적인 공통방식의 모델로서 IS 8613, ODA/ODIF(Open Document Architecture/Open Document Interchange Format) 및 SGML(Standard Generalized Markup Language)을 국제표준으로 제정하게 된다.In view of this, the ISO (Internal Organization for Standardization) is an IS 8613, ODA / ODIF (Open Document Architecture / Open) model as a global common model for efficient document information exchange between different models in an OSI (Open System Interconnection) environment. Document Interchange Format (SGML) and Standard Generalized Markup Language (SGML) will be established as international standards.
여기서, SGML문서는 단지 논리구조만을 갖게 되기 때문에 문서 스타일에 대해 기술하는 요소간의 관계를 나타냄과 더불어 논리 요소와의 대응관계를 기술하기 위해 ISO에서는 IS 10179 DSSSL(Document Style Semantics and Specification Language)을 제정하였는 바, 이는 SGML문서를 사용자에게 표현하기 위한 변환(즉, Formatting)처리를 행하고 그 포맷팅된 문서는 SPDL(Standard Page DescriptionLanguage)등을 사용하여 인쇄 또는 화면 표시되도록 하게 된다.Here, the SGML document has only a logical structure, and therefore, in order to indicate the relationship between the elements describing the document style and to describe the correspondence with the logical elements, the ISO established IS 10179 DSSSL (Document Style Semantics and Specification Language). As described above, this performs conversion (ie, formatting) process for representing the SGML document to the user, and the formatted document is printed or displayed using SPDL (Standard Page Description Language).
그리고, 최근에 소위 '인터넷'으로 칭해지는 데이터통신망이 구축되면서 문서의 내용과 포맷팅 정보가 포함된 HTML(Hyper Text Markup Language)이 제안된 상태이지만, 그 HTML에는 문서의 구조와 내용 및 스타일정보가 혼합되어진 상태이기 때문에 SGML과 같은 문서를 필요로 하게 된다.In recent years, as a data communication network called 'Internet' has been built, HTML (Hyper Text Markup Language) including the content and formatting information of a document has been proposed, but the structure, content, and style information of the document are included in the HTML. This is a mixed state, requiring documentation such as SGML.
따라서, W3C(World Wide Web Consortium)에서는 인터넷환경에서 SGML과 같은 문서를 교환하기 위해 XML 1.0을 권고함과 더불어, HTML의 제한적인 포맷팅 정보를 세밀하게 기술하기 위한 CSS(Cascading Style Sheets)와 DSSSL의 장점만을 합친 XSL(Extensible Stylesheet Language)을 권고중이다.Therefore, the World Wide Web Consortium (W3C) recommends XML 1.0 for exchanging documents such as SGML in the Internet environment, as well as Cascading Style Sheets (CSS) and DSSSL for detailing limited formatting information of HTML. We recommend Extensible Stylesheet Language (XSL), which combines the advantages.
여기서, XML에 기반한 전자문서처리시스템의 개발요구가 증대됨과 더불어 그 중요성이 점차 증가되는 상황인 바, XML에 의한 전자문서는 논리적 구조와 정보만을 가질 뿐 문서의 표현을 위한 포맷팅 정보를 포함하지 않기 때문에 문서를 효과적으로 보여주기를 원하는 사용자의 요구를 충족하지 못하게 되고, 그 때문에 XML로 작성된 문서를 입력으로 받아서 그 문서를 처리하기 위한 방안이 필요하게 된다.Here, as the demand for development of an electronic document processing system based on XML increases and its importance increases, an electronic document based on XML has only a logical structure and information, but does not include formatting information for expression of the document. Therefore, it does not meet the needs of users who want to display the document effectively. Therefore, a method for receiving a document written in XML as input and processing the document is needed.
본 발명은 상기한 종래 기술을 감안하여 이루어진 것으로, XSL로 기술한 포맷팅 정보를 이용해서 XML 문서를 포맷팅하여 제공함으로써 XML 문서의 효율적인 처리가 이루어지는 XML 문서처리환경의 구축이 가능하도록 하기 위한 전자문서 편집/변환처리장치와 그 방법을 제공함에 그 목적이 있다.SUMMARY OF THE INVENTION The present invention has been made in view of the above-described prior art, and edits an electronic document for enabling an XML document processing environment in which an XML document can be efficiently processed by formatting and providing an XML document using formatting information described by XSL. Its purpose is to provide a conversion processing device and a method thereof.
상기한 목적을 달성하기 위해, 본 발명의 바람직한 실시 예에 따르면 처리대상의 XML 문서와 XSL 스타일시트의 입력과 그 입력된 상기 XML 문서와 상기 XSL 스타일시트의 포맷팅결과로 얻어진 포맷팅 결과문서의 출력이 이루어지는 문서부와; 상기 입력된 XML 문서와 XSL 스타일시트를 파싱하여 소스트리를 생성하고 그 소스트리에 관한 FOT(Formatting Object Tree)결과를 얻는 처리부; 상기 처리부에서 파싱처리된 상기 XSL 스타일시트의 파싱결과와 상기 소스트리를 갖고서 상기 소스트리를 변환하여 결과트리를 얻고 그 결과트리에 대해 XSL 스타일시트의 포맷팅 정보를 이용하여 상기 FOT 형태의 결과물을 상기 처리부에 제공하며 그 FOT 형태의 결과를 상기 포맷팅된 결과문서를 제공하는 엔진부로 이루어진 전자문서 편집/변환처리장치가 제공된다.In order to achieve the above object, according to a preferred embodiment of the present invention, the input of the XML document and the XSL style sheet to be processed, and the output of the formatting result document obtained as a result of the input of the XML document and the XSL style sheet, A document section; A processing unit for parsing the input XML document and the XSL style sheet to generate a source tree and to obtain a Formatting Object Tree (FOT) result for the source tree; Converting the source tree with the parsing result of the XSL stylesheet parsed by the processing unit and the source tree to obtain a result tree, and outputting the result of the FOT type using the formatting information of the XSL stylesheet for the result tree. There is provided an electronic document editing / conversion processing apparatus provided with a processing unit and an engine unit for providing the formatted result document with the result of the FOT form.
바람직하게, 상기 엔진부는 상기 XSL 스타일시트의 파싱결과 상기 소스트리를 갖고서 그 소스트리를 변환하여 결과트리를 생성하는 변환프로세서와; 상기 결과트리에 대해 상기 XSL스타일시트의 포맷팅정보를 이용해서 상기 FOT 형태의 결과물을 얻는 스타일 프로세서(Style Processor) 및; 상기 FOT형태의 결과물에 대해 FOT를 운행하면서 포맷팅모듈을 기초로 브라우징하여 상기 포맷팅 결과문서를 형성하는 포맷터를 갖추게 된다.Preferably, the engine unit comprises a conversion processor for generating a result tree by converting the source tree with the source tree as a result of parsing the XSL style sheet; A style processor for obtaining the result of the FOT type using the formatting information of the XSL style sheet for the result tree; It is equipped with a formatter for forming the formatting result document by browsing based on the formatting module while operating the FOT with respect to the result of the FOT type.
상기 포맷터는 포맷팅을 위한 클래스가 블록단위와 테이블단위로 구분되고, 상기 포맷팅 모듈을 관리하는 클래스는 FOT를 운행하는 FOT 운행모듈과, 상기 포맷팅을 위한 클래스객체를 생성하여 메모리배열로서 관리하는 메모리저장모듈, 페이지를 포맷팅하는 페이지 포맷팅 모듈 및, 전체의 포맷팅 모듈을 디스플레이하는 디스플레이모듈을 포함하여 구성된다.The formatter includes a class for formatting a block unit and a table unit, and a class managing the formatting module includes a FOT driving module for driving a FOT and a memory object for creating and managing a class object for formatting. Module, a page formatting module for formatting a page, and a display module for displaying the entire formatting module.
상기 FOT 운행모듈은 상기 스타일프로세서에 의해 생성된 FOT(Flow Objet Tree)를 깊이우선순위 탐색방법에 의해 전체의 FOT 구조를 파싱하여 포맷팅에 필요한 정보로 변환하기 위해, FOT 운행도중에 각 노드의 타입에 따라 단순현재노드의 처리를 위한 모듈과, 현재노드를 포함하는 하위노드들의 처리를 위한 모듈을 포함하게 된다.The FOT operation module converts the FOT (Flow Objet Tree) generated by the style processor into information required for formatting by parsing the entire FOT structure by a depth priority search method. Accordingly, the module includes a module for processing a simple current node and a module for processing subnodes including the current node.
상기 페이지 포맷팅 모듈은 페지이 정보를 검색하고 그 페이지를 포맷팅하여 묘사하기 위한 페이지정보를 찾아서 포맷팅 정보를 변환하는 모듈과, 그 포맷팅 정보를 기초로 계산하여 실제의 화면상에 포맷팅하기 위한 모듈로 이루어진다.The page formatting module includes a module for retrieving page information, finding page information for formatting and describing the page, and converting the formatting information, and a module for calculating and formatting on the actual screen based on the formatting information.
상기 메모리저장모듈은 템플릿배열의 객체로 관리되고, 그 저장된 포맷팅모듈의 객체로서는 'CFO_Block'객체와 'CFO_Table'객체가 포함되고, 각 포맷팅모듈의 객체는 블록처리와 라인처리 및 화이트스페이스처리가 이루어지며; 상기 템플릿배열은 상기 'CFO_Block"을 기본추가단위로 하여 그 'CFO_Block'을 확장한 'CFO_Table'의 객체가 추가되며, 자체적으로 Row와 Cell의 트리구조로 구성된다.The memory storage module is managed as an object of a template array, and the objects of the stored formatting module include a 'CFO_Block' object and a 'CFO_Table' object, and the objects of each formatting module are subjected to block processing, line processing, and white space processing. ; The template array has an object of 'CFO_Table' which extends the 'CFO_Block' with the 'CFO_Block' as a basic additional unit, and has a tree structure of rows and cells.
상기 디스플레이모듈은 저장된 메모리 객체들 중에서 현재 화면에 묘사될 부분만을 선택하여 디스플레이되도록 계산하고 영역정보를 박스형태의 라인으로 나타내는 모듈로 이루어진다.The display module includes a module that selects and displays only a portion of the stored memory objects to be displayed on the current screen and displays area information in a box-shaped line.
본 발명의 다른 바람직한 실시양태에 따르면, 문서부에서 입력되는 전자문서로서의 XML 문서와 XSL 스타일시트를 파싱하여 소스트리(Source Tree)를 생성하고, 상기 XSL 스타일시트의 파싱결과와 상기 소스트리에 기초하여 그 소스트리를변환하여 결과트리(Result Tree)를 얻으며, 상기 결과트리에 대해 XSL스 타일시트의 포맷팅정보를 이용하여 FOT(Flow Object Tree)를 생성하고, 상기 FOT를 운행하면서 포맷터에 의해 브라우징하여 포맷팅된 결과문서를 얻도록 된 전자문서 편집/변환처리방법이 제공된다.According to another preferred embodiment of the present invention, a source tree is generated by parsing an XML document and an XSL style sheet as an electronic document input from a document unit, and generating a source tree based on the parsing result of the XSL style sheet and the source tree. Converts the source tree to obtain a Result Tree, generates a FOT (Flow Object Tree) using XSL stylesheet formatting information for the result tree, and browses by a formatter while operating the FOT. An electronic document editing / conversion processing method for obtaining a formatted result document is provided.
상기 FOT는 상기 포맷터의 FOT 운행모듈에 의해 깊이우선순위 탐색방식에 의해 파싱되고나서 각 노드의 타입에 따라 상기 FOT 운행모듈의 단순현재노드의 처리를 위한 모듈과 현재노드를 포함하는 하위노드들의 처리 모듈에 의해 포맷팅에 필요한 정보로 변환된다.The FOT is parsed by a depth priority search method by the FOT running module of the formatter and then processed by the node, including a current node and a module for processing a simple current node of the FOT running module according to each node type. It is converted into information necessary for formatting by the module.
또, 상기 FOT에 대한 페이지 포맷팅이 실행되고, 그 페이지 포맷팅은 페이지 포맷팅을 위한 페이지정보를 검색하여 포맷팅 정보로 변환하고 그 포맷팅 정보에 대한 페이지정보를 계산하여 화면에 직접 포맷팅하게 된다.In addition, the page formatting for the FOT is executed, and the page formatting retrieves page information for page formatting, converts the page information into formatting information, calculates page information on the formatting information, and formats the page information directly on the screen.
상기 포맷팅 과정에는 메모리저장모듈이 적용되어 포맷팅 정보가 템플릿배열의 객체로 관리되고, 그 저장된 포맷팅 모듈의 객체로서는 'CFO_Block'객체와 'CFO_Table'객체가 포함되며, 각 포맷팅 모듈의 객체는 블록처리와 라인처리 및 화이트스페이스처리가 이루어지며; 상기 템플릿배열은 상기 'CFO_Block"을 기본추가단위로 하여 그 'CFO_Block'을 확장한 'CFO_Table'의 객체가 추가되며, 자체적으로 Row와 Cell의 트리구조로 형성된다.In the formatting process, a memory storage module is applied and the formatting information is managed as an object of a template array, and the objects of the stored formatting module include a 'CFO_Block' object and a 'CFO_Table' object. Line processing and white space processing are performed; The template array has an object of 'CFO_Table' which extends the 'CFO_Block' with the 'CFO_Block' as a basic additional unit, and is formed in a tree structure of rows and cells.
상기 포맷팅 정보에 대해서는 디스플레이모듈에 의해 상기 저장된 메모리객체들 중에서 현재 화면에 묘사될 부분만을 선택하여 디스플레이 되도록 계산하고 영역정보를 박스형태의 라인으로 나타내는 처리가 이루어진다.The formatting information is calculated by the display module to select and display only a portion of the stored memory objects to be displayed on the current screen and to display area information in a box-shaped line.
바람직하게, 상기 XML 문서와 XSL 스타일시트의 입력창에서 검증 및 포맷팅을 실행하여 화면에 디스플레이가 이루어지고, 상기 입력창에서 XML문서를 선택하면 그 입력창의 하측에 결과보고창이 형성되며, 그 결과보고창에는 문서의 오류에 대한 상태정보(오류의 존재여부 및, 오류의 존재 시 오류의 위치와 원인)가 표시된다.Preferably, the display is performed on the screen by performing verification and formatting in the input window of the XML document and the XSL style sheet, and selecting an XML document in the input window forms a result report window below the input window. The window displays status information about the document's error (whether the error exists, and the location and cause of the error in the presence of the error).
상기한 본 발명에 따른 전자문서 편집/변환처리장치와 그 방법에 따르면, 문서부에서 입력되는 전자문서로서의 XML 문서와 XSL 스타일시트를 파서에 의해 파싱하여 소스트리(Source Tree)를 생성하고, 상기 XSL 스타일시트의 파싱결과와 상기 소스트리에 기초하여 엔진부의 변환프로세서가 그 소스트리를 변환하여 결과트리(Result Tree)를 얻으며, 상기 결과트리에 대해 XSL 스타일시트의 포맷팅 정보를 이용하여 상기 엔진부의 스타일프로세서가 FOT(Flow Object Tree)를 생성하고, 상기 FOT를 운행하면서 포맷터에 의해 브라우징하여 포맷팅된 결과문서를 얻게 된다.According to the electronic document editing / conversion processing apparatus and method thereof according to the present invention, a source tree is generated by parsing an XML document and an XSL style sheet as an electronic document input from a document unit by a parser. Based on the parsing result of the XSL style sheet and the source tree, the conversion processor of the engine unit converts the source tree to obtain a result tree, and uses the formatting information of the XSL style sheet with respect to the result tree. The style processor generates a flow object tree (FOT), browses by a formatter while driving the FOT, and obtains a formatted result document.
도 1은 XSL과 HTML포맷팅 객체의 관계를 설명하는 도면,1 is a diagram illustrating a relationship between an XSL and an HTML formatting object.
도 2는 XSL처리기에서 실행되는 XSL스타일시트의 처리과정을 설명하는 개념도,2 is a conceptual diagram illustrating a process of an XSL style sheet executed in an XSL processor;
도 3은 도 2에 표시된 XSL포맷팅 객체를 설명하는 도면,3 is a view for explaining the XSL formatting object shown in FIG.
도 4는 본 발명에서 상정하는 '페이지 포맷팅'에 관련된 포맷팅 객체들의 트리 구성도,4 is a diagram illustrating a tree structure of formatting objects related to 'page formatting' in the present invention;
도 5는 본 발명에서 상정하는 페이지 포맷팅 객체의 발생을 지시하는 상태를 설명하는 도면,FIG. 5 is a view for explaining a state indicating generation of a page formatting object assumed in the present invention; FIG.
도 6은 메모리매핑을 위한 페이지 포맷팅 객체의 클래스를 설명하는 도면,6 is a diagram illustrating a class of page formatting objects for memory mapping;
도 7은 페이지 포맷팅 모듈을 위한 포맷팅 클래스의 설계 개념을 설명하는 도면,7 is a diagram illustrating a design concept of a formatting class for a page formatting module;
도 8은 본 발명에서 실행되는 페이지내의 영역 분할을 설명하는 모식도,Fig. 8 is a schematic diagram for explaining division of regions in a page executed in the present invention;
도 9는 본 발명에서 상정되는 FOT(Flow Object Tree)를 위한 기본클래스를 설명하는 도면,9 is a view for explaining a base class for the FOT (Flow Object Tree) assumed in the present invention,
도 10은 본 발명에 따라 구현되는 전자문서 편집/변환처리장치의 구성을 설명하는 기능블록도,10 is a functional block diagram for explaining a configuration of an electronic document editing / conversion processing apparatus implemented according to the present invention;
도 11은 도 10에 도시된 포맷터의 기능블록도,11 is a functional block diagram of a formatter shown in FIG. 10;
도 12는 도 11에 도시된 FOT 운행부의 동작을 설명하기 위해 참조되는 FOT운행과정 및 처리형태를 설명하는 모식도,FIG. 12 is a schematic diagram illustrating a FOT operating process and processing form referred to for explaining the operation of the FOT driving unit shown in FIG. 11; FIG.
도 13은 도 11에 도시된 페이지 포맷팅 모듈의 작용을 설명하는 페이지 포맷팅시의 영역계산을 설명하는 도면,FIG. 13 is a view for explaining area calculation during page formatting explaining the operation of the page formatting module shown in FIG. 11; FIG.
도 14는 도 11에 도시된 메모리모듈에서의 템플릿메모리배열을 설명하는 모식도,14 is a schematic diagram illustrating a template memory arrangement in the memory module shown in FIG. 11;
도 15 내지 도 19는 도 11에 도시된 메모리저장모듈에서의 블록영역처리와 라인영역처리 및 화이트스페이스의 처리과정을 설명하기 위한 참고도,15 to 19 are reference diagrams for explaining a block region process, a line region process, and a white space process in the memory storage module shown in FIG. 11;
도 20은 도 11에 도시된 디스플레이모듈에서 논리위치에서의 물리적 위치를 설명하는 도면,20 is a view for explaining a physical position in a logical position in the display module shown in FIG. 11;
도 21a와 도 21b는 본 발명에서 구현되는 포맷팅 객체들과 속성들을 나타낸 도면,21A and 21B illustrate formatting objects and properties implemented in the present invention;
도 22는 본 발명에 적용되는 XML문서의 예를 나타낸 도면,22 is a diagram showing an example of an XML document to which the present invention is applied;
도 23은 본 발명에 적용되는 XSL스타일시트의 예를 나타낸 도면,23 is a view showing an example of an XSL style sheet applied to the present invention;
도 24는 본 발명에 따라 형성되는 문서의 입력 및 검증을 위한 입력창의 예를 나타낸 도면,24 is a view showing an example of an input window for inputting and verifying a document formed according to the present invention;
도 25는 본 발명에 따라 형성되는 전체 시스템의 화면 구성예를 나타낸 도면,25 is a diagram showing an example of the screen configuration of an entire system formed according to the present invention;
도 26은 영역정보와 그림 출력결과를 예시하는 화면예,26 is a screen example illustrating area information and a picture output result;
도 27은 문자데이터 출력결과를 예시하는 화면예,27 is a screen example illustrating text data output results;
도 28은 테이블 출력결과를 예시하는 화면예,28 is a screen example illustrating a table output result;
도 29는 리스트처리결과를 예시하는 화면예이다.29 is a screen example illustrating a list processing result.
*도면의 주요부분에 대한 부호의 설명** Description of the symbols for the main parts of the drawings *
100: 전자문서 편집/변환처리장치, 200: 문서부,100: electronic document editing / conversion processing device, 200: document part,
210: XML 문서, 220: XSL 문서(XSL 스타일시트),210: XML document, 220: XSL document (XSL stylesheet),
230: 포맷팅 결과문서, 300: 처리부,230: formatting result document, 300: processing unit,
310: 파서, 320: 소스트리,310: parser, 320: source tree,
330: 결과트리, 340: FOT(Flow Object Tree),330: result tree, 340: FOT (Flow Object Tree),
400: 엔진부, 410: 변환프로세서,400: engine unit, 410: conversion processor,
420: 스타일프로세서, 430: 포맷터,420: style processor, 430: formatter,
432: FOT 운행모듈, 434: 페이지 포맷팅모듈,432: FOT navigation module, 434: page formatting module,
436: 메모리저장모듈, 438: 디스플레이모듈.436: memory storage module, 438: display module.
이하, 본 발명에 대해 첨부도면을 참조하여 상세하게 설명한다.Hereinafter, with reference to the accompanying drawings, the present invention will be described in detail.
대체로, XSL은 XSLT(XSL Transformation)와 XPath 및 XSL-FO(XSL Formatting Object)로 구성된다.In general, XSL consists of XSL Transformation (XSLT), XPath and XSL Formatting Object (XSL-FO).
그 중, XSLT는 스타일시트문서의 골격에 해당하면서 변환대상 문서의 형태를 구성하는 중요한 부분이다. XPath는 스타일시트에서 XML 문서의 요소와 대응관계를 표현하기 위해 XML문서구조에 대한 접근을 고려하여 제공된 언어이다. XSL-FO는DSSSL(DSSSL-O)의 서브셋에 해당하면서 XSL의 포맷팅을 위한 요소들로 구성되어진다.Among them, XSLT is a skeleton of style sheet document and is an important part that forms the form of document to be converted. XPath is a language that provides access to XML document structure in order to express the correspondence and elements of XML documents in a stylesheet. The XSL-FO corresponds to a subset of DSSSL (DSSSL-O) and consists of elements for formatting XSL.
또, XSL은 XSLT가 기본적인 구성요소를 형성함에 따라 문서의 변환을 목적으로 적용 가능하게 되는 바, 이는 인터넷을 경유하는 문서의 교환을 위한 방법중에서 각기 다른 형식의 문서인 경우 각 문서의 형식으로 변환하기 위한 작용을 갖게 된다.In addition, as XSLT forms the basic components, XSL can be applied for the purpose of document conversion, which is converted to the format of each document in the case of different types of documents for the exchange of documents via the Internet. It has the effect to do.
상기 XSL-FO에 대해서는 다른 포맷팅 객체들로의 변경 적용이 가능하게 되는 바, 그 대표적인 예가 HTML 포맷팅 객체이다.With respect to the XSL-FO, changes to other formatting objects can be applied. A representative example thereof is an HTML formatting object.
도 1에 설명된 XSL과 HTML 포맷팅 객체의 관계에 따르면, XSL 스타일시트의 구성요소중에서 XSLT의 요소인 '룰(rule)'은 '패턴(Pattern)'과 '액션(Action)'으로 이루어지는 바, 상기 '패턴'은 XPath에 해당하는 부분이고 상기 '액션'은 변환대상 문서의 노드를 구성하는 다른 XML 문서의 요소나 포맷팅을 위한 요소로 구성된다.According to the relationship between the XSL and the HTML formatting object described in FIG. 1, among the elements of the XSL stylesheet, the 'rule', which is an element of the XSLT, consists of a 'pattern' and an 'action'. The 'pattern' is a part corresponding to the XPath, and the 'action' is composed of elements of other XML documents or formatting elements constituting the node of the conversion target document.
즉, 상기 XSLT는 XSL의 구성요소 중에서 가장 중요한 부분으로, 입력된 XML문서를 다른 형태의 출력결과로 나타내기 위한 중추적인 역할을 담당하게 된다.That is, the XSLT is the most important part of the components of the XSL, and plays a pivotal role for representing the input XML document as another output result.
기본적으로, 그 XSLT는 '템플릿 룰(Template rule)'들로 구성되는 바, 이는 상기 '패턴'에 해당하는 XPath로 표현되는 구문의 대응으로 처리된다.Basically, the XSLT is composed of 'Template rules', which are processed in correspondence with the syntax represented by the XPath corresponding to the 'pattern'.
XSLT에서 최상위 요소인 'xsl:stylesheet'요소는 문서에서 단지 1회만 나타나게 되는 바, 이는 XSLT가 XML문서 즉, 'Well-formed XML'문서로서 작성되어야만 됨을 의미하게 되고, 대부분의 XSLT구성요소는 최상위 요소인 'xsl:stylesheet'의하위로 존재하게 되며, 네임스페이스(namespace)에 따라 처리되는 요소가 달라지게 된다.The top level element in XSLT, the 'xsl: stylesheet' element, appears only once in the document, which means that the XSLT must be written as an XML document, that is, a "Well-formed XML" document. Most XSLT components are top level. It exists under the element 'xsl: stylesheet', and the elements processed depend on the namespace.
도 2는 XSL 처리기에서 실행되는 XSL 스타일시트의 처리개념을 설명하는 모식도이다.2 is a schematic diagram illustrating a concept of processing of an XSL style sheet executed in an XSL processor.
도면에 도시된 XSL처리기(10)에서 템플릿 노드트리(12)는 최상위 노드로서의 스타일시트 노드(stylesheet node)와 템플릿 룰로 구성되는 노드를 의미하게 된다.In the XSL processor 10 illustrated in the drawing, the template node tree 12 means a node composed of a stylesheet node as a top node and a template rule.
또, 스타일시트 지시노드(14)는 패턴을 의미하면서, 입력노드 트리(16)의 일부분에 접근하게 되고, 각 템플릿 룰들이 포함하는 지시에 따라 처리되어 결과노드(18)로 변환처리 된다.In addition, the style sheet indicating node 14 accesses a part of the input node tree 16 while referring to a pattern, and is processed according to the instructions included in each template rule and converted into a result node 18.
여기서, XSL-FO의 개요에 대해 살펴보면, XSL의 설계와 목적은 DSSSL과 CSS와의 관계로부터 확인되는 바, 그 XSL은 1996년 ISO표준안으로 채택된 DSSSL을 기반으로 하여 그 설계원칙과 처리모델이 부합되도록 설계됨과 더불어 실용적인 측면에서도 DSSSL의 유용성을 고려하여 설계되었다. 따라서, XSL은 DSSSL의 'FO(Flow Object)'의 서브셋을 이용하면서 'DSSSL-Online'에 명시된 특성을 계승하고 있다.Here, if we look at the outline of XSL-FO, the design and purpose of XSL is confirmed from the relationship between DSSSL and CSS. The XSL is based on DSSSL, which was adopted in 1996 ISO standard. In addition to being designed to be practical, it is designed in consideration of the usefulness of DSSSL. Thus, XSL inherits the characteristics specified in DSSSL-Online, using a subset of the `` Flow Object '' of DSSSL.
또, XSL은 CSS의 기능을 지원하면서 그 CSS를 XSL로 변환가능 하도록 설계되었기 때문에 XSL은 CSS의 상위개념으로 이해되며 HTML/CSS와 완전한 양립성의 유지가 가능하게 된다.Also, since XSL is designed to support CSS functions and convert CSS into XSL, XSL is understood as a superordinate concept of CSS and maintains full compatibility with HTML / CSS.
그 점을 고려해서, XSL은 'CSSstyle'과 CSS의 포맷팅 모델을 지원하면서, CSS의 특성과 HTML속성에 대한 'HTML/CSS core flow object'집합을 포함하게 된다.With that in mind, XSL supports the 'CSSstyle' and the CSS's formatting model, including the 'HTML / CSS core flow object' set of CSS properties and HTML properties.
DSSSL-O의 'core flow object'중 XSL에서 사용되는 'DSSSL flow object'의서브셋으로는 'scroll'과, 'paragraph', 'paragraph-break', 'character', 'line-field', external-graphic', 'horizontal-rule', 'vertical-rule', 'score', 'embedded-text'이 포함과 더불어, 'box',와 'table', 'table-part', 'table-column', 'table-row', 'table-cell', 'table-border', 'sequence', 'display-group', 'simple-page-sequence' 및, 'link'가 포함되며, 이는 기능적인 측면에서 활용하기 위함이므로 XSL에서는 다른 명칭의 'flow object'로 변경된 경우도 상정된다.Subsets of 'DSSSL flow object' used in XSL among DSSSL-O 'core flow object' are 'scroll', 'paragraph', 'paragraph-break', 'character', 'line-field', external- graphic ',' horizontal-rule ',' vertical-rule ',' score ', and' embedded-text ', including' box ',' table ',' table-part ',' table-column ', Includes 'table-row', 'table-cell', 'table-border', 'sequence', 'display-group', 'simple-page-sequence', and 'link'. In order to do this, XSL is also assumed to be changed to another flow object.
HTML/CSS의 'core flow Object'중에서는 'SCRIPT', 'PRE', 'HTML', 'TITLE', 'META', 'BASE', 'BODY', 'DIV', 'BR', 'SPAN', 'TABLE', 'CAPTION', 'COL', 'COLGROUP', 'THEAD', 'TBODY', 'TFOOT', 'TR', 'TD', 'A', 'FORM', 'INPUT', 'SELECT', 'TEXTAREA', 'HR', 'IMG', 'MAP', 'AREA', 'OBJECT', 'PARAM', 'FRAMESET'의 기능을 포함하게 된다.Among the 'core flow objects' of HTML / CSS, 'SCRIPT', 'PRE', 'HTML', 'TITLE', 'META', 'BASE', 'BODY', 'DIV', 'BR', 'SPAN' , 'TABLE', 'CAPTION', 'COL', 'COLGROUP', 'THEAD', 'TBODY', 'TFOOT', 'TR', 'TD', 'A', 'FORM', 'INPUT', ' It includes the functions of SELECT ',' TEXTAREA ',' HR ',' IMG ',' MAP ',' AREA ',' OBJECT ',' PARAM 'and' FRAMESET '.
그리고, 현재까지 개발된 'FO'들은 쓰기와 해독이 쉽도록 크게 8개의 대분류로 구분되는 바, 도 3에 도시된 표 1은 그 분류된 XSL 포맷팅객체(FO)를 나타낸다.In addition, the 'FO's developed to date are largely divided into eight major categories for easy writing and decoding. Table 1 shown in FIG. 3 shows the classified XSL formatting objects (FO).
도 3에서 페이지와 배치 및 선언에 관련된 포맷팅객체(Pagination and Layout Formatting Objects)중에서 'fo:root'는 XSL의 포맷팅객체들로 구성된 결과트리의 최상위 노드이다.In FIG. 3, 'fo: root' is a top node of a result tree composed of XSL formatting objects among pages and layout and layout formatting objects related to declaration.
'fo:page-sequence'는 문서와 페이지의 (부분)연속에 대한 생성방법을 열거하기 위해 사용되는 바, 예컨대 리포트의 한 장, 이러한 페이지의 내용은 'fo:page-sequence'의 차일드흐름객체(Child flow objects)로 실현된다.'fo: page-sequence' is used to enumerate how the document and the (partial) sequence of pages are generated, for example, a sheet of a report, the contents of which are the child flow objects of 'fo: page-sequence'. It is realized as (Child flow objects).
'fo:layout-master-set'문서에서 모든 마스터(master)들의 주위를 둘러싸기 위해 사용되고, 'fo:declarations'는 스타일시트에 전체적인 선언을 그룹화하기 위해 사용되며, 'fo:page-sequence-master'는 페이지가 연속으로 생성되는 경우에 사용되는 페이지-마스터(page-master)들의 연속으로 기술된다.Used to surround all masters in the 'fo: layout-master-set' document, 'fo: declarations' is used to group global declarations in a stylesheet, and 'fo: page-sequence-master' 'Is described as a series of page-masters used when a page is created in succession.
'fo:single-page-master-reference'는 하나의 페이지-마스터에 대해 하나의 실례로 구성되는 서브-시퀀스(sub-sequence)로 기술된다.'fo: single-page-master-reference' is described as a sub-sequence consisting of one instance of one page-master.
'fo:repeatable-page-master-alternatives'는 선택된 페이지-마스터집합의 실례의 반복으로 구성된 서브-시퀀스로 기술되면서 반복 숫자는 속박되거나 경우에 따라서는 비속박된다.'fo: repeatable-page-master-alternatives' is described as a sub-sequence consisting of instance repetitions of the selected page-master set, with the number of repetitions bound or in some cases unbound.
'fo:repeatable-page-master-reference'는 하나의 페이지-마스터의 실례의 반복으로 구성되는 부분 서브-시퀀스로 기술된다.'fo: repeatable-page-master-reference' is described as a partial sub-sequence consisting of an iteration of an instance of a page-master.
'fo:conditional-page-master-reference'는 만족할만하게 사용되는 조건인 경우에 적용되는 페이지-마스터를 인지하기 위해 사용되며, 'fo:color-profile'은 스타일시트에 ICC컬러프로파일(color profile)을 선언하기 위해 사용되고, 'fo:simple-page-master'는 페이지의 생성과 페이지의 기하학적 열거를 위해 사용되며 페이지는 5개의 영역으로 세분화되게 된다.'fo: conditional-page-master-reference' is used to recognize the page-master applied when the condition is satisfactorily used, and 'fo: color-profile' is the ICC color profile in the stylesheet. The 'fo: simple-page-master' is used to create the page and to geometrically enumerate the page, and the page is divided into five areas.
'fo-region-body'는 상기 'fo:simple-page-master'의 'center'에 위치하는 뷰포트(viewport)의 영역을 기술하기 위해 적용되고, 'fo:region-before'는 상기한 'fo-region-body'영역의 'before'측에 위치하는 뷰포트의 영역을 정의하게 되며, 'fo:region-after'는 상기한 'fo-region-body'영역의 'after'측에 위치하는 뷰포트의 영역을 정의하게 되고, 'fo:region-start'는 상기한 'fo-region-body'영역의 'start'측에 위치하는 뷰포트의 영역을 정의하게 되며, 'fo:region-end'는 'fo-region-body'영역의 'end'측에 위치하는 뷰포트의 영역을 정의하게 된다.'fo-region-body' is applied to describe the area of the viewport located at the 'center' of the 'fo: simple-page-master', and 'fo: region-before' is the 'fo Defines the viewport area located on the 'before' side of the 'region-body' area, and 'fo: region-after' is defined as the viewport located on the 'after' side of the 'fo-region-body' area. A region is defined, 'fo: region-start' defines a region of a viewport located at the 'start' side of the 'fo-region-body' region, and 'fo: region-end' is defined as' fo Defines the viewport area located on the 'end' side of the '-region-body' area.
'fo:flow'는 그 내용이 목록이나 장, 절과 같은 내용을 구분하는 단위형태흐름객체들의 연속이고, 'fo:static-content'는 시퀀스나 하나의 영역 또는 페이지-시퀀스에서 하나 이상의 페이지에 지정된 영역의 반복에서 표현되는 포맷팅 객체의 트리를 유지하게 되고 통상 반복을 위해 사용되거나 'header'와 'footer'들의 연속으로 사용된다.'fo: flow' is a sequence of unit-like flow objects whose content separates content such as lists, chapters, and clauses, and 'fo: static-content' is the sequence of one or more pages in a sequence or a region or page-sequence. It maintains a tree of formatting objects that are represented in the iteration of the specified area and is usually used for iteration or as a sequence of 'headers' and 'footers'.
또, 도 3에서 블록수준의 포맷팅 객체들(Block-level Formatting Objects)에서 'fo:block'는 'paragraph'나 'titles', 'headlines', 'figure' 및 'table caption' 등의 포맷팅을 위해 일반적으로 사용되고, 'fo:block-container'는 블록-수준 참조영역을 생성하기 위해 사용된다.In FIG. 3, 'fo: block' in Block-level Formatting Objects is used for formatting of 'paragraph', 'titles', 'headlines', 'figure' and 'table caption'. Commonly used, 'fo: block-container' is used to create block-level references.
도 3에서 라인수준의 포맷팅 객체들(Inline-level Formatting Objects)에서 'fo:bidi-override'는 혼합언어의 문서에서 다른 인라인이나 포함되는 인라인의 기본 'unicode' 양방향 알고리즘의 쓰기 기록방향에 대한 재정의가 필요한 경우에 사용되고, 'fo-character'는 표현을 위해 하나의 문자에 매핑되는 그림문자를 표현하게 되며, 'fo:initial-property-set'는 'fo:block'의 첫라인을 위한 포맷팅특성(Formatting property)'를 기술하게 되고, 'fo:external-graphic'는 엘리먼트 트리의 외부에 존재하는 그림데이터에 대한 인라인을 실행하기 위해 사용되어지며, 'fo:instream-foreign-object'는 '차일드(child)'로서 존재하는 그림데이터들의 인라인 그림을 위해 사용된다.In line-level Formatting Objects in Fig. 3, 'fo: bidi-override' redefines the write-write direction of the default 'unicode' bidirectional algorithm of other inline or included inline in mixed-language documents. Is used when is required, 'fo-character' represents a pictogram mapped to one character for representation, and 'fo: initial-property-set' is a formatting characteristic for the first line of 'fo: block'. (Formatting property) ',' fo: external-graphic 'is used to execute inlining of picture data that exists outside the element tree, and' fo: instream-foreign-object ' (child) 'is used for inline drawing of existing picture data.
또, 'fo:inline'는 배경을 가진 텍스트의 일부나 경계를 둘러싸는 포맷팅을 위해 주로 사용되고, 'fo:inline-container'는 인라인 참조영역을 생성하기 위해 사용되며, 'fo:leader'는 반복되는 문자열이나 규칙 또는 2개의 텍스트(Text)포맷팅객체의 연결을 위해 사용되는 문자들의 순환반복패턴으로 구성되는 'leader'를 생성하기 위해 사용되고, 'fo:page-number'는 현재 페이지 번호를 표현하기 위해 사용되며, 'fo:page-number-citation'는 열거된 포맷팅 객체에 의해 생성되는 첫 번째 영역을 포함하는 페이지를 위한 페이지번호를 참조하기 위해 사용된다.Also, 'fo: inline' is mainly used for formatting part of a background text or surrounding a border, 'fo: inline-container' is used to create an inline reference area, and 'fo: leader' is repeated. Used to create a 'leader' consisting of a repeating pattern of strings, rules, or characters used to concatenate two Text formatting objects, and 'fo: page-number' represents the current page number. 'Fo: page-number-citation' is used to refer to the page number for the page containing the first area generated by the enumerated formatting objects.
또, 도 3에서 표(Table)에 관련된 포맷팅객체들(Formatting Objects for Tables)에서 'fo:table-and-caption'는 표 제목에 동반되는 표의 포맷팅을 위해 사용되고, 'fo:table'는 표 재료의 포맷팅을 위해 사용되며, 'fo:table-column'은 동일한 '컬럼(column)'과 'span'을 갖는 '표 셀(table cell)'들에 대한 적절한 특징을 기술하기 위해 사용되며, 'fo:table-caption'는 표에 대한 표 제목을 포함하는 블록-수준 포맷팅객체를 포함하기 위해 사용된다.In addition, in FIG. 3, 'fo: table-and-caption' is used for formatting a table accompanying a table title in 'Formatting Objects for Tables', and 'fo: table' is a table material. 'Fo: table-column' is used to describe the proper characteristics of 'table cells' with the same 'column' and 'span'. : table-caption 'is used to include a block-level formatting object that contains the table title for the table.
또, 'fo:table-header'는 'table-header'의 내용을 포함하기 위해 사용되고, 'fo:table-footer'는 'table-footer'의 내용을 포함하기 위해 사용되며, 'fo:table-body'는 표의 본체의 내용을 포함하기 위해 사용된다.Also, 'fo: table-header' is used to include the contents of 'table-header', 'fo: table-footer' is used to include the contents of 'table-footer', and 'fo: table- body 'is used to contain the contents of the body of the table.
'fo:table-row'는 '로우(row)'에 들어갈 '표 셀'들의 그룹을 위해 사용되며, 'fo:table-cell는 '표 셀'에 위치되는 내용의 그룹을 위해 사용된다.'fo: table-row' is used for a group of 'table cells' to enter a 'row', and 'fo: table-cell' is used for a group of contents located in a 'table cell'.
도 3에서 리스트(즉, 목록)에 관련된 포맷팅객체들(Formatting Objects forLists)에 따르면, 'fo:list-block'는 목록 아이템이나 목록을 포맷팅하기 위해 사용되고, 'fo:list-item'은 목록에서 하나의 아이템의 'body'와 '라벨(label)'을 포함하게 되며, 'fo:list-item-body'는 목록 아이템에서 'body'의 내용을 포함하게 되고, 'fo:list-item-label'은 목록 아이템에서 라벨의 내용을 포함하고 통상 목록 아이템의 'body'를 장식하거나 인식하기 위한 내용을 열거하여 사용된다.According to Formatting Objects forLists in FIG. 3, the 'fo: list-block' is used to format a list item or list, and the 'fo: list-item' is used in the list. It will contain the 'body' and 'label' of an item, 'fo: list-item-body' will contain the contents of 'body' in the list item, and 'fo: list-item-label 'Is used to include the contents of the label in the list item and to enumerate or recognize the content of the list item.
도 3에서 링크와 다중선택에 관한 포맷팅 객체들(Link and Multi Formatting Objects)중에서 'fo:simple-link'는 'simple link'의 시작 리소스(start resource)의 표현을 위해 사용되고, 'fo:multi-swtich'는 포맷팅 객체들의 2개 이상의 서브트리에서 선택을 위해 사용되며, 'fo:multi-case'는 표현 또는 은폐시키기 위해 선택가능한 패런트(parent)인 'fo:multi-switch'에 포함되는 흐름객체(FO)들로 사용된다.In FIG. 3, among the Link and Multi Formatting Objects, 'fo: simple-link' is used to represent a start resource of 'simple link' and 'fo: multi-' swtich 'is used for selection in two or more subtrees of formatting objects, and' fo: multi-case 'is a flow included in' fo: multi-switch ', a selectable parent for presentation or hiding. Used as objects (FOs).
또, 표 1에서 'fo:multi-toggle'는 또 다른 'fo:multi-case'를 선택하기 위해 'fo:multi-case'를 가지고서 사용되며, 'fo:multi-properties'는 주어진 내용의 일부와 함께 2개 이상의 'property set'들 사이에서 선택을 위해 사용되고, 'fo:multi-property-set'는 내용에 적용되는 DOM(Document Object Model)상태에 의존하는 '포맷팅 propery'들의 집합에 대한 대안으로 기술하기 위해 사용된다.In Table 1, 'fo: multi-toggle' is used with 'fo: multi-case' to select another 'fo: multi-case', and 'fo: multi-properties' is part of the given content. Used to select between two or more 'property sets', and 'fo: multi-property-set' is an alternative to a set of 'formatting properies' that depend on the state of the Document Object Model (DOM) applied to the content. Used to describe.
또, 도 3의 외부영역에 관한 포맷팅 객체들(Out-of-Line Formatting Objects)중에서 'fo:float'는 비정형 도형이라든지 '표' 또는 '표 보조'의 내용을 집합하기 위해 사용되고, 'fo:footnote'는 유동 기록의 구성요소들을 집합하기 위해 사용되며, 'fo:footnote-body'는 각주의 내용을 생성하기 위해 사용된다.In addition, among the out-of-line formatting objects of FIG. 3, 'fo: float' is used to aggregate the contents of an irregular shape, a 'table' or a 'table auxiliary', and the 'fo: footnote 'is used to aggregate components of the flow record, and' fo: footnote-body 'is used to generate footnote content.
도 3의 기타 포맷팅 객체들(Other Formatting Objects)에서 'fo:wrapper'는 포맷팅 객체의 그룹을 위해 상속되는 'property'들을 기술하기 위해 사용되는 바, 이는 추가적인 포맷팅을 의미하지는 않는다. 'fo:retrieve-maker'는 'heders'와 'footer'를 생성하기 위해 사용된다.In Other Formatting Objects of FIG. 3, 'fo: wrapper' is used to describe 'property' inherited for a group of formatting objects, which does not mean additional formatting. 'fo: retrieve-maker' is used to create 'heders' and 'footers'.
본 발명에 따르면, XML 문서와 XSL 스타일시트를 파싱하여 스타일시트에서 선언하는 내용에 기초하여 소망하는 형태의 결과물을 DOM형태의 결과로 변환해주는 마이크로소프트사의 MS-XML 파서를 사용하게 되는 바, 이는 통상의 XML 파서에 XSLT와 XPath를 처리해주는 프로세서가 포함된 COM(Component Object model)으로 구현된 파서이다.According to the present invention, Microsoft's MS-XML parser, which parses an XML document and an XSL style sheet and converts a desired form of output into a DOM form based on the contents declared in the style sheet, is used. A parser implemented with COM (Component Object model) that includes a processor that processes XSLT and XPath in a normal XML parser.
따라서, 본 발명에서는 MS-XML에서의 변환결과를 가지고 실제의 포맷터에서 사용가능한 메모리FOT(Flow Object Tree)의 자료 구조로 변환해주는 모듈을 제공하게 되는 바, 그 메모리FOT는 'Pagenation' 부분을 맵(Map)으로 관리해주는 부분과 실제 처리내용을 트리로 관리해주는 부분으로 구분된다.Therefore, the present invention provides a module for converting a data structure of a memory FOT (Flow Object Tree) that can be used in an actual formatter with the result of conversion in MS-XML. The memory FOT maps a 'Pagenation' part. It is divided into the part managed by (Map) and the part managed by tree.
XML 문서와 XSL 스타일시트의 변환결과의 과정은 먼저 XML문서를 파서 API(Application Program Interface)를 통해 메모리로 로딩하면 파싱하고 나서 DOM형태의 자료구조를 메모리에 저장함에 이어, XSL 스타일시트도 로딩하여 DOM형태로 메모리에 저장하게 된다. 그 저장된 양 DOM 객체들은 파서의 변환을 위한 API를 통해 그 양 DOM객체의 변환이 실행되어 새로운 DOM 객체가 생성되는 바, 그 새로운 DOM 객체가 변환된 결과로서 FOT 파일생성모듈의 입력객체가 된다.The process of converting XML document and XSL stylesheet first loads XML document into memory through parser API (Application Program Interface), parses it, then saves DOM-type data structure in memory, and then loads XSL stylesheet. It is stored in memory in the form of DOM. The stored DOM objects are converted to both DOM objects through an API for parser conversion to create a new DOM object, which is the input object of the FOT file generation module as a result of the conversion.
여기서, 로딩과 변환에 사용되는 API는 'HRESULT load(VARIANT xmlSource,VARIANT_BOOL*isSuccessful)' (URL형태 즉, 파일을 입력으로 하여 파싱후에 메모리에 로딩)과, 'HRESULT loadXML(BSTR xmlString, VARIANT_BOOL *isSuccessful)' (XML 문서의 부분 스트림이나 전체 스트림 형태를 입력으로 해서 파싱후에 메모리에 로딩)이 사용됨과 더불어, 'HRESULT transformNode(IXMLDOMNode*stylesheet, BSTR*xmlString)' (로딩된 XML 스타일시트 객체를 입력으로 스트림 형태로 변환) 및, 'HRESULT transformNodeToObject(IXMLDOMNode*stylesheet, VARIANT outputObject)(로딩된 XML객체에 로딩된 XSL 스타일시트객체를 입력으로 새로운 DOM객체로 변환)이다.Here, the APIs used for loading and converting are 'HRESULT load (VARIANT xmlSource, VARIANT_BOOL * isSuccessful)' (URL type, that is, file is loaded into memory after parsing as input), and 'HRESULT loadXML (BSTR xmlString, VARIANT_BOOL * isSuccessful) ), Which is loaded into memory after parsing a partial or full stream of an XML document as input, as well as 'HRESULT transformNode (IXMLDOMNode * stylesheet, BSTR * xmlString)' Stream transform) and 'HRESULT transformNodeToObject (IXMLDOMNode * stylesheet, VARIANT outputObject) (converts the XSL stylesheet object loaded in the loaded XML object into a new DOM object as input).
변환된 결과의 DOM 객체는 Root Node인 'fo:root'를 시작으로 최종의 하위 노드까지 깊이우선순위 방식의 탐색기법에 의해 모두 검색되어 'pagenation'모듈과 "FOT" 모듈을 생성하는 부분의 처리과정으로 이행된다.The DOM object of the converted result is searched by the depth-priority search method from the root node 'fo: root' to the last child node and generates a 'pagenation' module and a 'FOT' module. To the process.
상기한 'pagenation' 모듈의 생성에 따르면, XSL의 포맷팅 객체들 중의 'pagenation'부분에 관련된 객체들에서 'fo:layout-master-set'를 포함하는 하위의 흐름객체(FO)들은 2종류로 분류 가능하게 된다. 그중 하나는 실제 화면에 대한 구성과 배치에 관련된 객체들로서의 'fo:simple-page-master'와, 'fo:region-before', 'fo:region-body', 'fo:region-start', 'fo:region-after', 'fo:region-end'이 포함된다. 다른 하나는 실제의 화면구성을 참조하여 다수의 화면에 대한 구성이 조합 가능하도록 하는 참조관련 객체들로서의 'fo:page-sequence-master'와,'fo:single -pagemaster-reference', 'fo:repeatable-page-master-reference, 'fo:repeatable- page -master-alternatives', 'fo:conditional-page-master-reference'이 포함된다.According to the generation of the 'pagenation' module, lower flow objects (FOs) including 'fo: layout-master-set' in objects related to the 'pagenation' part of the XSL formatting objects are classified into two types. It becomes possible. One of them is 'fo: simple-page-master', 'fo: region-before', 'fo: region-body', 'fo: region-start', 'fo: region-after' and 'fo: region-end' are included. The other is' fo: page-sequence-master ',' fo: single -pagemaster-reference ',' fo: as reference-related objects that allow the composition of multiple screens to be combined by referring to the actual screen configuration. repeatable-page-master-reference, 'fo: repeatable-page -master-alternatives', and 'fo: conditional-page-master-reference'.
실제, 'pagenation'객체들의 주체는 'fo:simple-page-master'와 이를 참조하는 'fo:single-page-master-reference'와 'fo:repeatable-page-master-reference' 및 'fo:conditional-page-master-reference'이고,그들을 참조하여 실제로 포맷팅 객체들이 묘사되도록 하기 위한 요소가 'fo:page-sequence'이다.In fact, the subjects of 'pagenation' objects are 'fo: simple-page-master' and 'fo: single-page-master-reference' and 'fo: repeatable-page-master-reference' and 'fo: conditional' -page-master-reference ', and the element for referencing them to actually describe the formatting objects is' fo: page-sequence'.
도 4는 그 'pagenation'에 관련된 객체들의 구성도이다. 도면을 참조하면, 'fo: page-sequence'는 하나 이상으로 존재하게 되고, 'fo:simple-page-master' 또는 'fo:page-sequence-master'중에서 하나를 선택하여 하위 포맷팅 객체들을 처리하게 되기 때문에 이를 기준으로 메모리에 맵(map)으로서 관리하게 된다. 즉, 'fo:simple-page-master'와 'fo:page-sequence-master'의 상속값인 "master-name"을 키값으로 하여 메모리에 매핑시키게 된다.4 is a configuration diagram of objects related to 'pagenation'. Referring to the drawings, more than one 'fo: page-sequence' exists, and one of 'fo: simple-page-master' or 'fo: page-sequence-master' is selected to process sub-formatting objects. As a result, it is managed as a map in memory based on this. That is, "master-name", which is an inheritance value of 'fo: simple-page-master' and 'fo: page-sequence-master', is used as a key value and mapped into memory.
도 5는 도 4에 도시된 'pagenation'에 관련된 객체(즉, 페이지 포맷팅객체)의 발생 지시 예를 설명하기 위한 도면으로, 각 페이지관련 포맷팅 객체들의 관계와 발생되는 회수를 DTD화하여 나타낸다. 도면에서, "%block;"은 블록수준의 포맷팅 객체들과 표, 리스트객체들을 의미하게 된다.FIG. 5 is a diagram for describing an example of generating indication of an object (ie, page formatting object) related to 'pagenation' illustrated in FIG. 4. In the figure, "% block;" means block level formatting objects, tables, and list objects.
또, 도 6은 도 5에 도시된 페이지 포맷팅 객체들을 매핑하여 메모리에 관리하기 위해 각 포맷팅 객체들을 클래스(class)화하여 나타낸 도면이다.FIG. 6 is a diagram illustrating classifying each formatting object in order to map the page formatting objects illustrated in FIG. 5 and to manage them in memory.
도면에 도시된 클래스들은 템플릿 맵 클래스에 각 포맷팅 클래스로 저장관리되고, 'CSimplePageMaster'클래스와 'CPageSequenceMaster'클래스는 속성값인 'master-name'의 키값으로 매핑되어 관리된다.The classes shown in the drawing are stored and managed in each template class in the template map class, and the 'CSimplePageMaster' class and the 'CPageSequenceMaster' class are managed by mapping the key values of the attribute value 'master-name'.
기본클래스로서의 'CLayoutMasterSet'클래스는 'MFC(Microsoft Foundation Class)'와 호환을 위해 'CObject'클래스를 상속받아 설계되고, 'CPropertySet'클래스는 'CLayoutMasterSet'클래스의 멤버 템플릿 리스트 클래스로 포함되어 각 포맷팅 클래스의 속성값들을 리스트형태로 저장하게 된다.'CLayoutMasterSet' class as a base class is designed by inheriting 'CObject' class for compatibility with 'MFC (Microsoft Foundation Class)', and 'CPropertySet' class is included as a member template list class of 'CLayoutMasterSet' class. Attribute values of are stored in list form.
또, 'CRegionBody', 'CRegionBefore', 'CRegionAfter', 'CRegionStart', 'CRegionEnd'클래스는 'CSimplePageMaster'의 멤버 클래스로서 저장되도록 설계된다.In addition, the classes 'CRegionBody', 'CRegionBefore', 'CRegionAfter', 'CRegionStart' and 'CRegionEnd' are designed to be stored as member classes of 'CSimplePageMaster'.
'CPageSequenceMaster'는 'CSinglepageMasterReference', CRepeatablePageM- asterReference', 'CRepeatablePage-MasterAlternative'클래스가 템플릿 리스트형태로 관리되도록 설계된다.'CPageSequenceMaster' is designed to manage 'CSinglepageMasterReference', CRepeatablePageMastersterReference ', and' CRepeatablePage-MasterAlternative 'classes in the form of template list.
도 7은 도 5와 도 6에 연관되어 상기한 포맷팅 클래스들의 설계를 도식화해서 나타낸 도면이다. 도면에서, 'CMap'템플릿 맵 클래스의 객체인 'm_Layout'은 차후에 포맷터로 이관되어 관리되어지고, 'CList'템플릿리스트클래스의 객체인 'm_Sequence'는 'CPageSequenceMaster'클래스에 멤버로서 포함되며, 'CList'템플릿 리스트 클래스의 객체인 'm_Property'는 'CLayoutMasterSet'을 상속하는 모든 포맷팅 객체의 멤버로서 포함된다.FIG. 7 is a diagram schematically illustrating the design of the above-described formatting classes in relation to FIGS. 5 and 6. In the drawing, 'm_Layout', an object of the 'CMap' template map class, is later transferred to the formatter and managed, 'm_Sequence', an object of the 'CList' template list class, is included as a member of the 'CPageSequenceMaster' class, and 'CList' An object of the template list class 'm_Property' is included as a member of all formatting objects that inherit from 'CLayoutMasterSet'.
다음에, FOT 모듈의 생성에 따르면 'fo:page-sequence'의 하위로 2가지의 포맷팅 객체 즉, 'fo:static-content'객체와 'fo:flow'객체가 존재하게 되는 바, 이들은 'fo:region-before', 'fo:region-after', 'fo:region-start', 'fo:region-end'포맷팅객체의 'region-name'과 'fo:static-content'의 'flow-name'의 속성과 연관되어 처리되도록 명세에 기술되어 있고, 'fo:static-content'는 실제 내용 이외의 영역을 위한 처리를 행하기 때문에 0번 이상 존재가 가능하도록 기술되어 있다.Next, according to the creation of the FOT module, two formatting objects, 'fo: static-content' and 'fo: flow', exist under 'fo: page-sequence'. 'flow-name' of 'region-name' and 'fo: static-content' of: region-before ',' fo: region-after ',' fo: region-start ', and' fo: region-end ' It is described in the specification to be processed in association with an attribute of ', and' fo: static-content 'is described so that it can exist zero or more times because it performs processing for areas other than the actual content.
'fo:flow'포맷팅 객체는 실제 내용들을 위한 객체로서 이하의 모든 포맷팅 객체는 'fo:region-body'부분의 영역에 묘사되는 바, 도 8은 페이지에서의 영역이 구획된 상태를 나타낸다.The 'fo: flow' formatting object is an object for actual contents, and all the following formatting objects are described in the region of the 'fo: region-body' part.
'fo:flow'와 'fo:static-content'객체의 하위에는 블록수준의 포맷팅 객체와 표 객체, 리스트 객체 등의 존재가 가능하게 되는 바, 이들 전체의 포맷팅 객체를 클래스화 하여 트리구조의 자료 구조로 연결하여 포맷팅하는 경우 포맷터에게 탐색시간과 처리의 부하를 주기 때문에 이들 포맷팅 객체를 여러 수준의 FOT 클래스로 상속하게 된다.Under the 'fo: flow' and 'fo: static-content' objects, block-level formatting objects, table objects, list objects, etc. can be present. Formatting by linking the structure causes these formatter objects to be inherited by multiple levels of FOT classes, because the formatters are loaded with search time and processing overhead.
기본 트리구조를 위한 멤버로서는 도 9의 'CFOT*type' 객체를 멤버로 포함하게 되는 바, 이는 트리구조를 형성하기 위한 필수적인 구성요소이기 때문이다. 또, 각 포맷팅 객체들이 갖는 속성들을 저장하기 위한 'CList'템플릿 리스트 객체인 'm_Property'는 포맷팅 객체들이 갖는 속성들만을 저장하기 때문에 메모리의 적재량이 적어지게 된다.The member for the basic tree structure includes the 'CFOT * type' object of FIG. 9 as a member because it is an essential component for forming a tree structure. In addition, 'm_Property', a 'CList' template list object for storing the properties of each formatting object, stores only the properties of the formatting objects, thereby reducing the amount of memory.
즉, 만일 각 포맷팅 객체들이 갖는 모든 속성값들을 클래스의 멤버 변수로포함시키게 되면 메모리 적재량의 크기가 증가되기 때문에 포함된 속성들만을 저장하게 된다. 또한, 'CFOT'클래스를 상속하는 클래스들의 타입(type)정보(즉, 어떠한 종류의 포맷팅 수준의 클래스인지를 저장하기 위해) 'ObjectType'을 멤버로 포함하게 된다.That is, if all the attribute values of each formatting object are included as a member variable of the class, the size of the memory load increases, so only the included attributes are stored. In addition, type information of classes inheriting the 'CFOT' class (ie, to store what kind of formatting level class) is included as a 'ObjectType' as a member.
모든 포맷팅 객체들은 'CFOT'클래스를 상속한 클래스로 구분되어 생성되고 트리형태의 구조로 변환되며, 그 트리형태의 변환구조가 'FOT'로서 포맷터에게 'pagenation'정보와 함께 제공되어 포맷팅 처리가 이루어지게 된다.All formatting objects are created by dividing into classes inheriting the 'CFOT' class and converted into a tree-type structure. The tree-type conversion structure is 'FOT' and is provided with the 'pagenation' information to the formatter so that formatting is performed. You lose.
바람직하게, 본 발명에 따르면 'CFOT클래스'를 상속하는 클래스들은 'CBlock', 'CExternalGraphic', 'CTableRow', 'CTable' 등이며 추가 상속이 가능하게 되고, 각 클래스들은 포맷팅을 위한 정보들을 포함하게 되며, 분류된 영역의 정보들과 처리부분도 포함하게 된다.Preferably, according to the present invention, the classes inheriting the 'CFOT class' are 'CBlock', 'CExternalGraphic', 'CTableRow', 'CTable', etc. and can be further inherited, and each class includes information for formatting It also includes the information and processing part of the classified area.
도 10은 상기한 설명에 기반하여 이루어지는 본 발명의 바람직한 실시예에 따른 전자문서 편집/변환처리장치의 전체적인 구성을 나타낸 도면이다.10 is a diagram showing the overall configuration of an electronic document editing / conversion processing apparatus according to a preferred embodiment of the present invention made based on the above description.
도면에서 100으로 표시된 그 전자문서 편집/변환처리장치는 FOT 파일을 생성하는 모듈과 그의 포맷팅을 위한 특성값(즉, 속성값)들을 처리하는 포맷터를 포함하게 되고, 그 FOT파일생성모듈과 포맷터는 다른 시스템에서의 사용도 가능하도록 하기 위해 DLL(Dynamic Linking Library)형태로 설계된다.The electronic document editing / conversion processing apparatus indicated by 100 in the drawing includes a module for generating a FOT file and a formatter for processing characteristic values (ie, attribute values) for formatting thereof, and the FOT file generating module and formatter It is designed in the form of DLL (Dynamic Linking Library) to be used in other systems.
도 10을 참조하면, 상기 전자문서 편집/변환처리장치(100)에서 문서부(200)에서는 XML 문서(210) 및 XSL 스타일시트(220)와, 포맷팅 결과로 얻어지는 포맷팅 결과문서(230)의 입력과 출력이 이루어지게 된다.Referring to FIG. 10, in the electronic document editing / conversion processing apparatus 100, the document unit 200 inputs an XML document 210 and an XSL style sheet 220 and a formatting result document 230 obtained as a formatting result. And output is made.
또, 처리부(200)의 파서(310)는 상기 문서부(200)로부터 입력되는 XML문서(210)와 XSL 스타일시트(220)를 파싱하여 소스트리(Source Tree; 320)를 생성하게 되고, 상기 엔진부(400)의 변환프로세서(Transformation Processor;410)는 XSL 스타일시트의 파싱결과와 상기 소스트리(320)를 갖고서 그 소스트리(320)를 변환하여 결과트리(result tree;330)를 얻게 된다.In addition, the parser 310 of the processing unit 200 parses the XML document 210 and the XSL stylesheet 220 inputted from the document unit 200 to generate a source tree 320. The transform processor 410 of the engine unit 400 obtains a result tree 330 by converting the source tree 320 with the parsing result of the XSL style sheet and the source tree 320. .
상기 엔진부(400)의 스타일프로세서(Style Processor;420)는 상기 변환된 결과트리에 대해 XSL 스타일시트의 포맷팅정보를 이용해서 FOT(Flow Object Tree)형태의 결과물(즉, 도면에서 340)을 얻게 되고, 상기 엔진부(400)의 포맷터(430)에서는 상기 FOT를 운행하면서 도 4 내지 도 8에서 설명된 포맷팅 모듈을 이용하여 브라우징하게 된다.The style processor 420 of the engine unit 400 obtains a result in the form of a flow object tree (FOT) (that is, 340 in the drawing) using the formatting information of the XSL style sheet for the converted result tree. In addition, the formatter 430 of the engine unit 400 browses using the formatting module described with reference to FIGS. 4 to 8 while driving the FOT.
도 11은 상기 포맷터의 기능블록구성을 나타낸 도면이다. 본 발명에 따르면, 상기 포맷터(430)에서의 포맷팅을 위한 클래스는 블록단위와 테이블단위로 구분된다.11 is a diagram illustrating a functional block configuration of the formatter. According to the present invention, classes for formatting in the formatter 430 are divided into block units and table units.
상기 블록단위 포맷팅 클래스는 도 9에 도시된 CFOT클래스를 상속하여 설계되고, 테이블단위 포맷팅 클래스는 블록단위 포맷팅클래스를 상속하도록 설계되는 바, 블록단위 포맷팅클래스는 'CFO_Block'으로 참조되고 테이블단위 포맷팅클래스는 'CFO_Table'로 참조되면서, 메모리에 저장될 객체로 적용된다.The block unit formatting class is designed to inherit the CFOT class shown in FIG. 9, and the table unit formatting class is designed to inherit the block unit formatting class. The block unit formatting class is referred to as 'CFO_Block' and the table unit formatting class. Is referred to as 'CFO_Table', and is applied to the object to be stored in memory.
또, 포맷팅 모듈을 관리하는 클래스는 FOT를 운행하는 모듈과 상기한 포맷팅을 위한 클래스객체를 생성하여 메모리배열로서 관리하는 모듈이 포함되며, 페이지를 포맷팅하는 모듈 및 전체의 포맷팅 모듈을 디스플레이하는 모듈을 포함하게 된다.In addition, the class managing the formatting module includes a module for driving the FOT and a module for generating the class object for the above-mentioned formatting and managing it as a memory array, a module for formatting a page and a module for displaying the entire formatting module. It will be included.
그 중, FOT 운행모듈(432)에 대해 설명하면 상기 스타일프로세서(420)에 의해 생성된 FOT(340)를 깊이우선순위 탐색방법을 적용하여 전체의 FOT구조를 파싱하여 포맷팅에 필요한 정보로 변환하게 된다.Among them, the FOT navigation module 432 will be described so that the FOT 340 generated by the style processor 420 parses the entire FOT structure and converts the entire FOT structure into information required for formatting by applying a depth priority search method. do.
운행도중에 각 노드의 타입에 따라 처리모듈이 설정되는 바, 그 처리모듈은 2종의 모듈로 구분된다. 그 하나는 단순현재노드의 처리를 위한 모듈이고 다른 하나는 현재노드를 포함하는 하위노드들의 처리를 위한 모듈이다.During operation, the processing module is set according to the type of each node, and the processing module is divided into two types of modules. One is a module for processing a simple current node and the other is a module for processing subnodes including a current node.
도 12는 본 발명에 따라 실행되는 FOT 운행모듈의 전반적인 처리과정과 운행방법을 도식적으로 나타낸 도면이다. 기본 포맷팅 저장객체인 'CFO_Block'객체를 생성 및 속성값 세팅을 위한 'FODisplayAdd'모듈은 타입이 '_Block'노드와 '_External_Graphic'인 경우에 호출하도록 처리된다.12 is a diagram schematically showing the overall processing and driving method of the FOT running module executed according to the present invention. The 'FODisplayAdd' module for creating 'CFO_Block' object, which is the default formatting storage object, and setting property values, is processed to be called when the type is '_Block' node and '_External_Graphic'.
타입이 '_Table'인 경우에는 'MakeTableFo'모듈을 호출하게 되는 바, 이는 '_Table'노드의 모든 하위노드를 처리하고 'FODisplayAdd'모듈을 호출함과 더불어 모든 하위노드들의 속성값을 세팅하게 되며, 이러한 포맷팅 모듈에 대해서는 '네비게이트(Navigate)'로서 참조된다.If the type is '_Table', the 'MakeTableFo' module is called, which processes all subnodes of the '_Table' node, calls the 'FODisplayAdd' module, and sets the property values of all subnodes. This formatting module is referred to as a 'Navigate'.
도 11에서 페이지 포맷팅모듈(434)에 따르면, 페이지를 포맷팅하기 위해서는 2종의 모듈을 통과하게 된다. 그 중 하나는 상기한 페이지정보를 검색하고 그 페이지를 포맷팅하여 묘사하는 경우, 즉 포맷팅 객체들을 묘사하는 영역이 페이지영역에서 위치를 초과하는 경우 또는 페이지가 묘사되지 않는 경우에 현재 묘사하려는 포맷팅객체의 멤버변수, 즉 도 9에서의 'szMasterName'을 키값으로 설정하여 템플릿맵에서 필요로 하는 페이지정보를 찾아내어 포맷팅정보로 변환하는 'SetPageInfo'로 참조되는 모듈이다. 키값으로 페이지맵에서 포맷팅 정보를 추출하고나면 실제 포맷팅을 위한 모듈인 'DrawPageFrame'을 호출하게 되고, 그 모듈은 페이지정보를 계산하여 화면에 직접 포맷팅하게 되며, 도 13은 페이지 포맷팅시 계산되는 영역을 나타낸다.According to the page formatting module 434 in FIG. 11, two formats are passed to format a page. One of them is to retrieve the above-mentioned page information and to format and describe the page, i.e., when the area describing the formatting objects exceeds the position in the page area or when the page is not depicted, It is a module referred to as 'SetPageInfo' which sets a member variable, that is, 'szMasterName' in FIG. 9 as a key value, finds page information needed in a template map, and converts it into formatting information. After extracting the formatting information from the page map as the key value, 'DrawPageFrame', which is a module for actual formatting, is called, and the module calculates the page information and formats it directly on the screen, and FIG. 13 shows an area calculated when formatting the page. Indicates.
또, 도 11에서 메모리저장모듈(436)은 템플릿배열의 객체인 'm_arrBlock'로 관리되는 바, 저장된 포맷팅 모듈의 객체는 'CFO_Block'객체와 'CFO_Table'객체 등이 포함되고, 각 포맷팅 모듈의 객체는 블록처리와 라인처리 및 화이트스페이스처리 등이 포함된다.In FIG. 11, the memory storage module 436 is managed as 'm_arrBlock', which is an object of a template array. The stored formatting module object includes a 'CFO_Block' object and a 'CFO_Table' object, and the like. Includes block processing, line processing and whitespace processing.
도 14는 메모리저장모듈을 관리하는 템플릿배열을 도식적으로 나타내고, 그 메모리저장모듈에 대해서는 포맷터에 의해 차후에 재호출의 경우를 대비하여 설계된다. 즉, 도면에 도시된 형태로 순차적인 관계를 형성하면서 추가되며, 테이블의 경우에는 기본추가단위인 'CFO_Block"을 확장한 'CFO_Table'의 객체를 추가하게 되며 자체적으로 Row와 Cell의 구성을 트리로 구성하게 된다. 이는 테이블의 구성과 유사하여 확장처리에 유용하도록 하기 위함이다. 또한 순차적인 관계를 깨뜨리지 않으면서 고속의 인덱싱에도 유리하게 된다.Fig. 14 schematically shows a template arrangement for managing a memory storage module, and the memory storage module is designed for the case of subsequent recall by the formatter. That is, it is added while forming a sequential relationship in the form shown in the drawing.In the case of a table, an object of 'CFO_Table' which extends 'CFO_Block', which is a basic additional unit, is added. This is similar to the composition of a table to make it useful for extended processing, and it is also advantageous for high speed indexing without breaking sequential relationships.
각 'FO_Block'의 객체 즉, 포맷팅 모듈의 객체는 내부적으로 영역을 관리하는 블록처리와 그 영역내에서의 콘텐트(Content)들을 처리하기 위한 라인처리, 콘텐트내의 화이트스페이스의 처리모듈을 통해 화면에 디스플레이 된다.Each 'FO_Block' object, that is, the object of the formatting module, is displayed on the screen through a block process for managing an area internally, a line process for processing content in the area, and a white space processing module in the content. do.
도 15는 페이지영역내의 하나의 블록영역을 처리하는 형태를 나타내는 바,영역내의 인덴트(indent)정보를 포함하여 콘텐트영역이 결정되며 라인단위로 블록영역내에 디스플레이된다.Fig. 15 shows a form of processing one block area in the page area, where the content area is determined including indent information in the area and displayed in the block area line by line.
도 16은 라인처리 시에 'wrap_option'의 속성값에 따라 영역내의 정보는 디스플레이하고 영역을 초과하는 경우에는 후속라인에서 디스플레이 되도록 처리된다. 만일 'no_wrap'이라면 영역에 제한없이 그대로 하나의 라인에 출력되고, 'isWordWrap'으로 참조되는 모듈에서 처리된다.16 is processed to display information in the area according to the attribute value of 'wrap_option' during line processing, and to display in subsequent lines when the area is exceeded. If it is 'no_wrap', it is printed on one line without any limitation in the area, and processed in the module referred to as 'isWordWrap'.
도 17은 라인처리 시에 'linefeed-treatment'의 속성값에 따라 LF캐릭터 즉, 엔터키(Enter key)의 코드값에 따라 'preserve'라면 엔터키 처리 즉, 다음 라인처리를 행하고 "ignore"라면 엔터키의 값을 무시하게 되며, 이는 wrap-option과 마찬가지로 'IsWordWrap'모듈에서 처리된다.FIG. 17 shows that if the line is 'preserve' according to the attribute value of 'linefeed-treatment' according to the attribute value of 'linefeed-treatment', enter key processing, that is, the next line processing is performed and "ignore". The value of the enter key is ignored, which is handled in the 'IsWordWrap' module just like the wrap-option.
도 18은 콘텐트영역 즉, 하나의 라인처리 시에 'white-space-collapse'의 값에 따라 'false'이면 화이트스페이스를 그대로 처리하는 반면 'true'이면 모든 화이트스페이스들을 하나의 스페이스로 처리하게 되며, 이는 'Disp_Content'로 참조되는 모듈에서 처리된다.FIG. 18 processes white space as it is if the value is 'false' according to the value of 'white-space-collapse' during the processing of one line, whereas if 'true', all white spaces are treated as one space. This is handled in the module referred to as 'Disp_Content'.
도 19는 라인처리 시에 'space-treatment'값이 'preserve'이면 그대로 처리하고 'ignore'이면 모든 스페이스를 없애고 문자코드만을 디스플레이 하도록 처리되며, 도 18에 도시된 'white-space-collapse'와 마찬가지로 'Disp-Content'에서 처리된다.FIG. 19 is a process of processing a line as it is if 'space-treatment' is 'preserve' and removing all spaces and displaying only a character code if 'ignore', and 'white-space-collapse' Similarly, it is handled in 'Disp-Content'.
다음에, 도 11의 디스플레이모듈(438)을 참조하면 그 디스플레이모듈(438)은 저장된 메모리 객체들 중에서 현재 화면에 묘사될 부분만을 선택하여 디스플레이되도록 계산하고 영역정보를 박스형태의 라인으로 나타내게 된다.Next, referring to the display module 438 of FIG. 11, the display module 438 selects and displays only a portion of the stored memory objects to be displayed on the current screen and displays area information in a box-shaped line.
본 포맷터는 기본으로 MFC의 'CScrollView'를 상속받아 처리하기 때문에 물리적인 위치정보와 논리적인 위치정보를 변환해서 처리해야만 된다. 그 때문에 물리적인 위치에서 보여질 메모리 객체들을 찾기 위한 계산을 행하는 모듈이 필요하게 된다. 이는 논리적인 위치에서 현재 뷰포인트(View Point)의 위치정보를 찾아 물리적인 위치 즉, 실제 화면상의 위치정보로 변환해주게 된다. 도 20은 전체의 논리 위치에서 뷰 포인트에 해당하는 물리위치로의 변환을 나타낸다.Since this formatter basically inherits and processes 'CScrollView' of MFC, it is necessary to convert physical location information and logical location information and process it. This necessitates a module that performs calculations to find memory objects to be viewed at physical locations. This finds the location information of the current view point from the logical location and converts it to the physical location, that is, the location information on the actual screen. 20 shows the transformation from the entire logical position to the physical position corresponding to the viewpoint.
본 발명에 따르면, 상기한 설명에 기초하여 도 21a에 도시된 포맷팅 객체들과 도 21b에 도시된 속성들이 구현된다.According to the present invention, the formatting objects shown in FIG. 21A and the attributes shown in FIG. 21B are implemented based on the above description.
도 22 내지 도 29는 본 발명에 따라 실행되는 전자문서의 포맷팅 과정을 예시적으로 나타낸 도면이다.22 to 29 are diagrams exemplarily illustrating a formatting process of an electronic document executed according to the present invention.
도 22에 도시된 XML 문서(즉, 도 10의 문서부(200)에 속하는 XML 문서(210) 참조)와 도 23에 도시된 XSL 스타일시트(도 10의 문서부(200)에 속하는 XSL 스타일시트(220) 참조)를 도 24에서의 입력창에서 검증 및 포맷팅을 실행하여 화면에 디스플레이 해준 결과가 도 25 내지 도 29에 도시된 형태이다.The XML document shown in FIG. 22 (that is, the XML document 210 belonging to the document part 200 of FIG. 10) and the XSL style sheet shown in FIG. 23 (XSL style sheet belonging to the document part 200 of FIG. (Refer to 220) and the result of displaying the screen on the screen by performing verification and formatting in the input window of FIG. 24 is shown in FIGS. 25 to 29.
즉, 도 24의 입력창은 XML문서의 검증기능도 갖추게 되는 바, XML문서를 클릭하거나 선택하는 경우에는 그 하측의 결과보고창에는 문서에 오류의 존재여부를 출력하게 된다. 오류가 없는 경우에는 그 결과보고창에 'XMLdocument'라는 메시지를 출력하는 반면 오류가 있는 경우에는 오류의 원인과 위치 등의 오류정보를 출력하게 된다.That is, the input window of FIG. 24 is also equipped with an XML document verification function. When an XML document is clicked or selected, an output window of the lower part outputs an error in the document. If there is no error, 'XMLdocument' message is displayed on the result report window. If there is an error, error information such as the cause and location of the error is output.
또, 반복해서 입력창을 호출하지 않고 XML 문서와 XSL 스타일시트를 같이 선택할 수 있게 된다. 최종적으로 선택된 XML 문서나 XSL 스타일시트가 입력보고창에 출력되며 모두 입력이 이루어지면 즉시 포맷팅을 시작하게 된다.You can also select an XML document and an XSL stylesheet without having to call the input window repeatedly. Finally, the selected XML document or XSL stylesheet is displayed in the input report window, and when all the input is made, formatting starts immediately.
파일형식을 선택하여 XML 문서나 XSL 스타일시트만을 선택하도록 할 수 있고, 양자의 형식을 모두 탐색하여 선택할 수 도 있다.You can select the file type to select only XML documents or XSL stylesheets, or you can browse and select both types.
도 25는 본 발명에 따라 형성되는 전체 시스템의 화면구성 예를 나타낸다. 화면의 좌측에 형성되는 작업창은 XML 문서와 XSL 스타일시트 및 양자의 문서를 변환한 결과를 트리형태로 나타내고, 토글방식을 적용하여 보이고 숨기는 기능을 제공하게 된다. 그 하측의 에러보고 창은 XML문서나 XSL스타일시트가 변환 시에 XSL-FO의 문법에 적합하도록 코딩되지 않은 경우 에러보고 창으로 에러내용을 출력하게 된다. 에러보고창의 에러를 선택하게 되면 좌측 작업 창에서 위치를 자동적으로 선택하여 원인을 용이하게 확인하도록 지원하게 된다. 화면의 우측은 실제 포맷팅되는 영역으로, 문서의 입력 후에 우측 영역에 모든 데이터가 디스플레이 된다.25 shows an example of the screen configuration of the entire system formed according to the present invention. The task pane formed on the left side of the screen displays the result of converting the XML document, the XSL style sheet, and both documents in a tree form, and provides a function of showing and hiding by applying the toggle method. The error report window on the lower side outputs the error content to the error report window when the XML document or XSL style sheet is not coded to conform to the syntax of the XSL-FO. Selecting an error in the error report window automatically selects a location in the left task pane to assist in identifying the cause. The right side of the screen is an area that is actually formatted, and all data is displayed in the right area after the document is input.
또, 도 26은 영역정보와 그림출력결과를 예시하는 화면 예이고, 도 27은 문자데이터출력결과를 예시하는 화면 예이며, 도 28은 테이블출력결과를 예시하는 화면 예이고, 도 29는 리스트처리결과를 예시하는 화면이다.26 is a screen example illustrating the area information and the picture output result, FIG. 27 is a screen example illustrating the text data output result, FIG. 28 is a screen example illustrating the table output result, and FIG. 29 is a list process. This is a screen that illustrates the results.
한편, 본 발명은 상기한 예로 한정되지는 않고 발명의 기술적 요지 및 요점을 이탈하지 않는 범위 내에서 다양한 변경 및 변형실시가 가능함은 물론이다.On the other hand, the present invention is not limited to the above examples and various changes and modifications can be made within the scope not departing from the technical gist and gist of the invention.
상기한 바와 같이, 본 발명에 따른 전자문서 편집/변환처리장치와 그 방법에의하면, 논리적 구조와 정보만을 갖는 전자문서(XML 문서)의 입력에 대해 XSL 스타일시트를 적용하여 효과적인 문서의 편집 및 변환처리가 실행되고, 그에 따라 인터넷을 매개한 상호 다른 형식의 전자문서에 대한 효과적인 교환 및 표시를 위한 기반의 구축이 가능하게 된다.As described above, according to the electronic document editing / conversion processing apparatus and method according to the present invention, an effective document editing and conversion is applied by applying an XSL style sheet to an input of an electronic document (XML document) having only a logical structure and information. The processing is carried out, thereby enabling the establishment of a foundation for the effective exchange and presentation of different forms of electronic documents via the Internet.
Claims (13)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010046815A KR20010088529A (en) | 2001-08-02 | 2001-08-02 | System and method for editing and formatting electronic document |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020010046815A KR20010088529A (en) | 2001-08-02 | 2001-08-02 | System and method for editing and formatting electronic document |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20010088529A true KR20010088529A (en) | 2001-09-28 |
Family
ID=19712819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020010046815A KR20010088529A (en) | 2001-08-02 | 2001-08-02 | System and method for editing and formatting electronic document |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20010088529A (en) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100443176B1 (en) * | 2001-12-28 | 2004-08-04 | 한국전자통신연구원 | An XSLT-Based Method and Apparatus for Implementing Dynamic Update of TeM Metadata |
WO2007035036A1 (en) * | 2005-09-21 | 2007-03-29 | Lg Electronics Inc. | Device management system and method for managing device management object |
KR100923258B1 (en) * | 2003-01-30 | 2009-10-23 | 엘지전자 주식회사 | Unicode converting method for mobile terminal source file |
WO2010050675A2 (en) * | 2008-10-29 | 2010-05-06 | 한국과학기술원 | Method for automatically extracting relation triplets through a dependency grammar parse tree |
KR101026210B1 (en) * | 2001-11-23 | 2011-03-31 | 리서치 인 모션 리미티드 | System and method for processing extensible markup languagexml documents |
KR101273966B1 (en) * | 2011-09-16 | 2013-06-12 | 김준평 | Electronic home newsletter system |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000053638A (en) * | 1999-01-29 | 2000-08-25 | 포만 제프리 엘 | Systems, methods and computer program products for tailoring web page content in hypertext markup language format for display within pervasive computing devices using extensible markup language tools |
KR20010035005A (en) * | 2000-08-29 | 2001-05-07 | 채진석 | An effective method for specifying style information to XML document |
JP2001125831A (en) * | 1999-09-30 | 2001-05-11 | Nec Corp | Data scramble method, data distributing device, data scrambler and recording medium |
KR20010045025A (en) * | 1999-11-02 | 2001-06-05 | 최한석 | A logical structure information extractor for xml documents |
KR20010044321A (en) * | 2001-02-06 | 2001-06-05 | 김남중 | XML Document APPLICATION(viewer, editer, converter) |
KR20020023048A (en) * | 2000-09-22 | 2002-03-28 | 구자홍 | Method for layout of Documents using Extensible Markup Language and system for the same |
-
2001
- 2001-08-02 KR KR1020010046815A patent/KR20010088529A/en not_active Application Discontinuation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20000053638A (en) * | 1999-01-29 | 2000-08-25 | 포만 제프리 엘 | Systems, methods and computer program products for tailoring web page content in hypertext markup language format for display within pervasive computing devices using extensible markup language tools |
JP2001125831A (en) * | 1999-09-30 | 2001-05-11 | Nec Corp | Data scramble method, data distributing device, data scrambler and recording medium |
KR20010045025A (en) * | 1999-11-02 | 2001-06-05 | 최한석 | A logical structure information extractor for xml documents |
KR20010035005A (en) * | 2000-08-29 | 2001-05-07 | 채진석 | An effective method for specifying style information to XML document |
KR20020023048A (en) * | 2000-09-22 | 2002-03-28 | 구자홍 | Method for layout of Documents using Extensible Markup Language and system for the same |
KR20010044321A (en) * | 2001-02-06 | 2001-06-05 | 김남중 | XML Document APPLICATION(viewer, editer, converter) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101026210B1 (en) * | 2001-11-23 | 2011-03-31 | 리서치 인 모션 리미티드 | System and method for processing extensible markup languagexml documents |
KR100443176B1 (en) * | 2001-12-28 | 2004-08-04 | 한국전자통신연구원 | An XSLT-Based Method and Apparatus for Implementing Dynamic Update of TeM Metadata |
KR100923258B1 (en) * | 2003-01-30 | 2009-10-23 | 엘지전자 주식회사 | Unicode converting method for mobile terminal source file |
WO2007035036A1 (en) * | 2005-09-21 | 2007-03-29 | Lg Electronics Inc. | Device management system and method for managing device management object |
US7865483B2 (en) | 2005-09-21 | 2011-01-04 | Lg Electronics Inc. | Device management system and method for managing device management object |
WO2010050675A2 (en) * | 2008-10-29 | 2010-05-06 | 한국과학기술원 | Method for automatically extracting relation triplets through a dependency grammar parse tree |
WO2010050675A3 (en) * | 2008-10-29 | 2010-06-24 | 한국과학기술원 | Method for automatically extracting relation triplets through a dependency grammar parse tree |
KR101012504B1 (en) * | 2008-10-29 | 2011-02-08 | 한국과학기술원 | Method of extracting Triplets by searching dependency grammar setence tree |
KR101273966B1 (en) * | 2011-09-16 | 2013-06-12 | 김준평 | Electronic home newsletter system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6565609B1 (en) | Translating data into HTML while retaining formatting and functionality for returning the translated data to a parent application | |
US7721195B2 (en) | RTF template and XSL/FO conversion: a new way to create computer reports | |
US8484553B2 (en) | System and method for defining specifications for outputting content in multiple formats | |
US7703009B2 (en) | Extensible stylesheet designs using meta-tag information | |
US7080083B2 (en) | Extensible stylesheet designs in visual graphic environments | |
US6613098B1 (en) | Storage of application specific data in HTML | |
RU2358311C2 (en) | Word processing document, stored as single xml file, which can be manipulated by applications which can read xml language | |
JP4339554B2 (en) | System and method for creating and displaying a user interface for displaying hierarchical data | |
US6675355B1 (en) | Redline extensible markup language (XML) schema | |
US20060015821A1 (en) | Document display system | |
US20080301545A1 (en) | Method and system for the intelligent adaption of web content for mobile and handheld access | |
Collard et al. | Supporting document and data views of source code | |
US8397157B2 (en) | Context-free grammar | |
US20070240032A1 (en) | Method and system for vertical acquisition of data from HTML tables | |
US20080040659A1 (en) | Markup Language Translator System | |
US20080134019A1 (en) | Processing Data And Documents That Use A Markup Language | |
KR20010088529A (en) | System and method for editing and formatting electronic document | |
US20090083300A1 (en) | Document processing device and document processing method | |
EP1830274A1 (en) | Server device and name space issuing method | |
WO2006051869A1 (en) | Document processing device and document processing method | |
US20080005085A1 (en) | Server Device and Search Method | |
EP1821220A1 (en) | Data processing device, document processing device, and document processing method | |
Vitali et al. | Hypertext functionalities with XML | |
Armstrong | Working with XML | |
KR20020057709A (en) | XML builder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |