KR20020057709A - 엑스엠엘 문서 작성을 위한 편집기 - Google Patents

엑스엠엘 문서 작성을 위한 편집기 Download PDF

Info

Publication number
KR20020057709A
KR20020057709A KR1020010000688A KR20010000688A KR20020057709A KR 20020057709 A KR20020057709 A KR 20020057709A KR 1020010000688 A KR1020010000688 A KR 1020010000688A KR 20010000688 A KR20010000688 A KR 20010000688A KR 20020057709 A KR20020057709 A KR 20020057709A
Authority
KR
South Korea
Prior art keywords
xml
component
editor
document
dtd
Prior art date
Application number
KR1020010000688A
Other languages
English (en)
Inventor
이민남
Original Assignee
문영웅
주식회사 창해소프트서비스
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 문영웅, 주식회사 창해소프트서비스 filed Critical 문영웅
Priority to KR1020010000688A priority Critical patent/KR20020057709A/ko
Publication of KR20020057709A publication Critical patent/KR20020057709A/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets

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

본 발명은 XML(eXtemsible Markup Language) 문서 작성을 위한 편집기에 관한 것이다.
본 발명이 제공하는 XML 문서작성 편집기는 기업의 각종 문서 설계 분야, DTD 문서 설계 분야, 공공 기관의 공문서 설계 분야, 전자 상거래 첨부 문서 설계 분야 등에서 활용될 수 있는 데, 다음과 같은 효과를 나타낸다.
1. 편리하고 강력한 편집기능 : XML을 모르는 사람도 일반 편집기처럼 작성을 하면, 자동으로 XML 및 DTD , XSL을 만들어 주기 때문에 쉽게 문서를 작성을 할 수 있으며, 어떤 양식이든 표 기능의 Component를 이용하면 워드나 아래한글의 표 그리기의 기능과 동일한 형태의 양식을 만들 수 있다.
2. 빠른 Search 기능 : [그림 4-1]의 XML Tree View에서 Item을 하나 선택하면 그것에 해당하는 XML View창으로 자동으로 이동하여 어떤 Data가 있는지를 바로 보여준다. 따라서 search 기능이 지극히 빠르다.
3.표준 지원 : 현재 W3C의 XML DTD XSL 표준을 정확히 지원한다.
4.정확한 XML 문서의 유효성 검사 : Well Formed 및 Valid Form을 지원하며, 문서를 작성할 때 유효성 검사를 자체적으로 하기 때문에, 사용자는 아무런 문제없이 문서를 작성할 수 있다.

Description

