[go: up one dir, main page]

KR101247075B1 - 마크업 언어 데이터의 인코딩 - Google Patents

마크업 언어 데이터의 인코딩 Download PDF

Info

Publication number
KR101247075B1
KR101247075B1 KR1020087002661A KR20087002661A KR101247075B1 KR 101247075 B1 KR101247075 B1 KR 101247075B1 KR 1020087002661 A KR1020087002661 A KR 1020087002661A KR 20087002661 A KR20087002661 A KR 20087002661A KR 101247075 B1 KR101247075 B1 KR 101247075B1
Authority
KR
South Korea
Prior art keywords
macro
sequence
markup language
information
language information
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
KR1020087002661A
Other languages
English (en)
Other versions
KR20080043304A (ko
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 마이크로소프트 코포레이션
Publication of KR20080043304A publication Critical patent/KR20080043304A/ko
Application granted granted Critical
Publication of KR101247075B1 publication Critical patent/KR101247075B1/ko
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Machine Translation (AREA)
  • Information Transfer Between Computers (AREA)
  • Document Processing Apparatus (AREA)

Abstract

마크업 언어 문서는 수 개의 파라미터화된 매크로를 사용함으로써 압축 마크업 언어 형태로 변환된다. 파라미터화된 매크로는 적어도 하나의 파라미터를 취한다. 마크업 언어 문서를 압축할 때, 요소의 시퀀스는 매크로와 파라미터(들)에 대한 참조로 대체되는데 매크로가 파라미터와 같이 사용될 때 요소의 시퀀스가 도출된다. 매크로는 정적 사전으로부터 미리 정의된 것을 사용하거나, 작동 중에 생성된 것을 사용하거나, 둘을 혼합하여 사용할 수 있다. 매크로 정의는 압축 마크업 언어 정보의 수신자가 매크로 참조와 파라미터(들)을 대체된 요소의 시퀀스로 확장시키는 것을 허용하기 위해 압축 마크업 언어 정보 내에 포함될 수 있다.
마크업 언어, 매크로, 파라미터, 시퀀스, 데이터 요소, 태그 요소, 송신자, 수신자, 압축, 정적 사전, 인코딩, 디코딩, 전송

Description

마크업 언어 데이터의 인코딩{ENCODING OF MARKUP-LANGUAGE DATA}
네트워크를 통해 송신자(sender)와 수신자(recipient)(예: 서버와 클라이언트) 간에 데이터가 전송될 때, 송신자와 수신자 양쪽 모두 전송이 일어나기 전에 전송될 데이터의 형식(format)을 알고 있어야 한다. 예를 들어, 만일 송신자가 데이터를 특정 데이터베이스 형태로 송신하면, 수신자는 데이터를 사용하기 위해서 사용된 데이터베이스 형식이 무엇인지 알아야 하고 그 형식에 대한 세부 항목(detail)을 알아야 한다. 만일 수신자가 어떤 형식이 사용되었는지 또는 그 형식의 세부 항목을 모른다면, 송신자단(sender's end)에서 정확하게 전송된 데이터가 수신자단(recipient's end)에서는 인식 불가능하게 될 것이다.
예를 들어, 데이터베이스 형식은 각각의 레코드(record)가 특정 크기의 레코드 숫자와 후속하는 특정 크기의 성(last name) 필드, 특정 크기의 이름(first name) 필드, 그리고 특정 크기의 날짜(date) 필드를 담고 있는 일련의 레코드를 포함할 수 있다. 이 레코드의 앞에 헤더(header)가 위치할 수 있다. 그러나 송신자가 형식에 완벽하게 충실하도록 데이터를 전송하더라도, 수신자가 형식을 모른다면 수신자가 데이터를 정확하게 이해하는 것이 불가능하다.
양쪽 모두 형식에 대한 필요한 정보를 가지는 것을 보장하기 위해서, 송신자와 수신자는 종종 동일한 애플리케이션일 뿐만 아니라 동일한 버전인 애플리케이션 을 실행시킬 필요가 있다. 예를 들어, 송신자가 새로운 버전의 데이터베이스 애플리케이션에서 얻은 데이터를 오래된 버전을 실행시키는 수신자에게 보냈다면, 수신자의 버전은 형식을 인식하지 못할 수 있고 데이터는 위에서 설명한 대로 무용(useless)하게 되거나 소실될 수 있다.
전송에 있어서의 유연성을 증가시키기고 상기 문제들을 해결하는 것을 돕기 위해서 확장성 마크업 언어(eXtensible Markup Language; XML), 표준 일반화된 마크업 언어(Standard Generalized Markup Language; SGML)을 기반으로 한 마크업 언어가 개발되었다. 마크업 언어는 내용(content)을 구조화된 방식으로 스타일, 문법, 그리고 의미 정보와 같은 메타콘텐츠(meta content)와 함께 제공하는 것을 허용하는 언어이다. XML이 확장성이라고 일컬어지는 이유는 고정된 형식의 마크업 언어가 아니기 때문이다. HTML(hypertext markup language)는 고정된 형식의 마크업 언어로서 하나의 형식을 정의한다. XML은 오히려, 실제로 메타형식(metaformat)의 마크업 언어이고 사용자가 다른 형식을 기술하는 것을 허용한다. 이는 사용자가 마크업 언어를 설계하고 그것을 XML 내에서 표현하는 것을 허용한다. 그러므로 XML은 형식에 있어서 유연성을 허용하는 유연한 표준화된 데이터 저장 형식을 제공하고, 따라서 엄격한 형식에 대한 사전 합의가 없는 경우에도 송신자와 수신자 간의 상호작용을 용이하게 할 수 있다. 이를 달성하기 위해서, XML은 (HTML)과 유사하게 텍스트 기반의 태그 시스템(text based tag system)을 사용하여 구조화된 방식으로 데이터를 저장하고 기술한다. 예를 들어, 고용인(employee) 레코드에 대한 데이터베이스 입력은 다음과 같은 XML 형식으로 표현될 수 있다:
<employee>
<firstname>John</firstname>
<lastname>Smith</lastname>
</employee>
상기 XML 데이터는 두 가지 요소(꺾음 괄호로 묶이는 태그 요소(예: "<firstname>" 과 같은 시작 태그와 "</firstname>"과 같은 종료 태그) 및 데이터 요소(예: John))를 포함한다. 표시된 바와 같이, XML 문서에서 시작과 종료 태그는 다른 시작과 종료 태그 사이에 내장될 수 있다. 특정 요소 사이에 위치하는 모든 요소의 시작과 종료 태그는 그 특정 요소의 종료 태그보다 앞에 위치하도록 해야 한다. 이는 트리 형태의 구조를 정의하게 된다.
상기의 예시 XML은 데이터 요소 "John"과 "Smith"를 포함하지만, 데이터 요소 "John"이 firstname 이고 lastmane "Smith"와 함께 employee 레코드의 일부가 된다는 것을 가리키는 정보 또한 (태그 요소 내에서) 포함한다. 만일 송신자가 이 XML 파일을 전송하면, XML을 인식하는 어떤 애플리케이션도 이 employee 레코드를 읽고 데이터를 추출하고 그 구성 요소를 이해하는 것이 가능할 것이다.
XML은 수신자가 어떤 파일 형식이 사용되는 것을 알고 파일 형식의 세부 항목을 알 것을 요구하지 않는 반면에, 단점이 있다. 먼저, 데이터를 기술하기 위해 사용된 대량의 태그 요소로 인해 송신될 파일이 매우 거대해진다. 사실 XML 파일의 크기는 일반 데이터 파일에 비해 평균 2~10배 클 수 있다. 이 큰 파일 크기로 인해 데이터를 송신하는데 걸리는 전송 시간이 느려지고, 더 긴 처리 시간이 요구 된다. 그래서, XML을 전송하고 소비(consume)하는데 드는 비용이 매우 비싸질 수 있다.
더 빠른 전송과 작은 파일 크기라는 이점과 경합하는 유연성이라는 이점의 균형을 맞추기 위하여, 이진 XML(binary XML)로 언급되는 특정 기법이 사용될 수 있다. 서로 다른 이진 XML 기법들이 관련 기법에 따라서 변화될 수 있다 하더라도 두 가지 특징은 각각의 이진 XML 형식 내에서 공통적이다.
첫째로, 이진 XML 형식은 문자 기반 값(character based values)이 아니라 이진 값(binary values)을 스트리밍 한다. 둘째로, 이진 XML 형식은 XML 태그를 더 짧은 토큰으로 대체(substitue)함으로써 XML 태그를 토큰화(tokenize) 한다. 예를 들어, 이진 XML 형식은 다음의 이진 표현을 위에서 표시된 태그에 할당할 수 있다:
1 : <employee>
2: </employee>
3: <firstname>
4: </firstname>
5: <lastname>
6: </lastname>
상기에 표시된 레코드는 그리고나서 다음과 같이 표현될 수 있다:
1 3 John 4 5 Smith 6 2
(상기에 표시된 숫자들은 이진 형태로 표현될 것이다; 들여 쓰기는 의미가 없지만 단지 마크업 언어 문서가 표시될 때 이해를 돕기 위해 사용되었다). 압축 파일 내의 텍스트 기반 태그(text based tag) 결과가 이와 같은 토큰 표현으로 대체되면 XML 파일의 크기는 원본 XML 파일의 크기의 1/4 또는 1/3이 될 수 있다. 태그의 토큰화는 어떤 미리 정의된(pre-defined) 토큰/태그 대체(수신자 송신자 양쪽 모두에 알려지고 "정적 사전(static dictionary)"으로 알려진)를 따르거나 전송된 파일의 일부로서 송신된 정의("동적 사전(dynamic dictionary)"으로 알려진 전송된 정의)에 따라 이루어진다.
비록 파일 크기가 더 작지만 이진 XML 기법에는 여전히 약점이 존재한다. 첫째로, 중복된 대체(redundant substitution)가 이 기법을 비효율적으로 만들 수 있다. 예를 들어, 만일 숫자가 비압축 XML 파일(uncompressed XML file) 내에서 태그로서 사용된다면 그것은 또 다른 숫자로 인코딩될 수 있고 그리고 디코딩되어야 하는데, 이진 XML을 사용할 때, 이는 공간을 절약하지 못하면서 인코딩/디코딩에 있어서는 비용이 된다. 게다가, 많은 태그가 반복되기 때문에, 이진 XML 기법이 사용될 때에도 데이터는 가장 작은 파일 크기로 완전히 압축되지 않는다. 하나의 XML 파일에 동일한 태그를 사용하는 많은 데이터 레코드가 담겨있는 경우가 이를 보여주는 경우이다. 이런 경우, <lastname> 과 같은 텍스트 기반의 태그가 인코딩시 숫자 값으로 대체될 수 있더라도 여전히 동일한 태그가 반복되는 사례가 많을 것이다.
따라서, 데이터를 더 효율적으로 그리고 더 작은 파일 크기로 인코딩하는 기법에 대한 필요성이 대두된다.
본 발명의 어떤 실시예에 따르면, 마크업 언어 문서는 적어도 하나의 파라미터화된 매크로(parameterized macro)를 사용하여 압축 마크업 언어(compacted markup language)의 형태로 변환될 수 있다. 매크로는 마크업 언어 문서 내에서 발견된 요소를 더 간결한 형태(more compact form)로 대체하는데 사용된다. 파라미터화된 매크로는 적어도 매크로에 대한 파라미터로서 주어진 소정의 파라미터 데이터를 포함하는 요소(태그 및/또는 데이터 요소)의 정열된 집합으로 확장된다. 이런 방식으로, 마크업 언어 데이터는 압축된다.
파라미터화된 매크로 정의(definition of parameterized macro)는 정적 사전 또는 동적 사전 중 어디에서든지 발견된다. 만약 정의가 동적 사전 내에 있으면 정의는, 어떤 실시예에서, 압축 마크업 언어 데이터와 함께 전송된다. 어떤 경우에는 매크로는 동적으로 정의된 매크로와 정적 사전 내에 정의된 추가적인 매크로 를 혼합하여 사용될 수 있다.
압축 마크업 언어 문서는 매크로 정의를 압축 마크업 언어 데이터에 담겨있는 매크로와 파라미터를 그것들이 나타내는 일련의 요소로 확장하기 위해 사용함으로써 비압축 마크업 언어 형태로 변환될 수 있다.
상기의 그리고 다른 실시예들은 아래에 더 충실하게 기술되어 있다.
후술할 바람직한 실시예의 상세한 설명뿐만 아니라 전술한 발명의 상세한 설명은 첨부된 도면과 함께 읽을 때 더 잘 이해될 것이다. 본 발명을 설명할 목적으 로, 본 발명의 예시적인 형성이 도면에 도시되어 있다; 그러나 본 발명은 개시된 특정한 방법이나 수단에 한정되지 않는다.
도 1은 본 발명의 특징이 구현될 수 있는 예시적인 컴퓨팅 환경의 블록도를 도시하는 도면.
도 2는 본 발명이 구현될 수 있는 예시적인 시스템의 블록도를 도시하는 도면.
도 3은 마크업 언어 정보를 인코딩하는 방법의 흐름도를 도시하는 도면.
도 4는 본 발명의 일 실시예에 따라 전송을 위하여 마크업 언어 정보를 준비하는 시스템을 도시하는 도면; 및
도 5는 본 발명의 일 실시예에 따라 압축 마크업 언어 문서를 디코딩하는 것을 서술한 흐름도를 도시하는 도면.
예시적인 컴퓨팅 환경( Exemplary Computing Enviroment)
도 1은 본 발명의 특징이 구현될 수 있는 예시적인 컴퓨팅 시스템 환경을 보여준다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것이 아니다. 컴퓨팅 환경(100)이 예시적인 컴퓨팅 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성 에서 동작할 수 있다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 임베디드 시스템, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크 또는 기타 데이터 전송 매체를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시되도록 설계된다. 분산 컴퓨팅 환경에서, 프로그램 모듈과 기타 데이터는 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 처리 장치(120)는 멀티 스레디드 프로세서(multi-threaded process) 상에서 지원되는 것들과 같은 다중 논리 처리 장치를 나타낼 수 있다. 시스템 버스(121) 는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 통신 장치 중에서 점단위 연결, 스위칭 조직 등으로 구현된다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반 송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하 거나 그로부터 판독을 하는 하드 디스크 드라이브(140), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 도시한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해,운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사 본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 일반적으로 마우스, 트랙볼(trackball) 또는 터치 패드를 가리키는 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(20)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 비록 도 1에는 메모리 저장 장치(181)만이 도시되어 있다 하더라도 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 메모리 장치(180)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
컴퓨팅 환경(100)은 통상적으로 적어도 컴퓨터 판독가능 매체의 어떤 형태를 포함한다. 컴퓨터 판독가능 매체는 컴퓨팅 환경(100)에 의해 액세스 가능한 임의의 매체일 수 있다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체와 통신 매체를 포함할 수 있지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨팅 환경(100)에 의해 액세스 되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
파라미터화된 매크로를 사용하여 마크업 언어 문서를 인코딩하기
도 2를 참조하면, 본 발명이 구현될 수 있는 예시적인 시스템은 송신자(210), 네트워크(220), 수신자(230)를 포함한다. 송신자(210)와 수신자(230)는 사설망(예:LAN) 및/또는 공중망(예:인터넷)으로 구성될 수 있는 네트워크(220)을 통해 연결된다. 본 발명의 하나의 실시예에서, 송신자(210)는 전송을 위해 마크업 언어 문서를 하나 이상의 파라미터화된 매크로를 사용하여 압축한다. 본 발명의 한 실시예에서, 수신자(230)는 압축 마크업 언어 문서를 수신하고 사용을 위해 문서의 압축을 풀기 위해(uncompress) 압축 문서 내에서 참조되는 하나 이상의 파라미터화된 매크로를 사용한다. 매크로는 일반적으로 시퀀스(sequence)를 생성하는 데 파라미터를 어떻게 사용하는지에 대한 정보를 포함한다. 매크로의 유형(type)에는 어떤 제한도 없는 것으로 해석되며 제한 없이, 단순히 파라미터가 시퀀스를 생성하는데 어떻게 사용되는지를 보여주는 정의를 담고 있는 간단한 매크로가 고려된다. 부가적으로, 수행가능한 매크로(예를 들어 실행 될때 시퀀스가 도출되는 코드로서 표현되거나, 그런 코드를 포함하는 매크로)가 고려된다.
어떤 실시예에서는, 전송을 위해 마크업 언어 정보는 적어도 하나의 파라미터화된 매크로를 사용하여 인코딩될 수 있는 (태그 요소와 데이터 요소를 포함하는) 시퀀스를 식별함으로써 인코딩될 수 있다. 도 3은 마크업 언어 정보를 인코딩하는 방법의 흐름도이다. 도 3에 도시된 것처럼, 첫 번째 단계(310)에서, 마크업 언어 문서 내의 시퀀스에 대응하는 파라미터화된 매크로가 선택된다. 선택된 파라미터화된 매크로는 시퀀스로부터 얻은 데이터 요소를 포함하는 하나 이상의 파라미터를 취하는 것이고 상기 매크로가 파라미터(들)와 같이 사용될 때 시퀀스가 도출된다. 두 번째 단계(320)에서, 마크업 언어 정보 내의 시퀀스는 매크로와 파라미터에 대한 참조(reference)로 대체된다(마크업 언어 정보 내의 시퀀스를 매크로와 매크로에 대한 파라미터의 참조로 대체한다).
단계(310)에서, 매크로의 선택은 이미 존재하는 매크로의 그룹으로부터 매크로를 선택하는 것이 될 수 있다. 예를 들어, 송신자가 알고 있고 수신자도 알고 있는 것으로 가정한 정적 사전은 선택된 매크로의 출처(source)가 될 수 있다. 선택적으로, 매크로의 선택은 시퀀스에 대응하기 위해서 발생할 수도 있다. 예를 들어, 만일 마크업 언어 정보가 오직 데이터 요소에서만 차이가 나는 수 개의 유사한 시퀀스를 담고 있다면, 파라미터가 되는 데이터 요소와 함께 사용될 때 정확한 시퀀스를 생성하는 매크로가 생성될 수 있다. 이런 경우, 이런 매크로는 이런 각각의 시퀀스를 대체하는데 (시퀀스를 정확하게 생성하는 각기 다른 파라미터와 함께) 사용될 수 있다.
매크로가 정적 사전의 일부가 아니라 새로 생성된 어떤 실시예에서는 매크로 정의는 전송되는 압축 마크업 언어 정보 내에 포함될 수도 있다. 더 일반적으로, 수신자가 마크업 언어 정보를 확장할 필요가 있는 임의의 매크로에 대한 정의는 압축 마크업 언어 정보의 부분으로서 포함될 수 있다. 선택적으로 그런 정의는 다른 방법으로 수신자에게 제시될 수 있다. 예를 들어, 개별 사전 파일이 수신자에게 제시될 수 있다. 예를 들어, 만일 많은 마크업 언어 파일들이 압축되었으며, 수신자가 이용 가능한 정적 사전에 포함되지 않는 매크로의 공통 집합(common set of macros)이 사용되었다면, 매크로의 공통 집합은 수신자에게 오직 한 번만 전송되면 된다. 매크로의 공통 집합의 수신자로의 전송은 개별 사전 파일이나 단지 압축 파일 중의 하나의 형태로 이루어지면 충분하다. 이 방법으로, 동일한 매크로 정의의 다수의 복사본이 전송될 필요 없이 수신자는 사용된 매크로에 대한 정보를 가지게 될 것이다. 이런 매크로 정의 개시 기법들은 상호 배타적이 아니라 적절하게 함께 사용될 수 있다.
단계(310)과 (320)은, 화살표(325)에 의해 도시되듯이, 수 개의 시퀀스가 대체되어가면서 반복적으로 수행될 수 있다. 화살표(325)는 이 반복이 모든 실시예에서 나타나지는 않기 때문에 점선으로 도시되었다. LZW(Lempei Ziv Welch) 알고 리즘의 변종(variation)과 같은 무손실 데이터 압축 알고리즘(lossless data compression algorithm)은 데이터로부터 어떤 시퀀스를 압축할지 또는 어떻게 더 나은 압축을 제공할 매크로를 생성할지를 결정함으로써 이 절차를 용이하게 한다.
대체된 초기 시퀀스가 마크업 언어의 요소로 구성되어 있는 반면에, 반복이 계속됨에 따라, 압축 마크업 언어 정보는 매크로 참조를 포함할 것이다. 이런 매크로 참조은 매크로 참조에 의해 대체될 시퀀스 내에 포함될 수도 있다. 도 3에 도시된 바와 같이 파라미터화된 매크로와 더불어, 파라미터화되지 않은(nonparameterized) 매크로 또한 마크업 언어 정보를 압축하는데 사용될 수 있다. 부가적으로 마크업 언어 정보를 더 압축하는데 토큰화가 사용될 수도 있다. 토큰화는 시퀀스를 매크로 참조와 파라미터로 대체하는 절차 전이나 후에 일어날 수 있다.
압축 절차의 예로서, 다음의 마크업 언어 데이터를 고찰한다:
<file>
<record>
<firstname> John </firstname>
<lastname> Adams </lastname>
<birthyear> 1735 </birthyear>
<inauguration_year> 1797 </inauguration_year>
</record>
<record>
<firstname> John </firstname>
<lastname> Hancock </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Thomas </firstname>
<lastname> Paine </lastname>
<birthyear> 1737 </birthyear>
</record>
<record>
<firstname> Patrick </firstname>
<lastname> Henry </Iastname>
<birthyear> 1735 </birthyear>
</record>
</file>
(들여쓰기는 이 예에서 의미가 없지만, 이해를 돕기 위해서 제공되었다.) 이 파일은 이름(firstname), 성(lastname), 생년(birthyear)을 각각 함유하고 있는네 개의 레코드를 포함하고 있다. 아울러, 한 레코드는 취임년도( augration_year)를 가지고 있다. 한 예에 있어서는, 단계(310)에서, 시퀀스: "<record> <firstname> John </firstname> <lastname> Adams </lastname> <birthyear> 1735 </birthyear>" 에 대응하는 매크로가 선택되었다. 이 매크로 M1이 파라미터 p1,p2,p3 와 함께 사용될 때 "<record> <firstname> p1 </firstname> <lastname> p2 </lastname> <birthyear> p3 </birthyear>"가 도출된다. 이 매크로는 존재하던 매크로일 수도 있고 적용하기 위해 고유하게 창작된 것일 수도 있다. p1이 "John", p2가 "Adams" 그리고 p3이 "1735" 일 때, 매크로에서 정확한 시퀀스가 도출된다. 단계(320)에서, 시퀀스는 마크업 언어 정보 내에서 매크로 참조와 파라미터 정보로 대체된다. 따라서 수정된(revised) 마크업 언어 정보는:
<file>
M1 John Adams 1735
<inauguration_year>1797</inauguration_year>
</record>
<record>
<firstname>John</firstname>
<lastname>Hancock</lastname>
<birthyear> 1737</birthyear>
</record>
<record>
<firstname>Thomas</firstname>
<lastname>Paine</lastname>
<birthyear>1737</birthyear>
</record>
<record>
<firstname>Patrick</firstname>
<lastname>Henry</lastname>
<birthyear>1735</birthyear>
</record>
</file>
이 매크로 M1은 또한 다른 세 곳의 장소(<record>로 시작되고 </birthyear> 로 끝나는 각각의 시퀀스)에서 대체를 위해 사용될 수 있다 . 세 번의 추가적인 대체 이후의 결과는:
<file>
M1 John Adams 1735
<inauguration_year>1797</inauguration_year>
</record>
M1 John Hancock 1737
</record>
M1 Thomas Paine 1737
</record>
M 1 Patrick Henry 1735
</record>
</file>
이다.
두 번의 추가적인 대체는 또 다른 매크로 M2를 사용하여 이루어지는데, M2가 파라미터 p4와 p5와 함께 사용되면 "M1 p4 p5 1737 </record>"가 도출된다. 이로써 압축 마크업 언어 정보가 다음과 같이 압축된다:
<file>
M1 John Adams 1735
<inauguration_year>1797</inauguration_year>
</record>
M2 John Hancock
M2 Thomas Paine
M1 Patrick Henry 1735
</record>
</file>
이 예시에서 마크업 언어 정보의 크기가 크게 감소하는 것을 볼 수 있다. 일반적으로, 처음에 마크업 언어 정보 내에 나타나는 반복된 시퀀스의 길이와 개수가 시퀀스를 매크로 참조로 대체하는 것의 이점과 직접적인 관련이 있다. 압축 마크업 언어 정보의 크기를 더 압축하기 위해 토큰화와 다른 기법들이 사용될 수 있다.
도 4는 본 발명의 일 실시예에 따라 전송을 위해 마크업 언어 정보를 준비하 는 시스템을 도시한다. 도시된 바와 같이, 시스템(400)은 매크로 저장 장치(macro storage; 410), 매크로 선택기(macro selector; 420), 그리고 시퀀스 대체기(sequence substituter; 430)를 포함한다. 매크로 저장 장치(410)는 마크업 언어 정보를 압축하는데 사용하기 위해 매크로를 저장한다. 매크로 선택기(420)는 마크업 언어 정보 내의 시퀀스를 매크로와 파라미터(들)의 참조로 대체하는데 사용하기 위해 매크로를 선택한다. 시퀀스 대체기(430)은 대체를 수행한다. 매크로 선택기(420)는 또한 매크로를 생성하고 그것을 매크로 저장장치(410) 안에 저장할 수 있고 그리고나서 시퀀스를 대체하는데 쓰기 위해 그 매크로를 선택할 수 있다. 매크로 저장 장치(410)에는 하나 이상의 정적 사전의 내용이 수록될 수 있다. 시퀀스 대체기(430)에 의해 이전에 대체된 매크로를 가진 시퀀스를 포함하는 수 개의 시퀀스가 시퀀스 대체기(430)에 의해 대체될 수 있다. 게다가, 일 실시예에서는, 수정된 마크업 언어 정보를 토큰화하기 위해 토큰화기(tokenizer)가 사용된다.
파라미터화된 매크로를 사용하여 마크업 언어 문서를 디코딩하기
압축 마크업 언어 정보를 디코딩하기 위하여, 압축 마크업 언어 정보 내에서 참조된 매크로 정의는 압축 마크업 언어 정보 내의 매크로 데이터(매크로 참조와 파라미터 참조(들))를 대체할 시퀀스를 생성하는데 사용된다. 도 5는 압축 마크업 언어 문서를 본 발명의 일 실시예에 따라 디코딩하는 것을 도시하는 흐름도이다. 도 5에 도시되어 있듯이, 단계(510)에서, 매크로 데이터(매크로 참조와 파라미터 참조(들))가 수신된다.
단계(520)에서, 참조된 매크로에 대한 매크로 정의를 얻는다. 매크로는 정 적 사전으로부터 얻을 수도 있다. 선택적으로 매크로는 압축 마크업 언어 문서 내에 포함된 소정의 정의로부터, 관련 데이터 파일로부터, 또는 어떤 다른 출처(source)로 부터 얻을 수도 있다.
단계(530)에서 매크로 정의가 적용되어, 단계(540)에서 결과 시퀀스가 도출되고, 상기 결과 시퀀스가 정보 내로 대체된다. 이 단계들은 대체를 통해 수 개의 매크로 참조의 압축을 풀기 위해 반복적으로 수행될 수 있다.
압축 마크업 언어 문서가 토큰화된 정보의 수신 단계(510)는 토큰화 하기전의 문서(pre-tokenized document)를 도출하기 위해 (토큰화 과정을 거꾸로 하는 효과가 있는) 토큰을 확장하는 단계를 더 포함한다.
단계(510),(520) 그리고 (530)은 수 개의 시퀀스가 대체되면서 반복적으로 수행될 수 있다. 패턴화되지 않은 매크로에 대한 참조가 압축 마크업 언어 문서 내에 나타나면, 패턴화되지 않은 매크로에 대한 참조 또한 매크로 정의에 따라 대체되어 확장된다.
디코더를 포함한 시스템은 인코딩된 문서를 디코딩하기 위하여 사용될 수 있다. 매크로는 마크업 언어 문서를 의도한 형태로 도출하기 위해 적용될 수 있기 때문에, 매크로가 디코더를 작동시킨다고 말할 수 있다.
결론
주목할 점은 전술한 예들은 단지 설명의 목적으로 제공된 것이고 절대 본 발명을 제한하는 것으로 해석되지 않는다는 것이다. 본 발명이 다양한 실시예를 참조하여 기술되는 동안, 여기서 사용된 단어들은 제한을 하는 단어라기보다는 서술 과 도시를 하는 단어라는 것을 이해할 것이다. 나아가, 본 발명이 여기서 특정 수단, 재료, 실시예를 참조하여 서술되었다고 하더라도 본 발명은 여기서 개시된 특정물들에 제한되는 것으로 해석되어서는 안되고, 오히려 본 발명은 첨부된 청구항의 범위 내의 모든 기능적으로 동등한 구조들, 방법들, 사용들로 확장된다. 당업자는 본 명세서의 개시 내용의 이점을 유지하면서, 발명의 범주와 사상을 벗어나지 않는 범위에서, 본 발명에 다양한 수정을 가하고 변화가 생기게 할 수 있다.

Claims (20)

  1. 송신자로부터의 전송을 위해 데이터 요소를 포함하는 마크업 언어 정보(markup-language information)를 인코딩하는 방법으로서,
    상기 마크업 언어 정보는 정보 시퀀스(information sequence)를 포함하고, 상기 정보 시퀀스는 적어도 두 개의 정열된 요소(ordered element)를 포함하고, 상기 적어도 두 개의 정열된 요소는 적어도 하나의 데이터 요소와 각각의 데이터 요소와 연관된 적어도 하나의 태그 요소를 포함하며, 상기 방법은,
    매크로의 집합으로부터, 상기 정보 시퀀스에 대응하는 제1 매크로를 선택하는 단계 - 상기 제1 매크로는 제1 파라미터 집합의 적어도 하나의 파라미터를 취하고, 상기 적어도 하나의 데이터 요소 중에 적어도 하나의 특정 데이터 요소를 상기 제1 매크로에 대한 상기 적어도 하나의 파라미터 각각에 사용함으로써 상기 정보 시퀀스를 도출함(yield) - ;
    상기 마크업 언어 정보 내의 상기 정보 시퀀스를 상기 제1 매크로 및 상기 마크업 언어 정보 내의 상기 특정 데이터 요소에 대한 참조를 포함하는 매크로 데이터로 대체하는 단계 - 상기 대체하는 단계는 수정된 마크업 언어 정보를 생성하고, 상기 수정된 마크업 언어 정보는 적어도 두 개의 제2 시퀀스 요소를 포함하는 제2 시퀀스를 포함하고, 상기 제2 시퀀스 요소 각각은 매크로, 데이터 요소 또는 데이터 요소와 연관된 태그 요소에 대한 참조를 포함함 - ;
    상기 매크로의 집합으로부터 제2 매크로를 선택하는 단계 - 상기 제2 매크로는, 하나 이상의 특정 파라미터를 포함하는 제2 파라미터 집합에 적용될 때, 상기 제2 시퀀스를 도출함 -
    상기 수정된 마크업 언어 정보 내의 상기 제2 시퀀스를 상기 제2 파라미터 집합 및 상기 제2 매크로에 대한 참조를 포함하는 제2 매크로 데이터로 대체하는 단계; 및
    상기 수정된 마크업 언어 정보를 수신자에게 전송하는 단계
    를 포함하는, 마크업 언어 정보를 인코딩하는 방법.
  2. 제1항에 있어서,
    상기 제1 매크로의 선택 단계는, 적어도 하나의 이미 존재하는 매크로의 집합으로부터 이미 존재하는 매크로를 선택하는 단계를 포함하는, 마크업 언어 정보를 인코딩하는 방법.
  3. 제2항에 있어서,
    상기 이미 존재하는 매크로의 집합은 상기 매크로의 집합을 포함하는 정적 사전(static dictionary)이고, 상기 정적 사전은 상기 전송의 수신자에게 이용가능한 것인, 마크업 언어 정보를 인코딩하는 방법.
  4. 제1항에 있어서,
    제1 매크로를 선택하는 상기 단계는 상기 정보 시퀀스에 대응하는 상기 제1 매크로를 생성하는 단계를 포함하는, 마크업 언어 정보를 인코딩하는 방법.
  5. 제1항에 있어서,
    상기 제1 매크로에 대한 정의를 상기 수정된 마크업 언어 정보에 추가하는 단계를 더 포함하는, 마크업 언어 정보를 인코딩하는 방법.
  6. 제1항에 있어서,
    상기 정보 시퀀스에 대한 제1 매크로를 선택하는 상기 단계와 상기 정보 시퀀스를 상기 특정 데이터 요소 및 상기 제1 매크로에 대한 참조로 대체하는 단계가 상기 마크업 언어 정보 내의 적어도 두 개의 시퀀스에 반복적으로 수행되는, 마크업 언어 정보를 인코딩하는 방법.
  7. 제1항에 있어서,
    상기 수정된 마크업 언어 정보를 토큰화(tokenizing)하는 단계를 더 포함하고, 상기 토큰화하는 단계는 상기 매크로 데이터 내의 상기 매크로를 나타내는 토큰을 사용하는 단계를 포함하는, 마크업 언어 정보를 인코딩하는 방법.
  8. 전송을 위해 데이터 요소를 포함하는 마크업 언어 정보를 준비하는 시스템으로서, 상기 마크업 언어 정보는 정보 시퀀스를 포함하고, 상기 정보 시퀀스는 적어도 두 개의 정열된 요소를 포함하고, 상기 적어도 두 개의 정열된 요소는 적어도 하나의 데이터 요소 및 각각의 데이터 요소와 연관된 적어도 하나의 태그 요소를 포함하며, 상기 시스템은,
    컴퓨팅 프로세서;
    각각의 매크로가 적어도 하나의 요소를 파라미터로서 취하는 매크로의 집합을 저장하기 위해 상기 컴퓨팅 프로세서와 통신적으로(communicatively) 결합된 매크로 저장 장치;
    상기 매크로의 집합으로부터 제1 특정 매크로를 선택하기 위한 매크로 선택기 - 상기 제1 특정 매크로는, 하나 이상의 특정 파라미터를 포함하는 제1 파라미터 집합에 적용될 때, 상기 정보 시퀀스를 도출함 - ;
    상기 정보 시퀀스를 상기 제1 특정 매크로 및 상기 제1 파라미터 집합에 대한 참조를 포함하는 매크로 데이터로 대체하여 수정된 마크업 언어 정보를 도출하는 시퀀스 대체기 - 상기 수정된 마크업 언어 정보는 제2 시퀀스를 포함하고, 상기 매크로 선택기는 상기 매크로의 집합으로부터, 하나 이상의 특정 파라미터를 포함하는 제2 파라미터 집합에 적용될 때 상기 제2 시퀀스를 도출하는 제2 특정 매크로를 선택하고, 상기 시퀀스 대체기는 상기 수정된 마크업 언어 정보 내의 상기 제2 시퀀스를, 상기 제2 파라미터 집합 및 상기 제2 특정 매크로에 대한 참조를 포함하는 제2 매크로 데이터로 대체함 - ; 및
    상기 수정된 마크업 언어 정보를 수신자에게 전송하기 위한 전송기
    를 포함하는, 마크업 언어 정보를 준비하는 시스템.
  9. 제8항에 있어서,
    상기 매크로 저장 장치는 적어도 하나의 이미 존재하는 매크로의 집합을 포함하는, 마크업 언어 정보를 준비하는 시스템.
  10. 제9항에 있어서,
    상기 이미 존재하는 매크로의 집합은 미리 정의된 매크로의 집합을 포함하는 정적 사전이고, 상기 정적 사전은 상기 전송의 수신자에게 이용 가능한 것인, 마크업 언어 정보를 준비하는 시스템.
  11. 제8항에 있어서,
    상기 매크로 선택기는 상기 정보 시퀀스에 대응하는 상기 제1 특정 매크로를 더 생성하고 상기 제1 특정 매크로를 상기 매크로 저장 장치에 저장하는, 마크업 언어 정보를 준비하는 시스템.
  12. 제8항에 있어서,
    상기 수정된 마크업 언어 정보를 토큰화하기 위한 토큰화기(tokenizer)를 더 포함하고, 상기 토큰화기는 상기 수정된 마크업 언어 정보 내의 상기 매크로 참조를 상기 매크로를 나타내는 토큰으로 대체하는, 마크업 언어 정보를 준비하는 시스템.
  13. 컴퓨터에 의해 실행될 때, 송신자로부터의 전송을 위해 데이터 요소를 포함하는 마크업 언어 정보를 인코딩하는 방법을 수행하는 컴퓨터 판독가능 명령어를 저장하는 컴퓨터 판독가능 저장 매체로서,
    상기 마크업 언어 정보는 정보 시퀀스를 포함하고, 상기 정보 시퀀스는 적어도 두 개의 정열된 요소를 포함하고, 상기 적어도 두 개의 정열된 요소는 적어도 하나의 데이터 요소와 각각의 데이터 요소와 연관된 적어도 하나의 태그 요소를 포함하며, 상기 방법은,
    매크로의 집합으로부터, 상기 정보 시퀀스에 대응하는 제1 매크로를 선택하는 단계 - 상기 제1 매크로는 제1 파라미터 집합의 적어도 하나의 파라미터를 취하고, 상기 적어도 하나의 데이터 요소 중에 적어도 하나의 특정 데이터 요소를 상기 제1 매크로에 대한 상기 적어도 하나의 파라미터 각각에 사용함으로써 상기 정보 시퀀스를 도출함 - ;
    상기 마크업 언어 정보 내의 상기 정보 시퀀스를 상기 제1 매크로 및 상기 마크업 언어 정보 내의 상기 특정 데이터 요소에 대한 참조를 포함하는 매크로 데이터로 대체하는 단계 - 상기 대체하는 단계는 수정된 마크업 언어 정보를 생성하고, 상기 수정된 마크업 언어 정보는 적어도 두 개의 제2 시퀀스 요소를 포함하는 제2 시퀀스를 포함하고, 상기 제2 시퀀스 요소 각각은 매크로, 데이터 요소 또는 데이터 요소와 연관된 태그 요소에 대한 참조를 포함함 - ;
    상기 매크로의 집합으로부터 제2 매크로를 선택하는 단계 - 상기 제2 매크로는, 하나 이상의 특정 파라미터를 포함하는 제2 파라미터 집합에 적용될 때, 상기 제2 시퀀스를 도출함 -
    상기 수정된 마크업 언어 정보 내의 상기 제2 시퀀스를 상기 제2 파라미터 집합 및 상기 제2 매크로에 대한 참조를 포함하는 제2 매크로 데이터로 대체하는 단계; 및
    상기 수정된 마크업 언어 정보를 수신자에게 전송하는 단계
    를 포함하는, 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서,
    상기 제1 매크로의 선택 단계는,
    적어도 하나의 이미 존재하는 매크로로 구성된 집합으로부터 이미 존재하는 매크로를 선택하는 단계를 포함하는, 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서,
    상기 이미 존재하는 매크로의 집합은 매크로의 집합을 포함하는 정적 사전이고, 상기 정적 사전은 상기 전송의 수신자에게 이용 가능한 것인, 컴퓨터 판독 가능 저장 매체.
  16. 제13항에 있어서,
    상기 방법은 상기 정보 시퀀스로부터 매크로 정의를 획득하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  17. 제13항에 있어서,
    상기 방법은 상기 정보 시퀀스 내의 토큰을 확장하는 단계를 더 포함하는, 컴퓨터 판독가능 저장 매체.
  18. 삭제
  19. 삭제
  20. 삭제
KR1020087002661A 2005-08-19 2006-07-20 마크업 언어 데이터의 인코딩 Active KR101247075B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/207,547 2005-08-19
US11/207,547 US7739586B2 (en) 2005-08-19 2005-08-19 Encoding of markup language data
PCT/US2006/028384 WO2007024378A2 (en) 2005-08-19 2006-07-20 Encoding of markup-language data

Publications (2)

Publication Number Publication Date
KR20080043304A KR20080043304A (ko) 2008-05-16
KR101247075B1 true KR101247075B1 (ko) 2013-03-25

Family

ID=37768545

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087002661A Active KR101247075B1 (ko) 2005-08-19 2006-07-20 마크업 언어 데이터의 인코딩

Country Status (6)

Country Link
US (1) US7739586B2 (ko)
KR (1) KR101247075B1 (ko)
CN (1) CN101495998B (ko)
MX (1) MX2008002170A (ko)
RU (1) RU2419846C2 (ko)
WO (1) WO2007024378A2 (ko)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7031987B2 (en) * 1997-05-30 2006-04-18 Oracle International Corporation Integrating tablespaces with different block sizes
US7571173B2 (en) * 2004-05-14 2009-08-04 Oracle International Corporation Cross-platform transportable database
US7702627B2 (en) * 2004-06-22 2010-04-20 Oracle International Corporation Efficient interaction among cost-based transformations
US7814042B2 (en) * 2004-08-17 2010-10-12 Oracle International Corporation Selecting candidate queries
US8356053B2 (en) 2005-10-20 2013-01-15 Oracle International Corporation Managing relationships between resources stored within a repository
EP1816573A1 (en) * 2006-02-02 2007-08-08 Nextair Corporation Apparatus, method and machine-readable medium for facilitating generation of a markup language document containing identical sets of markup language elements
US7644062B2 (en) * 2006-03-15 2010-01-05 Oracle International Corporation Join factorization of union/union all queries
US7809713B2 (en) * 2006-03-15 2010-10-05 Oracle International Corporation Efficient search space analysis for join factorization
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7853573B2 (en) * 2006-05-03 2010-12-14 Oracle International Corporation Efficient replication of XML data in a relational database management system
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
US7801856B2 (en) * 2006-08-09 2010-09-21 Oracle International Corporation Using XML for flexible replication of complex types
US7827177B2 (en) * 2006-10-16 2010-11-02 Oracle International Corporation Managing compound XML documents in a repository
US9183321B2 (en) * 2006-10-16 2015-11-10 Oracle International Corporation Managing compound XML documents in a repository
US8909599B2 (en) * 2006-11-16 2014-12-09 Oracle International Corporation Efficient migration of binary XML across databases
US9953103B2 (en) * 2006-11-16 2018-04-24 Oracle International Corporation Client processing for binary XML in a database system
US7836396B2 (en) * 2007-01-05 2010-11-16 International Business Machines Corporation Automatically collecting and compressing style attributes within a web document
US8291310B2 (en) * 2007-08-29 2012-10-16 Oracle International Corporation Delta-saving in XML-based documents
US8438152B2 (en) * 2007-10-29 2013-05-07 Oracle International Corporation Techniques for bushy tree execution plans for snowstorm schema
FI123499B (fi) * 2008-05-05 2013-06-14 Sensinode Oy Menetelmä ja laite viestien prosessoimiseksi
US8255372B2 (en) 2010-01-18 2012-08-28 Oracle International Corporation Efficient validation of binary XML data
US9286035B2 (en) * 2011-06-30 2016-03-15 Infosys Limited Code remediation
US10756759B2 (en) 2011-09-02 2020-08-25 Oracle International Corporation Column domain dictionary compression
US9298679B2 (en) 2012-03-13 2016-03-29 Google Inc. System and method providing a binary representation of a web page
CN102722442A (zh) * 2012-06-13 2012-10-10 禹芙蓉 一种宏状态自动分析方法及其装置
US8812523B2 (en) 2012-09-28 2014-08-19 Oracle International Corporation Predicate result cache
US9870390B2 (en) 2014-02-18 2018-01-16 Oracle International Corporation Selecting from OR-expansion states of a query
CN104268269A (zh) * 2014-10-13 2015-01-07 宁波公众信息产业有限公司 一种数据库操作方法
US10585887B2 (en) 2015-03-30 2020-03-10 Oracle International Corporation Multi-system query execution plan
US10733237B2 (en) 2015-09-22 2020-08-04 International Business Machines Corporation Creating data objects to separately store common data included in documents
JP2017126185A (ja) * 2016-01-13 2017-07-20 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
CN106294146B (zh) * 2016-08-09 2019-02-12 合一智能科技(深圳)有限公司 参数替换测试方法及装置
CN106372041A (zh) * 2016-08-23 2017-02-01 上海创景计算机系统有限公司 超文本标记语言定制系统
US10467275B2 (en) 2016-12-09 2019-11-05 International Business Machines Corporation Storage efficiency
US11848976B2 (en) * 2020-06-30 2023-12-19 Oracle International Corporation Custom action invocation in a speadsheet integrated with web services
US11550583B2 (en) 2020-11-13 2023-01-10 Google Llc Systems and methods for handling macro compatibility for documents at a storage system
CN114741076B (zh) * 2022-04-20 2024-05-31 重庆长安汽车股份有限公司 一种基于soa服务参数快速定义的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans
US6832368B1 (en) * 1999-02-17 2004-12-14 International Business Machines Corporation Method and system for enhancing the performance of interpreted web applications

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4553205A (en) * 1982-09-21 1985-11-12 Salvatore Porchia Flexible macro expansion process
US5737592A (en) * 1995-06-19 1998-04-07 International Business Machines Corporation Accessing a relational database over the Internet using macro language files
US5715453A (en) * 1996-05-31 1998-02-03 International Business Machines Corporation Web server mechanism for processing function calls for dynamic data queries in a web page
US5951623A (en) * 1996-08-06 1999-09-14 Reynar; Jeffrey C. Lempel- Ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5946697A (en) * 1997-04-22 1999-08-31 Microsoft Corporation Rapid transfer of HTML files
US6105043A (en) * 1997-12-16 2000-08-15 International Business Machines Corporation Creating macro language files for executing structured query language (SQL) queries in a relational database via a network
RU2220453C2 (ru) * 1998-05-27 2003-12-27 Дайболд, Инкорпорейтед Устройство, содержащее автоматический банковский аппарат (варианты), и способ формирования сообщения о финансовых операциях и файла на нем
RU2206126C2 (ru) * 1998-05-27 2003-06-10 Дайболд, Инкорпорейтед Устройство, содержащее автоматический аппарат совершения финансовых операций (варианты), и способ работы упомянутого аппарата
US6260031B1 (en) * 1998-12-21 2001-07-10 Philips Electronics North America Corp. Code compaction by evolutionary algorithm
US7249328B1 (en) * 1999-05-21 2007-07-24 E-Numerate Solutions, Inc. Tree view for reusable data markup language
US6941337B2 (en) * 2001-06-07 2005-09-06 Nokia Corporation Interaction arrangement for a sequence of interactions providing a service to a user
US20040199516A1 (en) * 2001-10-31 2004-10-07 Metacyber.Net Source information adapter and method for use in generating a computer memory-resident hierarchical structure for original source information
US7640491B2 (en) * 2001-12-05 2009-12-29 Microsoft Corporation Outputting dynamic local content on mobile devices
CA2381605A1 (en) * 2002-04-12 2003-10-12 Ibm Canada Limited-Ibm Canada Limitee Dynamic generation of program execution trace files in a standard markup language
US20040205668A1 (en) * 2002-04-30 2004-10-14 Donald Eastlake Native markup language code size reduction
US7571431B2 (en) * 2003-04-29 2009-08-04 Microsoft Corporation Processing macro information and displaying via GUI in different tools
US7711544B2 (en) * 2004-11-09 2010-05-04 Sony Online Entertainment Llc System and method for generating markup language text templates

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832368B1 (en) * 1999-02-17 2004-12-14 International Business Machines Corporation Method and system for enhancing the performance of interpreted web applications
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
P.Skibinski et. al., "Revisiting dictionary-based compression," Proc. of the Software Practice and Experience, vol. 35, pp. 1455-1476, 2005.07.29. *

Also Published As

Publication number Publication date
RU2008106234A (ru) 2009-08-27
WO2007024378A2 (en) 2007-03-01
WO2007024378A3 (en) 2009-04-23
KR20080043304A (ko) 2008-05-16
CN101495998A (zh) 2009-07-29
US7739586B2 (en) 2010-06-15
RU2419846C2 (ru) 2011-05-27
US20070044012A1 (en) 2007-02-22
MX2008002170A (es) 2008-04-22
CN101495998B (zh) 2011-04-20

Similar Documents

Publication Publication Date Title
KR101247075B1 (ko) 마크업 언어 데이터의 인코딩
CN101809567B (zh) 文本串的二次散列提取
US7013425B2 (en) Data processing method, and encoder, decoder and XML parser for encoding and decoding an XML document
JP3368883B2 (ja) データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置
JP3973557B2 (ja) 構造化された文書を圧縮/伸長する方法
US8533172B2 (en) Method and device for coding and decoding information
JP2004032774A (ja) マークアップ言語文書を符号化するための方法およびシステム
KR970059917A (ko) 데이타압축, 신장방법 및 장치와 이것을 사용한 데이타처리장치 및 네트워크시스템
US8234288B2 (en) Method and device for generating reference patterns from a document written in markup language and associated coding and decoding methods and devices
CN101040444B (zh) 压缩结构化文档的方法和装置
US20090254882A1 (en) Methods and devices for iterative binary coding and decoding of xml type documents
US20100049727A1 (en) Compressing xml documents using statistical trees generated from those documents
League et al. Schema-Based Compression of XML Data with Relax NG.
Souley et al. A comparative analysis of data compression techniques
US8234257B2 (en) Method and apparatus for compressing and/or decompressing a data structure
Rincy et al. Preprocessed text compression method for Malayalam text files
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method
Hariharan et al. Compressing XML documents with finite state automata
Leighton Two new approaches for compressing XML
JPH06164406A (ja) データ圧縮装置及びデータ圧縮方法
Vo The Vcodex Platform for Data Compression
Stine Coding theory
Tere et al. Algorithm for XML Compression using DTD and Stack
Rajendra 16 BIT UNICODE TEXT COMPRESSION
Bhardwaj et al. Compression of Data and its Secured Transmission over Network

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20080131

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
A201 Request for examination
PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 20110622

Comment text: Request for Examination of Application

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20130227

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20130318

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20130318

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20160218

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20160218

Start annual number: 4

End annual number: 4

FPAY Annual fee payment

Payment date: 20170220

Year of fee payment: 5

PR1001 Payment of annual fee

Payment date: 20170220

Start annual number: 5

End annual number: 5

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 6

PR1001 Payment of annual fee

Payment date: 20180219

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20200218

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20210218

Start annual number: 9

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20220216

Start annual number: 10

End annual number: 10

PR1001 Payment of annual fee

Payment date: 20230216

Start annual number: 11

End annual number: 11

PR1001 Payment of annual fee

Payment date: 20240226

Start annual number: 12

End annual number: 12