엑스엠엘 문서 작성을 위한 편집기 {XML builder}
본 발명은 XML(eXtemsible Markup Language) 문서 작성을 위한 편집기에 관한 것이다.
웹상에서 현재 가장 많이 사용되고 있는 HTML은 하이퍼링크된 패이지들을 포맷하고 표현하기 위하여 사용된다. 그러나 HTML은 SGML을 완전히 지원하지 못한다. HTML이 폭스바겐급의 마크업 랭귀지라면, SGML은 롤스로이스급 마크업 랭귀지라고 볼 수 있다.
그렇지만 SGML은 그 자체로는 웹에서 그대로 적용하기는 힘들다. 그 결과 HTML과 SGML의 중간점을 찾아가자는 것에 합의하여 XML이 탄생하게 된 것이다.
XML은 포괄적인 SGML을 웹(Web)상에서 HTML처럼 쉽게 전달하고 공유하기 위해 고안된 마크업 언어로서, HTML의 고정성을 탈피하여 사용자가 지정한 마크업을 지원할 수 있다.
XML은 SGML의 장점을 계승한 언어이다. 따라서 SGML이 가지고 있는 확장성(Extensibility), 구조(structure), 검증(Validation)의 특성을 고스란히 계승하고 있다. 이점이 바로 XML이 HTML과 다른 특징이며 또한 장점이다. 즉,
- 정보 제공자는 자기 마음대로 새로운 태그 세트와 속성을 정의할 수 있다.
- 사용자가 자신의 편의에 따라 혹은 자신의 데이터를 구분하고자, 새로운 티그 세트를 임의로 만들 수 있는 것이다.
- 문서의 구조는 연속적인 중첩을 허용한다. XML은 HTML이 지원하지 않는 객체 지향적 구조 혹은 데이터베이스 스키마의 구성을 위해 필요한 여러 번의 중첩을 허용하는 것이다.
- 문서 구조의 검증이 필요한 애플리케이션을 위해 문법적인 구별을 문서 안에서 제공할 수 있다. 따라서 애플리케이션이 어떠한 문서를 받아들일 때 그 문서의 오류를 쉽게 판단할 수 있다.
위에 제시된 특징들은 모두 SGML의 특징이자 장점이다. 다만 XML은 SGML의 모든 장점을 그대로 상속받고, 이를 조금 더 배우기 쉽고, 응용하기 쉽도록 제작된 언어인 것이다.
XML은 SGML의 간략화된 버전으로, SGML의 실용적인 부분집합으로 볼 수 있는 언어이다. 즉, 포괄적인 SGML의 장점들을 최대한 수용하면서도 웹 문서에 쉽게 응용할 수 있도록 하기 위하여, SGML의 특정 부분을 발췌 요약하여 배우기 쉽고, 애플리케이션에서도 쉽게 구현될 수 있도록 만든 것이다.
XML은 'XML문서들'이라 불리는 데이터 객체들의 집합을 설명하고, 부분적으로 XML문서들을 처리하는 컴퓨터 프로그램의 행위에 대해 기술한다. XML은 SGML의 응용판 또는 제한된 형식의 SGML이므로, 구조적으로 XML 문서들은 SGML문서들의 특징을 따른다.
XML 문서들은 파싱된 혹은 파싱되지 않은 데이터를 담고 있는 엔터티들로 구성된다.
파싱된 데이터는 문자들로 이루어지는데, 문자들의 일부는 데이터를 구성하고 일부는 마크업을 구성한다. 마크업은 문서의 레이아웃과 논리적 구조에 제약을 가하는 메커니즘을 제공한다.
XML 스펙 1.0에 정의된대로 well-formed 데이터 객체는 XML 문서가 된다.
Well-formed XML문서는 어떤 추가적인 조건을 만족시키면 valid문서가 될 수도 있다.
모든 XML문서는 논리적 구조와 물리적 구조를 가지고 있다. 물리적으로 XML문서는 엔터티라 불리는 요소들로 이루어진다.
엔터티는 다른 엔터티들을 참조해 그것들을 문서안에 포함시킬 수도 있다. 문서는 "루트" 또는 문서 엔터티로 시작한다. 논리적으로 XML문서는 선언, 요소들, 주석들, 문자 참고들, 처리명령어들로 구성되는데 이것들은 명시된 마크업에 의해 문서안에 표시된다. 논리적, 물리적구조는 올바르게 중첩되어야 한다.
XML은 사용자가 임의로 태그를 만들 수 없는 HTML(Hyper Text Markup Language)의 한계를 해결하고, 문서의 태그를 생성 정의할 수는 있으나 사용법이 복잡한 SGML(Standard Generalized Markup Sanguage)의 단점을 피해, 둘의 장점만을 취한 언어로서 탄생된 것이다.
즉, HTML이 SGML에서 파생됐으나 SGML을 완전하게 지원하지 못했고, 그렇다고 인터넷에 대한 고려가 부족한 SGML은 그대로 웹에 적용하기도 힘들었다. 그래서 HTML과 SGML의 단점은 버리고, SGML의 중요한 기능을 그대로 수용하면서도 확장이 가능한 새로운 표준이 필요했던 것이고, 이런 필요에서 만들어진 것이 XML이다.
XML은 플랫폼에 비의존적(독립적)이며, 사용자 스스로가 확장이 가능하고, 구조화된 스트럭처(Complex Structures)와 검증(Validation) 등 SGML의 기본 특징을 그대로 지원함은 물론 배우고 구현하기도 쉬운 장점이 있다.
사용자가 마음대로 태그 세트와 속성을 지정할 수 있고, 새로운 태그 세트를 만들 수도 있는 언어이다. 즉, HTML이 태그 덩어리였다면 XML은 확장이 가능한, 그러면서 자바스크립트나 비베스크립트와도 연동이 가능한 개발툴이다.
XML은 데이타를 Consistent, Selt-Describing, Open-Format 방식으로 기술하므로 데이타 교환과 전달이 필요한 곳에서는 어디서든지 사용될 수 있다. 초기에 XML은 Active Channel Content를 위한 HTML을 기술하기 위해서 사용될 것이고, 이어서 탐색이나 분산 프린팅등과 같은 어플리케이션을 작성하기 위해서 사용될 것이다. 그리고 XML은 데이타 자체를 작성할 수 있기 때문에, Financial Transactions, News Updates, Weather Information, Patient Records, Legal Libraries등 어떠한 종류의 데이타를 전달하는데 사용될 것이다.
XML은 웹에서 데이타를 표현하기 위한 일반적인 언어이다. 이것은 개발자들이 구조화된 데이터를 표현하고 전달할 수 있도록 한다.
XML은 HTML을 보완하는 역할을 한다. CSS(Cascading Style Sheets)와 함께 페이지를 표현하기 위하여 사용된다.
XML을 HTML에 부가하여 얻는 점은 로컬 계산 수행을 위하여 데이타를 전달한다는 것이다. 사용자에게 구조화된 데이타를 적절하게 볼 수 있도록 해 주고, 여러 개의 소스에서 구조화된 데이터로 통합해 준다. 그리고 다양한 어플리케이션으로부터 데이타를 기술하며 변경된 데이터만 업데이트할 수 있도록 한다.
SGML (ISO 8879), Standard Generalized Markyp Sanguage, 는 전자 문서에서 테이타를 기술하기 위한 국제 표준 정의이다. XML은 SGML을 간략화 시킨 버전이다. XML은 SGML의 대부분 유용한 부분을 유지하도록 설계되었다.
SGML은 구조화된 도큐먼트 레퍼런트인 Document Type Definition (DTD)을 필요로 하지만 XML은 필요로 하지 않는다.
XML을 사용하여 개발자들은 더욱 풍부한 웹 어플리케이션을 개발할 수 있다. XML을 사용하여 구조화된 데이터를 데스크탑에 전달하고, 오브젝트 모델을 통하여 데이타를 계산하고, Extensible Style Language (XLS)을 사용하여 포매팅 규칙을 테이타에 적용하고, HTML을 사용하여 테이타를 표현할 수 있다.
XML 프로세서라고 불리는 소프트웨어 모듈은 XML 문서들을 읽고 그것들의 컨텐트와 구조에 접근하는데 사용한다. 따라서, XML 프로세서는 어플리케이션이라 불리는 또다른 모듈을 대신해 작업을 하는 것이다.
XML 프로세서는 XML 데이터를 읽을 수 있어야 하며 그 정보를 어플리케이션에 제공할 수 있어야 한다.
본 발명은 이처럼 유용한 XML을 web 상에서 보다 쉽게 활용할 수 있도록 XML 에디터를 제공하려는 것이다.
도 1 (그림 1)은 본 발명 XML builder의 초기화면을 나타내는 그림.
도 2 [표 1-1]는 도 1(그림 1)에서 icon을 클릭할 때, 이 부분으로 분기하여 XML Builder에 대한 모든 처리기능을 대신 처리 하여 주는 Component를 나타냄.
도 3[표1-2]는 XML Editor폼의 창으로 메시지 처리를 하여 XSL 및 XML 문서를 만들기 위한 Design을 자동으로 처리하게 해 주는 Component를 나타냄.
도 4[그림 2-1]은 실질적인 Data를 표시 하기위한 곳으로서 속성을 정의 하거나 타입을 정의 하는 곳을 나타냄.
도 5[표 2-1]는 Component를 처음 생성할 때 표시해 주는 부분으로 Element안에 또 다른 Element나 표를 삽입 할 수 있으므로 체크하여 Element인지 표인지를 표시하여 그려주는 Component를 나타냄.
도 6[표 2-2]은 Component Type이 어떤 것이냐에 따라 표시 해주는 그림을 달리 표시 하기 위한 Component를 나타냄.
도 7[표 2-3]은 DTD를 표시할 때 Repetition Operation의 표기 방식대로 표시하기 위하여 체크 한 후 Element에 자동으로 보여주는 Component임.
도 8[표 2-4]은 마우스로 Element나 표를 Element의 자식으로 포함 시킬 때 사이즈 및 위치를 자동으로 산출하여 위치시키는 곳이며, 이 처리가 끝난 후 XML Engine에 메시지를 보내주어 어떤 처리가 이루어 지는지를 알려주는 Component임.
도 9[표 2-5]는 Element를 복사하는 부분인데, 워드의 복사기능과 비슷한 부분으로서, 같은 Element를 복사하여 사용할 때 Copy를 하면 이 부분으로 분기하여 처리 하여주는 Component임.
도 10[표 2-6]은 도 9[표 2-5]에서 Copy한 내용을 붙여넣는 기능으로 Past 하면 이곳으로 분기하여 처리하여 주는 Component를 나타냄.
도 11[그림 3-1]은 양식을 그리기 위한 Component임 (워드나 아래 한글의 표 만들기 기능과 같은 것으로서, HTML에서 Table을 표시하기 위한 Component임. 기능은 분할 및 합치기, Element 포함 및 다중 표 삽입이 가능함).
도 12[표 3-1]는 표를 가리키는 곳으로 옵션에 따라서 그리는 내역이 변경되는 Component를 나타냄 (표에 대한 그림이 그려진 후에 그 안에 들어가는 Element을 그려줌).
도 13[표 3-2]은 마우스가 표의 안에서 움직일 때 마우스의 위치에 따라 현재의 Column의 위치를 기억하고 있다가 합치기나 분할을 할 때 좌표값으로 활용하는 Component를 나타냄.
도 14[표 3-3]는 [표 3-2]과 같은 기능으로 좌표의 Row값의 위치를 기억하는 루틴을 나타내는 Component임.
도 15[표 3-4]는 칼럼을 하나 추가할 때 분기되는 부분을 나타내주는 Component임.
도 16[표 3-5]은 행을 하나 삭제 할 때 분기 되는 부분을 나타내주는 Component임.
도 17[표 3-6]은 칼럼을 하나 삭제 할 때 분기 되는 부분을 나타내주는 Component임.
도 18[표 3-7]은 마우스로 Column이나 Row를 선택 한 후 사이즈를 늘리거나 줄일 때 처리 해 주는 부분을 나타내주는 Component임.
도 19[표 3-8]는 표 합치기를 할 때 합쳐진 부분의 위치를 계산함과 동시에 합치는 부분의 칼라를 바꿔주는 Component임.
도 20[그림 4-1]부분은 XML문서를 작성할 때 나타나는 Tree를 DOM 형식으로 나타낸 부분임.
도 21[표 4-1]은 도 20{그림4-1]의 tree를 나타내기 위한 코딩을 보여줌 (Element의 Type별로 icon을 변경 해가며 나타냄).
도 22[그림 5-1]는 텍스트의 예시임.
도 23[표 5-1]은 도 22[그림 5-1]의 텍스트를 표시하기 위하여 태그와 데이터의 색깔을 구별해가며 나타내 주는부분으로 Paint하는 Component임.
도 24[표 5-2]는 태그의 위치를 찾아 내어 색깔을 파란색과 빨간색으로 분리하여 그려주는 Component임.
도 25[표 5-3]는 도 20[그림 4-1]에서 Tree 구조중 하나의 노드를 선택하게 되면, 도 22[그림 5-1]의 태그이름과 같은 곳으로 이동하게 되는데, 그것을 처리하게 해주는 부분의 코딩임.
도 26[그림 6-1]은 자동으로 XSL문서를 생성 시키면, 그 문서의 내용을 읽어 들여 태그에 대한 내용을 자동으로 색깔을 지정하며 내용을 보여주는 Component임.
도 27[표 6-1]은 도 26[그림 6-1]의 내역을 copy하거나 선택을 할 때 선택된 부분의 위치 체크 및 copy 및 past 할 준비 단계를 표시해주는 Component임.
도 28[표 7-1]은 XML 문서를 만들기 위해서 분기되는 부분으로서, 디자인 창에서 작성된 내역을 읽어 들여 Tag값을 축출하는 부분의 Component임.
도 29[표 7-2]는 XSL 문서를 만드는 곳으로서, 디자인에서 칼라와 들여쓰기 정렬 등을 정의하면 그런 내용을 체크하여 w3c의 기본을 체크해가며 XSL 문서를 자동으로 생성 시켜주는 Component임.
도 30[그림 8-1]은 DTD를 정의 할 때 정의된 내역대로 Tree에서 Attribute 및 Type을 자동으로 그려주는 Component임.
도 31[표 8-1]은 DTD를 정의 할 때 도 30[그림 8-1]과 같이 그려주는 루틴으로 icon 과 연결 관계를 자동으로 그려 주는 부분의 Component임.
도 32[그림 9-1]는 DTD design 창에서 작성된 내역을 Text형식으로 보기 좋게 보여주는 부분의 Component임.
도 33[표 9-1]은 도 32[그림 9-1]의 Text를 표시하는 부분으로 자동으로 칼라를 지정하여 표시하여 주는 source 코드임.
도 34[그림 10-1]는 XML 및 XSL 디자인 창에서 작성된 내역을 explorer에서 보는것과 동일하게 보여주는 것을 나타내는 예시임.
도 35[그림 11-1]는 XML 및 XSL을 만들기 위해 디자인 하는 곳을 나타내주는 그림 (Element 및 표 Component를 이용하여 디자인한다 텍스트와 글자 폰트 및 이미지를 편집할 수 있으며, Copy 및 Past를 지원하여 워드 및 아래 한글의 텍스트를 copy해서 넣을 수 있다).
일반적으로 하나의 문서는 크게 논리적 구조와 물리적 구조그리고 배치적 구조를 가지고 있다.
(문서의 구조 : 논리 구조, 물리 구조, 배치 구조)
문서의 논리적 구성이란 문서 내에 어떠한 요소들이 어떠한 순서로 표현됐는지를 나타낸다. 위의 예에서는 일반적으로 팩스가 가지는 논리적 정보의 흐름을 표시해 주는 것이다.
반면에, 문서의 물리적 구조라함은 그 문서에 실제로 가지고 있는 내용이 된다.
여기서는 수신자, 발신자의 이름, 전화번호, 사무실 이전 등이 그 문서의 물리적 구조를 이룬다.
문서의 배치적 구조라 함은 이를 어떻게 하나의 문서로 표현하는가 하는 것이다. 즉, 문자의 폰트, 탭 간격, 줄 간격 등을 지정해 주는 것이다.
마크업은 '표시'이다. 즉, 어떤 문서 중에서 어떤 문장이나 단어가 어떠한 특성을 가지고 있다는 것을 표시해 주는 것이다. 그 방법은 일반적으로 HTML에서 보듯이 원하는 부분의 시작과 끝에 '<...>' 표시를 이요해 지정해 준다.
일반적으로 마크업은 절차적 마크업(Procedual Markup)과 일반화 마크업(Generalized Markup)으로 나눌 수 있다.
* 절차적 마크업 (Procedual Markup) : 문서의 배치구조를 분석, 처리
* 일반화 마크업 (Generalized Markup) : 문서의 논리구조를 분석, 처리
절차적 마크업이란 문서를 인쇄하거나 다른 방법으로 표현하기 위해 문서이 배치적 구조를 분석, 처리하는 것을 말한다. 절차적 마크업은 폰트, 줄간격 같은 문서의 형태만을 규정하기 때문에 소프트웨어나 하드웨어의 특성에 크게 좌우되고 서로간의 호환성이 없다.
일반화 마크업은 문서의 논리적 구조를 분석해 처리하기 위한 것이다. 논리적 구조의 마크업은 하드웨어나 소프트웨어의 종류에 영향을 받지않고 호환성을 유지할 수 있다.
XML은 HTML과 마찬가지로 하나의 문서 포맷이다. 그러나 XML은 특히 데이터를 보관하고 전송하기 위한 포맷이다. XML은 HTML과 마찬가지로 태그로 마크업을 하게 되지만 HTML과는 달리 개인이 지정할 수 있는 무수한 마크업이 가능하다. 즉, 일반화된 마크업(Generalized markup)을 지원하는 것이다.
XML에서 마크업은 HTML과 마찬가지로 시작태그(start tag) 끝태그(end tag)로 구성된다. 태그 사이에 있는 정보를 컨텐츠(contents)라고 한다. 하나의 엘리먼트(element)는 시작태그, 내용, 끝태그로 구성되어 있다. 경우에 따라서는 하나의 엘리먼트 안에 여러개의 다른 엘리먼드를 가질 수 있다.
XML은 텍스트 마크업을 지원한다. 즉, 한 줄의 문장 중에서 또 다른 새로운 태그를 지정할 수 있다는 것이다. 이것은 문장 중의 어떤 단어가 특별한 의미를 가지고 있을 때 지정된다.
Document Type Definition (DTD) 는 XML 도큐먼트의 특정 클래스를 기술하는 레퍼런스 파일이다. 요즈음 DTD의 구분은 SGML 스펙에서 파생된 특별한 문법을 사용하고 있다. XML은 DTD 사용하거나, 사용하지 않거나 데이터를 작성할 수 있다. "Valid XML"은 DTD를 참조하는 XML 데이타를 참조하고, "Well-formed XML"은 DTD를 사용하지 않는 XML 테이터를 참조한다. Well-formed XML의 추가는 XML과 SGML간의 기본적인 차이점 중의 하나이다.
XML 스키마는 XML데이타의 요소와 구조 관계를 기술하는데 있어서, 보완적이고, 풍부하고, 좀더 확정된 방법을 제공하는 XML의 향상된 면이다. 스키마는 XML DTS와유사하다. 그러나 문법으로 XML 자신을 사용하는 점에서 다르다.
네임스페이스는 XML의 다른 향상된 특징이다. 이것은 W3C에 아우트라인으로 제출된 XML 1.0 스펙에 포함되어 있다.
XML은 구조화된 XML 데이타를 HTML로 매핑시키는 규칙을 정의한 Stylesheet 언어이다. 이런한 규칙들의 그룹이 Stylesheet를 정의한다. XSL를 가지고 개발자들은 원래 데이타 구조와 다른 프리젠테이션 구조를 생성할 수 있다. XSL은 CSS와 호환성이 있고, CSS가 다룰 수 없는 것을 다룰 수 있도록 설계되었다. XSL은 Document Style Semantics and Specification Language (DSSSL) 에서 파생되었다. DSSSL은 SGML 위원회에 뿌리를 둔 복잡한 Stylesheet 언어이다.
XSL의 구문은 CSS와는 다르다. XSL은 단순한 XML 데이타를 디스플레이하는데 사용될 수 있지만 XML에서 생성되는 모든 경우를 다룰 만큼 충분하지는 못하다. XSL은 이러한 경우를 다룰 수 있는 기능을 추가하였다. 예를 들어 CSS는 새로운 아이템이나 생성된 텍스트를 추가할 수 없지만 XSL은 할 수 있다.
본 발명은 이처럼 유용한 XML을 쉽게 활용하기 위한 에디터인 바, 다음과 같은 요소들로 구성되어 있다.
1. XML Engine 2. Element Component 3. 표 Component
4. XML-Tree View Component 5. XML Editor Component
6. XSL Editor Component 7. XML 및 XSL 문서 자동 생성
8. DTD-Tree View Component 9.DTD Editor Component
10. explorer View 11. Designer
이하 각 요소들에 대하여 설명한다.
1.XML Engine
[표 1-1]은 [그림 1]에서 icon을 클릭할 때, 이 부분으로 분기하여 XML Builder에 대한 모든 처리기능을 대신 처리 하여 주는 Component다.
대부분의 처리는 [표 1-2]와 같은 기능으로 처리 된다.
[표1-2]는 XML Editor폼의 창으로 메시지 처리를 하여 XSL 및 XML 문서를 만들기 위한 Design을 자동으로 처리하게 해 준다.
Engine에서의 모든 처리는 [표 1-2]와 동일하게 되어 있다.
2. Element Component
[그림 2-1]은 실질 적인 Data를 표시 하기위한 곳으로서 속성을 정의 하거나 타입을 정의 하는 곳 이다.
[표 2-1]은 Component를 처음 생성할 때 표시 해 주는 부분으로 Element안에 또 다른 Element나 표를 삽입 할 수 있으므로 체크하여 Element인지 표인지를 표시하여 그려준다.
[표 2-2] 부분은 Component Type이 어떤 것이냐에 따라 표시 해주는 그림을 달리 표시 하기 위한 부분이다.
[표 2-3]은 DTD를 표시 할 때 Repetition Operation의 표기 방식대로 표시 하기 위하여 체크 한 후 Element에 자동으로 보여 준다.
[표 2-4]는 마우스로 Element나 표를 Element의 자식으로 포함 시킬 때 사이즈 및 위치를 자동으로 산출하여 위치시키는 곳이며, 이 처리가 끝난 후 XMLEngine에 메시지를 보내주어 어떤 처리가 이루어 지는지를 알려준다.
[표 2-5]는 Element를 복사하는 부분인데, 워드의 복사기능과 비슷한 부분으로서, 같은 Element를 복사하여 사용할 때 Copy를 하면 이 부분으로 분기하여 처리 하여 준다.
[표2-6]은 [표 2-5]에서 Copy한 내용을 붙여넣는 기능으로 Past 하면 이곳으로 분기 하여 처리 하여 준다.
3.표 Component
[그림 3-1]은 양식을 그리기 위한 Component로서, 워드나 아래 한글의 표 만들기 기능과 같다. HTML에서 Table을 표시하기 위한 Component이다. 기능은 분할 및 합치기, Element 포함 및 다중 표 삽입이 가능 하다.
[표 3-1]은 표를 가리키는 곳으로 옵션에 따라서 그리는 내역이 변경된다. 표에 대한 그림이 그려진 후에 그 안에 들어가는 Element을 그려준다.
[표 3-2]는 마우스가 표의 안에서 움직일 때 마우스의 위치에 따라 현재의 Column의 위치를 기억하고 있다가 합치기나 분할을 할 때 좌표값으로 활용 한다.
[표 3-3]는 [표 3-2]과 같은 기능으로 좌표의 Row값의 위치를 기억하는 루틴 이다.
<실시례>셀 나누기
다음 소스에 의하여 표의 셀을 세로 및 가로로 자유로이 나눌 수 있다.
else if (Sender as TMenuItem).Caption = '셀 나누기' then
begin
{ Row와 Col이 합쳐졌는지를 확인 하는 루틴 }
DivRowColCheck;
DivsionCheck := '0';
DivsionForm := TDivsionForm.Create(Self);
// 현재 저장된 내역을 소팅 시킨다.
....
{중간 생략}
{ 셀을 세로로 분할 합니다. }
if DivsionCheck = '2' then
begin
if (FSelectedCol > -1) and (FSelectedRow > -1) then
begin
if DivColString.Count = 0 then
begin
DivsionStart := Columns[FSelectedRow].PyoRows[FSelectedCol].Position;
DivsionAvg := ((Columns[FSelectedRow].PyoRows[FSelectedCol+1].Position -
Columns[FSelectedRow].PyoRows[FSelectedCol].Position) div DivsionCount);
{ 모든 Row에 대하여 똑같이 적용하되 나누는 Cell외에는 Column을 전부 Visible 시킨다. }
for L := 0 to Columns.Count -1 do
begin
{ 여러개로 분할 하였을경우를 위해 그 갯수만큼 추가 한다. }
for i := 1 to DivsionCount -1 do
begin
TempPyoRow :=self.Columns[L].PyoRows.Insert(FSelectedCol+i);
TempPyoRow.Position := DivsionStart + (i*DivsionAvg);
if (L <> FSelectedRow) then
begin
TempPyoRow.ColVisible := False;
end;
if DivRowString.Count > 0 then
begin
if (StrToInt(DivRowString.Strings[0]) <= L) and (StrToInt(DivRowString.Strings[(DivRowString.Count-1)]) >= L) then
begin
if (StrToInt(DivRowString.Strings[0]) <> L) then TempPyoRow.RowVisible := False;
TempPyoRow.ColVisible := True;
end;
end;
if (Columns[L].PyoRows[FSelectedCol+i+1].RowVisible =False) then
begin
TempPyoRow.RowVisible := False;
end;
end;
end;
end
else
begin
if DivRowString.Count > 0 then
begin
for L := 0 to DivRowString.Count -1 do
begin
for i := 0 to DivsionCount -2 do
begin
Columns[StrToInt(DivRowString.Strings[L])].PyoRows[StrToInt(DivColString.Strings[i])].ColVisible := True;
end;
end;
end
else
begin
for i := 0 to DivsionCount -2 do
begin
Columns[FSelectedRow].PyoRows[StrToInt(DivColString.Strings[i])].ColVisible := True;
end;
end;
end;
end;
end
{ 셀을 가로로 분할 합니다. }
else if DivsionCheck = '1' then
begin
if (FSelectedCol > -1) and (FSelectedRow > -1) then
begin
if DivRowString.Count = 0 then
begin
FSelectedRow := FSelectedRow +1;
//================================================
// 이부분은 Function으로 빼낸다.
//================================================
FDistR := abs(Font.Height)*2;
DivsionStart := Columns[FSelectedRow].Position;
{ 추가하는 행만큼 뒤로 민다. }
for i := FSelectedRow to Columns.Count-1 do
begin
Columns[i].Position := (Columns[i].Position + (FDistR* (DivsionCount-1)));
end;
Height := Height + (FDistR* (DivsionCount -1));
R := FSelectedRow*FDistR;
{ 추가하는 행의 Element의 위치를 추가하는 행의 크기만큼 뒤로 민다. }
for i := 0 to Self.ControlCount - 1 do
begin
{ 현재 체크하는 사항이 Element일때.. }
if (Self.Controls[i] is TDTDElement) then
begin
TempElement := (Self.Controls[i] as TDTDElement);
if R < TempElement.Top then
begin
TempElement.Top := TempElement.Top + (FDistR* (DivsionCount-1));
end;
end
{ 현재 체크하는 사항이 표 일때.. }
else if (Self.Controls[i] is TStylePyo) then
begin
TempStylePyo := (Self.Controls[i] as TStylePyo);
if R < TempStylePyo.Top then
begin
TempStylePyo.Top := TempStylePyo.Top + FDistR;
end;
end;
end;
//================================================
// 만약 Row가 분할된 영역을 다시 분할할 경우 그 수 만큼만 분할하도록 한다.
for i := 0 to DivsionCount -2 do
begin
TempPyoColumn := self.Columns.Insert(FSelectedRow+i);
TempPyoColumn.Position := (FDistR * i) + DivsionStart;
for j := 0 to Columns[FSelectedRow+i+1].PyoRows.Count -1 do
begin
TempPyoRow := self.Columns[FSelectedRow+i].PyoRows.Add;
TempPyoRow.Position := Columns[FSelectedRow+i+1].PyoRows[j].Position;
if (j <> (FSelectedCol+1)) and (j <> 0)then
begin
TempPyoRow.RowVisible := False;
end;
if Columns[FSelectedRow-1].PyoRows[j].ColVisible = False then begin
TempPyoRow.ColVisible := False;
if DivColString.Count > 0 then
begin
if (StrToInt(DivColString.Strings[0]) <= j) and (StrToInt(DivColString.Strings[(DivColString.count-1)]) >= j) then
TempPyoRow.RowVisible := True;
end;
end;
if DivColString.Count > 0 then
if (j > 0) then
begin
if TempPyoColumn.PyoRows[j-1].ColVisible = False then
begin
if (StrToInt(DivColString.Strings[0]) <= j) and ((StrToInt(DivColString.Strings[(DivColString.count-1)]) +1) >= j) then
TempPyoRow.RowVisible := True;
end;
end;
end;
end; // for i := 0 to DivsionCount -2 do
end
else
begin
for i := 1 to DivsionCount -1 do
begin
begin
Columns[StrToInt(DivRowString.Strings[i])].PyoRows[FSelectedCol+1].RowVisible := True;
end;
end;
end;
end;
end;
end
else if (Sender as TMenuItem).Caption = '행 추가' then
begin
if (FSelectedCol > -1) and (FSelectedRow > -1) then
begin
FDistR := abs(Font.Height)*2;
{ 추가하는 행만큼 뒤로 민다. }
if (FColCount > 0) then FDistC := Width div FColCount;
for i := FSelectedRow to Columns.Count-1 do
begin
Columns[i].Position := Columns[i].Position + FDistR;
end;
Height := Height + FDistR;
R := FSelectedRow*FDistR;
{ 추가하는 행의 Element의 위치를 추가하는 행의 크기만큼 뒤로 민다. }
for i := 0 to Self.ControlCount - 1 do
begin
{ 현재 체크하는 사항이 Element일때.. }
if (Self.Controls[i] is TDTDElement) then
begin
TempElement := (Self.Controls[i] as TDTDElement);
if R < TempElement.Top then
begin
TempElement.Top := TempElement.Top + FDistR;
end;
end
{ 현재 체크하는 사항이 표 일때.. }
else if (Self.Controls[i] is TStylePyo) then
begin
TempStylePyo := (Self.Controls[i] as TStylePyo);
if R < TempStylePyo.Top then
begin
TempStylePyo.Top := TempStylePyo.Top + FDistR;
end;
end;
end;
TempPyoColumn := self.Columns.Insert(FSelectedRow);
TempPyoColumn.Position := FSelectedRow*FDistR;
{ 처음 생성시킬때의 Default값을 Collection 및 Collection Item에 생성 시킨다. }
for j := 0 to Columns[FSelectedRow+1].PyoRows.Count-1 do
begin
TempPyoRow := self.Columns[FSelectedRow].PyoRows.Add;
TempPyoRow.Position := Columns[FSelectedRow+1].PyoRows[j].Position;
TempPyoRow.ColVisible := Columns[FSelectedRow+1].PyoRows[j].ColVisible;
TempPyoRow.RowVisible := Columns[FSelectedRow+1].PyoRows[j].RowVisible;
end;
{ 행을 추가하고 난다음은 빌려쓴 Property를 원상태로 돌려 놓는다 }
RowCount := RowCount + 1;
FSelectedCol := -1;
FSelectedRow := -1;
end;
위 소스는 표의 셀을 세로 및 가로로 자유로이 나누는 부분을 표시 하고 있다.
[표 3-4]는 칼럼을 하나 추가 할 때 분기 되는 부분이다.
[표 3-5]는 행을 하나 삭제 할 때 분기 되는 부분이다.
[표 3-6]는 칼럼을 하나 삭제 할 때 분기 되는 부분이다.
[표 3-7]은 마우스로 Column이나 Row를 선택 한 후 사이즈를 늘리거나 줄일 때 처리 해 주는 부분이다.
[표 3-8]은 표 합치기를 할 때 합쳐진 부분의 위치를 계산함과 동시에 합치는 부분의 칼라를 바꿔준다.
4. XML-Tree View Component
[그림 4-1]부분은 XML문서를 작성할 때 나타나는 Tree를 DOM 형식으로 나타낸 부분인데, [표 4-1]와 같이 코딩을 하여 Element의 Type별로 icon을 변경 해 가며 나타내는 부분이다.
5. XML Editor Component
[표 5-1]은 [그림 5-1]의 텍스트를 표시하기 위하여 태그와 데이터의 색깔을구별해 가며 나타내 주는 부분으로 Paint 하는 부분이다.
[표 5-2]는 태그의 위치를 찾아 내어 색깔을 파란색과 빨간색으로 분리하여 그려 준다. [그림 5-1]의 태그의 색깔이 붉은 색과 파란이 나타나게 되는 것은 이 부분에서 처리 하였기에 같은 창에서도 파란색과 붉은 색으로 나타나게 된다.
[표 5-3]은 [그림 4-1]에서 Tree 구조중 하나의 노드를 선택하게 되면 [그림 5-1]의 태그 이름과 같은 곳으로 이동하게 되는데, 그것을 처리하게 해주는 부분의 코딩이다.
6.XSL Editor Component
[그림 6-1]은 자동으로 XSL문서를 생성 시키면, 그 문서의 내용을 읽어 들여 태그에 대한 내용을 자동으로 색깔을 지정하며 내용을 보여 준다.
[표 6-1]은 [그림 6-1]의 내역을 copy하거나 선택을 할 때 선택된 부분의 위치 체크 및 copy 및 past 할 준비 단계를 표시 한다.
7.XML 및 XSL 문서 자동 생성
[표 7-1]은 XML 문서를 만들기 위해서 분기되는 부분으로서, 디자인 창에서 작성된 내역을 읽어 들여 Tag값을 축출하는 부분으로 만약 제일 하위로드 까지 내려 왔다면은 재귀호출 함수를 이동하여 만들어 나간다.
[표 7-2]은 XSL 문서를 만드는 곳으로서, 디자인시 칼라와 들여쓰기 정렬등을 정의 했을 때 그런 내용을 체크하여 w3c의 기본을 체크해가며 XSL 문서를 자동으로 생성 시켜 준다.
8. DTD-Tree View Component
[그림 8-1]은 DTD를 정의 할 때 정의된 내역대로 Tree에서 Attribute 및 Type을 자동으로 그려준다.
[표 8-1]은 DTD를 정의 할 때 [그림 8-1]과 같이 그려주는 루틴으로 icon 과 연결 관계를 자동으로 그려 주는 부분이다.
9. DTD Editor Component
[그림 9-1]은 DTD design 창에서 작성된 내역을 Text형식으로 보기 좋게 보여주는 부분 이며 Source는 [표 9-1]과 같다..
위의 [표 9-1]은 [그림 9-1]의 Text를 표시하는 부분으로 자동으로 칼라를 지정하여 표시 하여 준다.
10. explorer View
[그림 10-1]은 XML 및 XSL 디자인 창에서 작성된 내역을 explorer에서 보는것과 동일하게 보여준다.
11. Designer
[그림 11-1]은 XML 및 XSL을 만들기 위해 디자인 하는 곳으로서 Element 및 표 Component를 이용하여 디자인한다 텍스트와 글자 폰트 및 이미지를 편집할 수 있으며, Copy 및 Past를 지원하여 워드 및 아래 한글의 텍스트를 copy해서 넣을 수 있다.
본 발명이 제공하는 XML 문서작성 편집기는 기업의 각종 문서 설계 분야, DTD 문서 설계 분야, 공공 기관의 공문서 설계 분야, 전자 상거래 첨부 문서 설계 분야 등에서 활용될 수 있는 데, 다음과 같은 효과를 나타낸다.
1. 편리하고 강력한 편집기능
XML을 모르는 사람도 일반 편집기처럼 작성을 하면, 자동으로 XML 및 DTD , XSL을 만들어 주기 때문에 쉽게 문서를 작성을 할 수 있으며, 어떤 양식이든 표 기능의 Component를 이용하면 워드나 아래한글의 표 그리기의 기능과 동일한 형태의 양식을 만들 수 있다.
2. 빠른 Search 기능
[그림 4-1]의 XML Tree View에서 Item을 하나 선택하면 그것에 해당하는 XML View창으로 자동으로 이동하여 어떤 Data가 있는지를 바로 보여준다. 따라서 search 기능이 지극히 빠르다.
3.표준 지원
현재 W3C의 XML DTD XSL 표준을 정확히 지원한다.
4.정확한 XML 문서의 유효성 검사
Well Formed 및 Valid Form을 지원하며, 문서를 작성할 때 유효성 검사를 자체적으로 하기 때문에, 사용자는 아무런 문제없이 문서를 작성할 수 있다.

Claims (11)

  1. XML(eXtemsible Markup Language) 문서 작성을 위한 편집기에 있어서, XML Editor창의 초기화면에서 icon을 클릭하면 메시지 처리를 하여 XSL 및 XML 문서를 만들기 위한 Design을 자동으로 처리하게 해 주는 XML 엔진(engine)
  2. XML 문서작성을 위한 편집기에 있어서, 실질적인 Data를 표시하기 위하여 속성이나 타입을 정의할 수 있고, Element안에 또 다른 Element나 표를 삽입 할 수 있으며, Component Type이 어떤 것이냐에 따라 표시해주는 그림을 달리 표시할 수 있고, DTD를 표시할 때 Repetition Operation의 표기방식대로 표시하기 위하여 체크한 후 Element에 자동으로 보여줄 수 있으며, 마우스로 Element나 표를 Element의 자식으로 포함시킬 때 사이즈 및 위치를 자동으로 산출하여 지정하여 줄 수 있고, Element를 복사할 수 있는 기능을 가지는 Element Component.
  3. XML 문서작성을 위한 편집기에 있어서, 분할 및 합치기와 Element 포함 및 다중표 삽입이 가능한 표(table) 만들기 기능의 Component.
  4. XML 문서작성을 위한 편집기에 있어서, XML문서를 작성할 때 나타나는 Tree를 DOM 형식으로 나타내주는 XML-Tree View Component.
  5. XML 문서작성을 위한 편집기에 있어서, 텍스트를 표시하기 위하여 태그와 데이터의 색깔을 구별해 가며 나타내 주는 XML Editor Component.
  6. XML 문서작성을 위한 편집기에 있어서, XSL문서를 생성시키면 그 문서의 내용을 읽어들여, 태그에 대한 내용을 자동으로 색깔을 지정하며 내용을 보여주는 XSL Editor Component.
  7. XML 문서작성을 위한 편집기에 있어서, DTD를 정의하면 정의된 내역대로 Tree에서 Attribute 및 Type을 자동으로 그려주고, icon 과 연결관계도 자동으로 그려 주는 DTD-Tree View Component.
  8. XML 문서작성을 위한 편집기에 있어서, DTD design 창에서 작성된 내역을 Text형식으로 보기 좋게 보여주고, Text를 표시하는 부분을 자동으로 칼라를 지정하여 표시하여 주는 DTD Editor Component.
  9. XML 문서작성을 위한 편집기에 있어서, XML 및 XSL 디자인 창에서 작성된 내역을 explorer에서 보는 것과 동일하게 보여주는 Explorer View Component.
  10. XML 문서작성을 위한 편집기에 있어서, Element 및 표 Component를 이용하여 디자인하되, 텍스트와 글자 폰트 및 이미지를 편집할 수 있고, Copy 및 Past를 지원하여 워드 및 아래 한글의 텍스트를 copy해서 넣을 수 있는 XML 및 XSL을 만드는 designer.
  11. 제1항의 XML 엔진(engine)과, 제2항의 Element Component과, 제3항의 표(table) 만들기 Component와, 제4항의 XML-Tree View Component와, 제5항의 XML Editor Component와, 제6항의 XSL Editor Component와, 제7항의 DTD-Tree View Component와, 제8항의 DTD Editor Component와 제9항의 Explorer View Component와, 제10항의 XML 및 XSL designer를 구성요소로 하는 XML 문서작성 편집기.
KR1020010000688A 2001-01-05 2001-01-05 엑스엠엘 문서 작성을 위한 편집기 KR20020057709A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020010000688A KR20020057709A (ko) 2001-01-05 2001-01-05 엑스엠엘 문서 작성을 위한 편집기

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020010000688A KR20020057709A (ko) 2001-01-05 2001-01-05 엑스엠엘 문서 작성을 위한 편집기

Publications (1)

Publication Number Publication Date
KR20020057709A true KR20020057709A (ko) 2002-07-12

Family

ID=27690927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020010000688A KR20020057709A (ko) 2001-01-05 2001-01-05 엑스엠엘 문서 작성을 위한 편집기

Country Status (1)

Country Link
KR (1) KR20020057709A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004012096A1 (en) * 2002-07-27 2004-02-05 Samsung Electronics Co., Ltd. Data managing apparatus and method for reproducing interactive digital content, and information storage medium therefor
KR100435005B1 (ko) * 2001-02-07 2004-06-11 주식회사 비트웹 와이들 웹 프레임 워크를 위한 인코딩 방법
US7200816B2 (en) * 2004-01-21 2007-04-03 Altova, Gmbh Method and system for automating creation of multiple stylesheet formats using an integrated visual design environment

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100435005B1 (ko) * 2001-02-07 2004-06-11 주식회사 비트웹 와이들 웹 프레임 워크를 위한 인코딩 방법
WO2004012096A1 (en) * 2002-07-27 2004-02-05 Samsung Electronics Co., Ltd. Data managing apparatus and method for reproducing interactive digital content, and information storage medium therefor
US7200816B2 (en) * 2004-01-21 2007-04-03 Altova, Gmbh Method and system for automating creation of multiple stylesheet formats using an integrated visual design environment

Similar Documents

Publication Publication Date Title
US7249316B2 (en) Importing and exporting markup language data in a spreadsheet application document
Tidwell XSLT: mastering XML transformations
US6675355B1 (en) Redline extensible markup language (XML) schema
US7096422B2 (en) Markup language visual mapping
US7721195B2 (en) RTF template and XSL/FO conversion: a new way to create computer reports
US7143344B2 (en) Transformation stylesheet editor
EP1376387A2 (en) Word-processing document stored in a single XML file
US20050060647A1 (en) Method for presenting hierarchical data
US20100205524A1 (en) Extensible stylesheet designs using meta-tag information
US7475337B1 (en) Generating structured documents by associating document elements in a first display with displayed document type definitions in a second display
US20090083300A1 (en) Document processing device and document processing method
EP1830274A1 (en) Server device and name space issuing method
US7404195B1 (en) Programmable object model for extensible markup language markup in an application
US20080005085A1 (en) Server Device and Search Method
Fernandez et al. XML query data model
KR20020057709A (ko) 엑스엠엘 문서 작성을 위한 편집기
US20090083620A1 (en) Document processing device and document processing method
KR20010088529A (ko) 전자문서 편집/변환처리장치와 그 방법
Vitali et al. Hypertext functionalities with XML
AU2003270989B2 (en) Method of Using Recommendations to Visually Create New Views of Data Across Heterogeneous Sources
Jacobs Foundation XML and E4X for Flash and Flex
Oikonomidis et al. XML ASSESSMENT USAGE REPORT
Beesley XML: Can XML Change the Way We Work?
AU2003270985A1 (en) Method for Presenting Hierarchical Data
AU2004237874A1 (en) Method for Specifying Data for the Assembly of a Document Set

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application