KR20060085907A - Xml 문서를 프로세싱하기 위한 방법 및 시스템 - Google Patents

Xml 문서를 프로세싱하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR20060085907A
KR20060085907A KR1020050117881A KR20050117881A KR20060085907A KR 20060085907 A KR20060085907 A KR 20060085907A KR 1020050117881 A KR1020050117881 A KR 1020050117881A KR 20050117881 A KR20050117881 A KR 20050117881A KR 20060085907 A KR20060085907 A KR 20060085907A
Authority
KR
South Korea
Prior art keywords
xml
binary
information items
serializing
document
Prior art date
Application number
KR1020050117881A
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 마이크로소프트 코포레이션
Publication of KR20060085907A publication Critical patent/KR20060085907A/ko

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/149Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
    • 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]

Abstract

컴퓨터-기반 시스템에서 XML 문서를 프로세싱하기 위한 방법은 다수의 정보 항목 각각을 다수의 이진-데이터 유닛 중 대응하는 이진-데이터 유닛에 관련시키는 단계, 및 다수의 정보 항목 중 하나 이상을 포함하는 XML 정보 집합에 관련된 XML 문서를 제공하는 단계를 포함한다. 방법은 XML 문서를 이진 XML 포맷으로 직렬화하는 단계, 또는 이진 XML 포맷으로부터 XML 문서를 역-직렬화하는 단계를 포함한다. 직렬화하는 단계는 XML 정보 집합의 하나 이상의 정보 항목을 그들의 대응하는 하나 이상의 이진-데이터 유닛으로 변환하는 단계를 포함한다. 역-직렬화하는 단계는 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 그들의 대응하는 하나 이상의 정보 항목으로 변환하는 단계를 포함한다. 컴퓨터 판독가능 매체는 적어도 하나의 프로세서상에서 실행하기 위한 프로그램으로 인코딩된다. 적어도 하나의 프로세서상에서 실행될 때, 프로그램은 XML 문서를 프로세싱하기 위한 방법을 수행할 수 있다.
직렬화, 역직렬화, 이진-데이터 유닛, XML

Description

XML 문서를 프로세싱하기 위한 방법 및 시스템{METHOD AND SYSTEM FOR BINARY SERIALIZATION OF DOCUMENTS}
도 1은 본 발명의 일 실시예에 따라 XML 문서를 프로세싱하기 위한 방법의 흐름도.
도 2는 본 발명의 일 실시예에 따라 이진 XML 포맷에 대응하는 구성요소의 블럭도.
도 3은 본 발명의 일 실시예에 따라 정수에 대한 인코딩 포맷을 보여주는 표.
도 4a는 본 발명의 일 실시예에 따라 자신의 관련 특수 노드를 식별하는 이진-데이터 유닛에 대한 특수 노드 타입 및 대응하는 바이트 값에 대한 표.
도 4b는 본 발명의 일 실시예에 따라 이진-데이터 유닛에 대한 특수 노드 타입 및 대응하는 바이트 값에 대한 표.
도 4c는 도 4b에 도시된 텍스트-관련 특수 노드들 중 몇몇의 소정 특징을 기술하는 표.
도 5는 본 발명의 일 실시예에 따라 XML 문서를 프로세싱하기 위한 방법의 흐름도.
<도면의 주요부분에 대한 부호의 설명>
110: 정보 항목을 대응하는 이진-데이터 유닛에 관련시킴
120: XML 정보 집합에 관련된 XML 문서를 제공
130: XML 문서를 이진 XML 포맷으로 직렬화
140: 이진 XML 포맷으로부터 XML 문서를 역-직렬화
150: 이진 XML 포맷을 전송
본 발명은 전자 문서를 프로세싱하기 위한 방법 및 시스템에 관한 것이며, 특히, 전송 또는 저장을 지원하기 위하여 전자 문서를 직렬화 및 역-직렬화하기 위한 방법 및 시스템에 관한 것이다.
통합된 프로그래밍가능한 월드 와이드 웹("웹") 기반 서비스의 구현을 용이하게 하기 위하여 확장성 마크업 언어(XML)가 사용될 수 있다. XML-관련 메시지의 교환을 통해, 서비스는 자신의 기능을 기술할 수 있고, 기타 서비스, 어플리케이션 또는 장치들이 자신의 기능을 쉽게 인보크하도록 할 수 있다. 단순 객체 액세스 프로토콜(SOAP)은 이러한 목표를 진행하기 위하여 개발되었다. SOAP은 인터넷을 통해 상이한 객체 모델들을 연결하고 웹 서비스들이 서로 통신하기 위한 웹 서비스에 대한 오픈 메커니즘을 제공하는 XML-기반 메커니즘이다.
XML은 구조화된 데이터를 기술하기 위한 포맷을 제공하며, 태그-기반 언어라는 점에서 하이퍼 텍스트 마크업 언어(HTML)와 형태면에서 유사한 마크업 언어이 다. 그러나, HTML과는 달리, XML 태그는 사전 정의(predefine)되지 않으며, 이것은 HTML로 가능한 것보다 더 큰 유연성을 허용한다. 태그, 및 태그들 사이의 구조적 관계를 정의하기 위한 기능을 제공함으로써, XML은 풍부하게 구조화된 웹 문서의 생성을 지원한다.
XML 표준은 XML 문서라 불리는 데이터 객체들의 클래스를 기술하고, 그것들을 프로세싱하는 컴퓨터 프로그램의 동작을 부분적으로 기술한다. XML 문서는 엔터티라 불리는 저장 유닛들로 구성되고, 그것은 파싱된 데이터 또는 파싱되지 않은 데이터를 포함한다. 파싱된 데이터는 문자들로 구성되며, 그들 중 몇몇은 문자 데이터를 형성하고, 몇몇은 마크업을 형성한다. 마크업은 문서의 저장 레이아웃 및 논리적 구조의 설명을 인코딩한다. XML은 저장 레이아웃 및 논리적 구조에 제약을 부과하기 위한 메커니즘을 제공한다.
XML "구성요소"는 시작 태그, 종료 또는 닫힘(close) 태그, 및 태그들 사이에 포함되는 정보 또는 컨텐츠를 포함하는 구조적 구성(structural construct)이다. "시작 태그"는 "<tagname>"으로 포맷화되고, "종료 태그"는 "</tagname>"으로 포맷화된다.
XML 문서에서, 시작 및 종료 태그는 다른 시작 및 종료 태그들 내에 네스팅될 수 있다. 특정 구성요소 내에 나타나는 모든 구성요소들은 자신의 시작 태그를 가지고, 그 특정 구성요소의 종료 태그 이전에 종료 태그가 나타난다. 이것은 트리 같은 구조를 정의한다. 각 구성요소는 이 트리의 노드를 형성하고, 잠재적으로 "자식" 또는 "브랜치" 노드를 갖는다. 자식 노드는 "부모" 노드의 시작 태그와 종 료 태그 사이에 나타나는 임의의 XML 구성요소를 나타낸다.
XML의 하나의 예시적인 사용은 클라이언트와 서버 컴퓨터와 같이 상이한 엔터티들 사이에 요청 및 응답의 형태로 데이터를 교환하는 것이다. 클라이언트는 정보에 대한 요청, 또는 특정 서버 동작에 대한 요청을 생성할 수 있고, 서버는 그 정보를 포함하거나 특정 동작이 수행되었는지를 확인하는 응답을 클라이언트에게 생성할 수 있다. 이러한 요청 및 응답의 컨텐츠는 XML 문서의 형태, 즉, XML의 규격에 따르는 문자들의 시퀀스의 형태를 갖는다.
SOAP 규격은 XML-인코딩된 데이터를 전달하는 일정한 방식을 정의한다. 그것은 기반 통신 프로토콜로서 HTTP를 사용하여 원격 프로시저 호출(RPC)을 수행하기 위한 방식 또한 정의한다.
SOAP 메시지는 필수 SOAP 엔벨로프(envelope), 선택적 SOAP 헤더(Header), 및 필수 SOAP 본문(Body)을 포함하는 XML 문서이다. SOAP은 서버, 서비스, 컴포넌트 및 객체상에서 메소드를 인보크하기 위한 프로토콜 규격을 제공한다. SOAP은 XML 및 HTTP를 사용하는 기존의 실행을 메소드 인보크 메커니즘(method invocation mechanism)으로 분류한다. SOAP 규격은 방화벽/프록시 필터링을 용이하게 하는 적은 수의 HTTP 헤더를 요구한다. SOAP 규격은 또한 메소드 파라미터, 리턴 값, 및 예외를 나타내기 위해 사용되는 XML 어휘를 요구한다.
SOAP는 특정 어플리케이션이 사용할 수 있는 운영 시스템, 객체 모델, 또는 언어에 관계없이, 웹을 통해 XML-기반 메시지를 사용하여 어플리케이션이 통신하기 위한 오픈된 확장가능한 방식을 제공한다. 표준 XML에 간단하고 확장가능한 메시 지 포맷을 정의하고, 이에 의해 HTTP를 통해 그 XML 메시지를 전송하기 위한 방식을 제공함으로써, SOAP는 보편적인 통신을 용이하게 한다.
"XML 인포셋(infoset)"은 XML 문서의 추상화 표현이다(예를 들어, http://www.w3.org/TR/2004/REC-xml-infoset-20040204에 기술됨). 정보 항목을 포함하는 XML 문서의 인포셋은 문서의 포맷에 대한 제한없이 XML 문서의 정보 컨텐츠로 여겨질 수 있다.
예시적인 인포셋이 후술된다. 예시적인 인포셋 "Book"의 루트 구성요소는 "Price"라 불리는 하나의 속성을 포함한다. "Price" 속성은 "35"의 값을 갖는다. 루트 구성요소는 또한 "War and Peace"라는 값을 갖는 Text 타입의 하나의 컨텐츠 노드를 포함한다. XML 표준(예를 들어, http://www.w3.org/TR/REC-xml/에 기술됨)은 인포셋을 텍스트로서 직렬화하는 방법을 지정한다. 예를 들어, 예시적인 인포셋은 다음과 같이 직렬화될 수 있다.
전송 또는 저장을 위해, 이러한 텍스추얼 XML은 전형적으로 대응하는 텍스트를 나타내는 바이트들로 인코딩된다. 몇몇 텍스트 변환 표준은 ASCII 유니코드인 UTF8 및 UTF16을 포함한다. 예를 들어, 상기 텍스추얼 XML 문서는 다음과 같이 ASCII 인코딩을 통해 전송될 수 있다.
전송된 1번째 바이트: 60('<'에 대한 ASCII 코드)
전송된 2번째 바이트: 66('B'에 대한 ASCII 코드)
전송된 3번째 바이트: 111('o'에 대한 ASCII 코드)
전송된 4번째 바이트: 111('0'에 대한 ASCII 코드)
전송된 5번째 바이트: 107('k'에 대한 ASCII 코드)
등...
따라서, 전형적으로, XML 인포셋의 인-메모리 표현은 텍스추얼 XML 스트링으로 직렬화되고, 그 후 텍스추얼 스트링의 문자들이 전송을 위해 대응하는 바이트들로 인코딩된다. 역 프로세스에서는, 수신된 텍스추얼-관련 XML 바이트들이 대응하는 텍스추얼 XML 스트링으로 디코딩되고, 그것은 XML 인포셋의 인-메모리 표현을 제공하기 위하여 역-직렬화되어 저장된다.
XML 인포셋의 인-메모리 표현은 논리적으로 존재하지만, 물리적으로 존재할 필요는 없다. 즉, 인포셋에 관련된 정보 항목들은 직렬화 전에 임의의 물리적 위치에 존재할 필요가 없다.
예를 들어, 객체-지향 언어-기반 프로그램은 XML 문서를 직렬화 및/또는 역-직렬화하기 위한 코드를 포함할 수 있다. 예를 들어, 상기 예를 직렬화하기 위한 객체-지향 코드는 다음과 같을 수 있다.
Figure 112005071068674-PAT00002
"Xml.Writer" 메소드는 텍스추얼 XML 문서를 나타내는 바이트들을 생성한다.
Figure 112005071068674-PAT00003
XML 표준은 XML 정보 항목의 비교적 쉬운 직렬화, 및 사람이 판독할 수 있는 텍스트 형태의 직렬화된 문서를 제공한다. 그러나, 문서가 장황할 수 있고, 프로세싱에 비효율적일 수 있다.
본 발명의 소정 실시예들은 전자-기반 문서가 직렬화된 문서의 크기를 감소시키고, 프로세싱의 속도를 증가시키며/거나 전달을 위해 필요한 시간을 감소시킬 수 있는 방식으로 직렬화 및/또는 역-직렬화될 수 있다는 사실로부터 기인한다. 이들 실시예들 중 몇몇에서, XML 문서는 정보 항목을 이진-데이터 유닛 식별자에 관련시키는 딕셔너리(dictionary)의 사용을 통해 이진 포맷으로 직렬화된다. 예를 들어, 식별자는 알려진 스트링, 반복된 스트링, 반복된 구조, 프리미티브 타입, 및/또는 구성을 식별할 수 있다.
소정 실시예들은 정적 및/또는 동적 딕셔너리를 이용한다. 정적 딕셔너리는 사전 정의된 관련(predefined associate)을 포함할 수 있다. 동적 딕셔너리는 밴드 내(in-band) 및/또는 밴드 외(out-of-band) 관련을 포함할 수 있다. 밴드 내 관련은 직렬화된 XML 문서에 포함될 수 있는 반면, 밴드 외 관련은, 예를 들어, 밴드 외 딕셔너리 엔트리를 이용하는 직렬화된 XML 문서에 관계없이 전송될 수 있다.
따라서, 본 발명의 소정 실시예들은 직렬화된 문서 크기, 파싱, 및 생성 속도의 개선을 위해 표준 XML의 사람 판독가능성과 장황성을 교환하는, 예를 들어, XML 문서 및 SOAP 메시지에 대한 대안적인 직렬화 포맷을 제공한다.
이들 실시예들 중 몇몇은 XML 인코딩/디코딩 프로세스에서 중복 정보를 감소시키거나 제거함으로써 XML 문서의 이진 가상 표현에 대한 효율적인 스트리밍을 달성한다. 전체 XML의 컨텐츠에 대해 미리 알지 않고서 중복성이 제거될 수 있다. 직렬화된 문서는 여전히 텍스추얼 XML 문서에 대한 직접적인 대응성을 가질 수 있다. 즉, 이진-XML 포맷의 한 실시예는 텍스추얼 XML 판독기 또는 작성자에 대한 호출처럼 보이는 판독기 및 작성자 소프트웨어의 호출의 사용을 허용한다. 호출의 사용자가 기반의 이진 직렬화 프로세스를 알 필요는 없다.
따라서, 본 발명의 일 실시예는 컴퓨터-기반 시스템에서 XML 문서를 프로세싱하기 위한 방법을 특징으로 한다. 방법은 정보 항목을 대응하는 이진-데이터 유닛에 관련시키는 단계, 및 정보 항목들 중 하나 이상을 포함하는 XML 정보에 관련된 XML 문서를 제공하는 단계를 포함한다. 방법은 또한 XML 문서를 이진 XML 포맷으로 직렬화하는 단계, 또는 이진 XML 포맷으로부터 XML 문서를 역-직렬화하는 단계를 포함한다. 직렬화하는 단계는 XML 정보 집합의 하나 이상의 정보 항목을 그들의 대응하는 하나 이상의 이진-데이터 유닛으로 변환하는 단계를 포함한다. 역-직렬화하는 단계는 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 그들의 대응하는 하나 이상의 정보 항목으로 변환하는 단계를 포함한다.
본 발명의 또다른 실시예는 적어도 하나의 프로세서상에서 실행하기 위한 프로그램으로 인코딩된 컴퓨터 판독가능 매체를 특징으로 한다. 적어도 하나의 프로세서상에서 실행될 때, 프로그램은 XML 문서를 프로세싱하기 위한 상기-기술된 방 법을 수행할 수 있다.
첨부되는 도면들은 일정한 비율로 그려지도록 의도된 것이 아니다. 도면들에서, 여러 도면에 도시된 각 동일한 구성요소 또는 거의 동일한 구성요소는 동일한 번호에 의해 표현된다. 명확성을 위하여, 모든 도면의 모든 구성요소가 라벨링되지는 않을 것이다.
본 발명은 후술되는 상세한 설명에서 언급되거나 도면에 도시된 구성의 세부사항 및 컴포넌트의 배치에 대한 적용에 제한되는 것이 아니다. 본 발명은 다른 실시예들도 가능하며, 다양한 방식으로 실행 또는 수행될 수 있다. 또한, 본 명세서에서 사용된 표현 및 용어는 설명을 위한 것이며, 제한으로 여겨져서는 안 된다. 본 명세서에서 "포함하는" 또는 "가지는", "수반하는" 및 그 변형의 사용은 이후에 나열되는 항목들 및 그들의 등가물뿐 아니라 부가적인 항목들을 포함하는 것을 의미한다.
본 발명의 일 실시예의 몇몇 광범위한 원리를 기술하기 위하여 먼저 도 1에 대한 참조가 행해진다. 도 1은 본 발명의 일 실시예에 따라 XML 문서를 프로세싱하기 위한 방법(100)의 흐름도이다. 방법(100)은 정보 항목들을 대응하는 이진-데이터 유닛들에 관련시키는 단계(110), XML 문서를 제공하는 단계(120), 및 정보 항목과 대응하는 이진-데이터 유닛 사이의 관련을 사용하여 XML 문서를 이진 XML 포맷으로 직렬화하는 단계(130) 또는 이진 XML 포맷으로부터 XML 문서를 역-직렬화하는 단계(140)를 포함한다.
XML 문서를 이진 XML 포맷으로 직렬화하는 단계(130)는 XML 정보 집합의 하 나 이상의 정보 항목을 그들의 대응하는 하나 이상의 이진-데이터 유닛으로 변환하는 단계를 포함한다. 유사하게, 이진 XML 포맷으로부터 XML 문서를 역-직렬화하는 단계(140)는 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 그들의 대응하는 하나 이상의 정보 항목으로 변환하는 단계를 포함한다. 정보 항목은 XML 분야에서 숙련된 기술을 가진 자들에게 알려진 정보 항목들의 타입 또는 임의의 기타 적합한 타입을 포함할 수 있다. 하기에 보다 상세히 기술된 바와 같이, 정보 항목과 이진 데이터 유닛 사이의 관련은 특히 XML 문서의 보다 효율적인 프로세싱 및 간결한 직렬화를 제공할 수 있다.
정보 항목은 하기에 보다 상세히 기술된 기타 적합한 정보 항목들 중에서, 예를 들어, 프리미티브 타입, 스트링, 텍스트, 및 XML 구성을 포함할 수 있다. 편리함을 위하여, 정보 항목과 대응하는 이진-데이터 유닛 사이의 관련이 딕셔너리에 포함될 수 있다. 그러나, "딕셔너리"라는 용어의 사용은 임의의 특정 포맷 또는 저장 선택에 제한되지 않는다.
딕셔너리는 정보 항목의 대응하는 이진-데이터 유닛으로의 변환을 지원하기 위하여 직렬화 동안 참조로서 사용될 수 있다. 소정 적합한 이진 XML 포맷, 및 정보 항목과 이진-데이터 유닛 사이의 관련의 딕셔너리의 예들이 하기에 보다 상세히 기술된다.
정보 집합 및 그것의 정보 항목들은, 예를 들어, http://www.w3.org/TR/2004/REC-xml-infoset-20040204에 기술된 월드 와이드 웹 컨소시엄("W3C")에 의해 확립된 인포셋에 대한 표준에 따를 수 있다. 잘 형성된 XML 문서에 대한 인포셋은 적어도 문서 정보 항목 및 몇몇 기타 정보 항목을 포함하며, 여기서 정보 항목은 XML 문서의 소정 부분에 대한 추상화 기술(abstract description)이다. 각 정보 항목은 관련 명명된 특성들의 집합을 갖는다.
이제 도 2 내지 도 4를 참조하면, 이진-XML 포맷의 몇몇 실시예가 기술된다. 편리함을 위하여, 이진-데이터 유닛의 표현 및 이진-데이터 유닛 자체는 상호교환적으로 그들의 관련 정보 항목들의 식별자라 불린다. 그러나, 본 발명의 실시예에 따라 실제 직렬화된 이진 XML 문서는 표현에 대응하는 이진 데이터 유닛의 실제 이진 숫자를 포함한다는 것을 이해할 것이다.
게다가, 이진 XML 포맷의 실시예의 컴포넌트가 표준 XML 컴포넌트에 유사한 기능을 수행하는 경우, 전형적으로 본 상세한 설명에서 표준 XML 명명 규약(naming convention)이 사용된다. 따라서, 본 XML 분야에서 숙련된 기술을 가진 자들은 구성요소 및 속성과 같은 컴포넌트들, 및 관련 값들의 기능을 인지할 것이다.
후술되는 설명은 다양한 타입의 정보 항목에 대한 딕셔너리 엔트리의 예를 포함한다. 이러한 예들이 본 발명의 실시예에서 사용될 수 있지만, 설명된 딕셔너리 엔트리의 사용으로 실시예들을 제한하기 위한 것이 아니라 예시하기 위한 것이다. 본 발명의 몇몇 실시예들은 이러한 모든 관련보다 소수의 관련을 사용하는 반면, 기타 실시예들은 부가적인 관련들을 포함한다. 게다가, 소정 이진-데이터 유닛에 할당된 특정 값들 중 적어도 몇몇은 임의적이다.
먼저, 소정 이진-데이터 유닛의 설명에 대한 문맥을 제공하기 위하여, 이진-XML 포맷화된 문서의 구조에 대한 실시예가 도 2를 참조하여 기술된다. 도 2는 이 예시적인 실시예의 이진 XML 포맷에 대응하는 구성요소(200)의 블럭도이다. 본 실시예에서, 문서는 단 하나의 구성요소(200)를 포함한다. 그러나, 구성요소(200)는 다른 구성요소들을 포함할 수 있다.
구성요소(200)는 StartElement 구조(220), 0개 이상의 Attribute 구조(230), 및 0개 이상의 ElementContents 구조(240)를 포함한다. 구성요소(200)는 표준 XML 구성요소에 유사한 구조를 갖는다. 예를 들어, 대응하는 XML 구성요소는 "<ELEM...>...</ELEM>"로 나타날 수 있다.
구성요소(200)는 subset 노드(210)로 시작하여 EndElement 노드(250)로 끝날 수 있다. EndElement 노드(250)가 존재하지 않으면, 구성요소(200)는 구성요소(200)의 끝을 암시하는 특수 텍스트 노드를 포함하는 마지막 ElementContents 구조(240)로 끝날 수 있다.
구성요소(200)가 하기에 보다 상세히 기술된다. 구성요소(200)의 컨텐츠를 직렬화 및 역직렬화하기 위하여 사용될 수 있는 - 정보 항목과 이진-데이터 유닛 사이의 - 관련에 대한 몇몇 예들이 그 다음에 기술된다.
스트링 - 본 발명의 일 실시예는 스트링을 대응하는 스트링 식별자에 관련시키고, 그것은 직렬화된 문서에서 이진-데이터 유닛으로 나타난다. 스트링은 딕셔너리에 정적으로 또는 동적으로 배치될 수 있다. 정적 딕셔너리 항목은 XML 문서의 직렬화 전에 정의되는 것들이다. 이러한 경우에, 직렬화기 및 역-직렬화기는 필요하기 전에 정적 딕셔너리 항목들에 합의하거나 그것들을 제공받을 수 있다.
반대로, 동적 딕셔너리 엔트리는 직렬화 프로세스 동안에 생성된다. 스트링 이 처음 나타나면, 예를 들어, 직렬화기는 스트링에 식별자 번호를 할당하고, 그 스트링 및 관련된 새로운 스트링-식별자 번호 둘 다 직렬화된 문서에 배치할 수 있다. 그 후 수신측 역-직렬화기는 나중에 참조하기 위하여 새로운 스트링 및 관련 식별자 번호를 딕셔너리에 배치할 수 있다. 그 후 동일한 스트링의 반복된 발생은 식별자의 이진-데이터 유닛만을 사용하여, 즉, 스트링을 포함하지 않고서 직렬화될 수 있다.
이 프로세스에 대한 예로서, 스트링 "Hello"는 스트링의 첫번째 사용 시 한 행에 4번 나타날 수 있으며, 즉, "Hello""Hello""Hello""Hello"일 수 있다. 이러한 시퀀스는 "Hello=7,7,7,7"로 변환될 수 있으며, 새로운 스트링 "Hello"는 7이라는 식별자 번호를 동적으로 할당받았다. 방법(100)에 대해, 번호 7은 스트링 "Hello"에 관련된 이진-데이터 유닛을 제공하기 위하여 이진 형태로 표현될 것이다.
직렬화된 문서에 스트링이 포함될 때, 표준 XML 또는 임의의 기타 적합한 포맷을 사용하여 스트링이 직렬화될 수 있다. 예를 들어, 스트링은 스트링의 길이를 바이트로 나타내는 MB32-인코딩된 정수(하기에 기술됨)로서 직렬화될 수 있고, UTF8 인코딩에서는 스트링을 나타내는 바이트의 알려진 수가 뒤따른다. UTF8은 데이터 직렬화 분야에서 숙련된 기술을 가진 자들에게 알려진 인코딩 표준이다. 기타 적합한 인코딩 포맷이 사용될 수 있다. 바이트의 수가 0일 수 있다.
본 발명의 일 실시예는 스트링 식별자에 대한 사용의 후술되는 규칙을 갖는다. 실제 스트링이 스트링 식별자와 함께 포함되지 않으면, 스트링은 이전에 정의 되었어야 한다. 예를 들어, 스트링은 문서 초기에, 또는 밴드 외 메커니즘을 통해 정의되었을 수 있다. 밴드 외 메커니즘은, 예를 들어, 문서에 대한 사전 정의된 정적 딕셔너리 엔트리, 및 직렬화 프로세스의 외부에서 행해진 동적 딕셔너리 엔트리를 포함한다.
또한, 스트링에 대한 정의의 범위는 현재의 XML 구성요소만이 아니라 적어도 문서의 끝까지 고정될 수 있다. 스트링 정의는 그들의 재정의를 방지하기 위하여 고정될 수 있다. 스트링 식별자의 이진-데이터 유닛의 마지막 비트는 식별자가 정적 딕셔너리로부터 유도되는지 아닌지를 나타낼 수 있다. 예를 들어, 문서의 직렬화 동안에 정적 딕셔너리의 스트링의 재정의를 방지하기 위하여 이러한 정보가 사용될 수 있다.
프리미티브 타입 - 본 발명의 몇몇 실시예는 프리미티브 타입의 데이터와, 그 데이터를 식별하는 이진-데이터 유닛 사이의 관련을 이용한다. XML 분야에서 숙련된 기술을 가진 자들에게 알려진 바와 같이, 프리미티브 타입(기본 또는 단순 타입이라고도 불림)은 단일 값으로 표현될 수 있는 숫자 상수 및 기타 데이터를 포함하며, 예를 들어, 숫자 및 문자를 포함한다. 숙련된 기술을 가진 자들에게 알려진 프리미티브 타입의 몇몇 예는 문자, 8-비트 부호화 정수, 짧은 부호화 정수(short signed integer), 부호화 정수, 긴 부호화 정수(signed long integer), 십진수, 실수(단일 정밀도), 실수(두배 정밀도), 및 불리언(boolean)을 포함한다. 이러한 실시예들은 프리미티브 타입을 식별하기 위한 바이트를 포함하고 프리미티브 타입의 값을 식별하기 위한 이진 표현을 포함하는 이진-데이터 유닛에 하나 이 상의 프리미티브 타입을 관련시킨다. 본 발명의 일 실시예에 대한 몇몇 프리미티브 타입 및 그들의 관련 이진-데이터 유닛이 도 4a를 참조하여 하기에 기술된다.
효율적인 내부 표현을 갖는 데이터 - 소정 실시예에서, 효율적인 내부 표현을 갖는 데이터가 내부 표현에 관련된다. 즉, 그러한 데이터는 자신으로 "변환된다".
예를 들어, 그러한 데이터는 스트링을 생성하기 위하여 먼저 텍스트로 인코딩될 필요가 없다. 전형적으로 효율적인 내부 표현을 갖는 데이터의 예는 날짜 및 시간이다. 예를 들어, "10/14/2004"라는 날짜는 10개의 문자 '1', '0', '/', '1', '4', '/', '2', '0', '0' 및 '4'를 이진 바이트(예를 들어, 각 문자에 대해 8 또는 16비트를 필요로 함)로 변환함으로써 이진 포맷으로 직렬화될 수 있다. 날짜의 전형적인 내부 표현은 64비트를 갖는다. 따라서, 문서에 나타나는 그러한 날짜는 메모리에 64비트 표현으로 직렬화될 수 있고, 크기 및 프로세싱 시간 둘 모두 절약한다.
이제 도 3을 참조하면, 소정 실시예에서, 데이터의 내부 표현의 불필요한 부분이 관련 이진-데이터 유닛에서 제거된다. 예를 들어, 기존의 실행은 정수가 4바이트의 데이터에 의해 표현될 것을 필요로 할 수 있으며, 즉, 4바이트의 메모리를 필요로 할 수 있다. 그러나, 일반적으로 사용되는 여러 정수들은 1 또는 2바이트로 적합할 수 있는 작은 수이다. 일 실시예는 본 발명에서 "MB32 인코딩"이라 일컫는 인코딩 스킴을 통해 정수를 관련 이진-데이터 유닛으로 변환한다. 이 인코딩은 관련 정수의 이진 표현을 제공하기 위해 요구되는 공간을 감소시킨다.
도 3은 정수의 MB32 인코딩의 한 구현에 사용된 공간을 보여주는 크기 범위에 대한 표이다. 나타난 바와 같이, 사용되지 않은 바이트가 직렬화된 정수로부터 제거된다. 기타 적합한 효율적인 변환은 전자 데이터 저장 분야에서 숙련된 기술을 가진 자들에게 명백할 것이다.
숙련된 기술을 가진 자들에게 알려진 바와 같이, 모든 32-비트 정수는 1부터 32개까지의 관련 비트를 가질 수 있다. 예를 들어, 십진수 3, 즉, 이진수 11은 2개의 관련 비트를 가지며, 숫자 54, 즉, 이진수로 110110은 6개의 관련 비트를 갖는다. 본 발명의 일 실시예에서, MB32 인코딩 스킴은 관련 비트만을 인코딩한다. 게다가, MB32 정수의 각 바이트는 최상위 비트 우선으로 인코딩될 수 있으며, MB32 정수의 최하위 바이트(LSB)가 먼저 저장될 수 있다.
한 구현에서, MB32 정수의 각 바이트는 7개의 관련 비트를 포함하고, 그것은 필요하다면 0으로 패딩될 수 있으며, 하나의 "계속(continue)" 비트, 즉, 최상위 비트를 포함한다. 계속 비트가 설정되면, 현재의 바이트 뒤에 MB32 인코딩된 정수의 또다른 바이트가 뒤따른다. MB32 정수는 32-비트 정수로 디코딩될 수 있고, 다음 바이트가 포함되어야 함을 나타내기 위하여 계속 비트를 사용함으로써, MB32 바이트로부터의 모든 관련 비트가 연결될 수 있다.
XML 구성( XML CONSTRUCT ) - 이제 도 4a, 4b, 및 4c를 참조하면, 몇몇 실시예에서, 소정 이진 데이터 유닛이 XML 구성에 관련된 정보 항목을 식별한다. 따라서, 숏컷(shortcut)으로서의 표현, 즉, 관련 이진-데이터 유닛을 통해 반복적으로 나타나는 XML 구성이 보다 효율적으로 이진 포맷으로 직렬화될 수 있다. 구성을 식별하는 이진-데이터 유닛은 본 발명에서 "특수 노드(special node)"라 불린다.
도 4a는 본 발명의 일 실시예에 대한 이진-데이터 유닛에 대한 특수 노드 타입 및 대응하는 바이트 값의 표이다. 특수 노드의 예들이 다음에 기술된다.
접두사-관련 구성 - XML은 "접두사(prefix)"에 관련된 구성을 포함한다. 예를 들어, 구성요소 <colors:blue>는 "blue"라는 이름 및 "colors"라는 접두사를 갖는다. 이러한 구성 및 관련 정보를 직렬화하기 위하여, 하나의 기존의 직렬화는 접두사-구성요소 노드를 스트링 "colors" 및 "blue"와 함께 포함할 것이다.
본 예에 대해서는 <c:blue>와 같이, 공간을 절약하기 위하여 한 문자의 접두사를 사용할 수 있다. 그러나, 본 발명의 일 실시예에서, 숏컷 특수 노드("c를 접두사로 갖는 구성요소 노드")(shortcut special node)는 스트링 "blue"와 함께 직렬화되고, 따라서 직렬화에서 하나의 스트링, 즉, "colors"라는 스트링을 제거한다. 소정 실시예는 a로부터 z까지의 모든 문자에 대해 유사한 특수 노드를 포함한다. 도 4a의 표에 나열된 몇몇 접두사-관련 특수 노드에 대한 설명이 다시 도 2를 참조하여 다음에 제공된다.
구성요소(200)의 StartElement 구조는 구성요소(200)의 시작과 관련된다. StartElement 구조(220)는 여러 형태 중 하나를 가질 수 있다. 이들 형태는 시작 구성요소-관련 특수 노드를 이용할 수 있다.
이러한 특수 노드들은 다양한 시작 구성요소-관련 구성의 효율적인 직렬화를 지원한다. 본 예시적인 실시예에서, 그러한 구성들은 접두사의 존재, (존재한다면) 접두사에 대한 사전 정의(pre-definition), 구성요소(200)의 로컬 이름, 및 ( 존재한다면) 구성요소(200)의 로컬 이름에 대응하는 스트링의 사전 정의에 관한 것이다.
예를 들어, StartElement 구조(220)는, 접두사는 존재하지 않고, 사전 정의되지 않은 스트링인 로컬 이름(특수 노드 "ShortElement" 사용); 사전 정의되지 않은 접두사와 사전 정의되지 않은 스트링인 로컬 이름(특수 노드 "Element" 사용); 접두사는 존재하지 않고, 사전 정의된 스트링인 로컬 이름(특수 노드 "ShortDictionaryElement", 및 스트링을 식별하는 이진-데이터 유닛을 사용); 사전 정의된 접두사와 사전 정의된 스트링인 로컬 이름(특수 노드 "PrefixDictionaryElementA" 내지 "PrefixDictionaryElementZ" 중 하나, 및 스트링을 식별하는 이진-데이터 유닛을 사용), 또는 사전 정의되지 않은 접두사와 사전 정의된 스트링인 로컬 이름(특수 노드 "DictionaryElement" 사용); 및 사전 정의된 접두사와 사전 정의된 스트링이 아닌 로컬 이름(특수 노드 "PrefixElementA" 내지 "PrefixElementZ" 중 하나, 및 스트링을 사용)을 포함할 수 있다.
속성-관련 구성 - XML에서, 구성요소 "속성"이 정의될 수 있고, "값"을 할당받을 수 있다. 예를 들어, 텍스추얼 XML 코드 "<book author=smith>"는 "smith"라는 값을 "book" 구성요소의 "author" 속성에 할당한다. 이 문서를 기존의 방식으로 직렬화하기 위해, 전형적으로 스트링 "author" 및 "smith"를 갖는 속성-할당 노드가 포함될 것이다. 본 발명의 일 실시예에서는, 예를 들어, 스트링 "author"를 이 속성에 각 할당을 행하면서 직렬화할 필요를 제거하기 위하여 "author" 속성에 대한 특수 노드가 생성된다.
도 2를 다시 참조하면, 구성요소(200)의 속성 구조(230)는 XML 속성에 대응하여 기능한다. 표준 XML에서와 같이, 예를 들어, 이름-값 쌍을 구성요소(200)에 관련시키기 위하여 속성 구조(230)가 사용될 수 있다. 시작 구성요소-관련 구성에 대해 상기 기술된 예들과 유사하게, 속성-관련 구성은 도 4a의 표에 나열된 것들과 같은 속성-관련 특수 노드를 이용할 수 있다.
예를 들어, "AttributeContent"의 값을 "LocalName" 속성에 할당하기 위하여, 속성 구조(230)는 StartElement(220)에 대해 상기 기술된 것들과 유사한 여러 특수 노드들 중 하나를 포함할 수 있다. 예를 들어, 하기에 기술된 바와 같이, 도 4a의 표는 8개의 속성-관련 특수 노드를 제공하며, 그 중 4개가 xmlns-관련 특수 노드이다. 나머지 4개의 속성-관련 특수 노드는, 예를 들어, 접두사가 존재하지 않고 속성에 대한 사전 정의된 스트링도 존재하지 않는 경우(ShortAttribute), 사전 정의되지 않은 접두사가 존재하고, 사전 정의된 스트링이 존재하지 않는 경우(Attribute), 접두사가 존재하지 않고, 네임 스페이스(name space)에 대해 사전 정의된 스트링이 존재하는 경우(ShortDictionaryAttribute), 및 사전 정의되지 않은 접두사와 사전 정의된 스트링이 존재하는 경우(DictionaryAttribute)와 같은 상황에서 사용될 수 있다.
XML에서 일반적으로 발생하는 하나의 속성-관련 구성은 네임스페이스 속성인 "xmlns"에 대한 값을 할당하는 것이다. 텍스추얼 XML에서, 예를 들어, 이것은 구성요소 "book"의 "xmlns" 속성에 네임스페이스 값 "http://books.org"를 할당하기 위하여 "<book xmlns=http://books.org>"로서 나타날 수 있다. 전통적으로는, 본 예에서, 이 구성 및 관련 값을 전송하기 위하여, 전형적으로 "속성 할당 노드" 뒤에 스트링 "xmlns" 및 "http://books.org" 둘 모두 뒤따른다.
그러나, 도 4a에 도시된 바와 같이, 네임스페이스 속성 구성은 하나 이상의 숏컷 네임스페이스 할당 특수 노드에 의해 표현될 수 있다. 특수 노드 중 하나 및 스트링 "http://books.org"이 직렬화된 문서에 포함될 때, 하나의 스트링, 즉, "Xmlns"의 포함은 제거된다. 즉, 이진 포맷 직렬화는 특수 노드 및 인터넷 주소에 관련된 스트링을 포함한다.
네임스페이스 속성에 "xmlns"에 대한 값을 할당하기 위하여, 속성 구조(230)는, 예를 들어, 도 4a의 표에 도시된 4개의 네임스페이스 할당 특수 노드 중 하나를 포함할 수 있다. 이 4개의 숏컷 xmlns-관련 특수 노드는 접두사가 존재하지 않고, 네임스페이스에 대해 사전 정의된 스트링이 존재하지 않는 경우(ShortXmlnsAttribute), 사전 정의되지 않은 접두사가 존재하고, 사전 정의된 스트링이 존재하지 않는 경우(XmlnsAttribute), 접두사가 존재하지 않고, 사전 정의된 스트링이 존재하는 경우(ShortDictionaryXmlnsAttribute), 및 사전 정의되지 않은 접두사 및 사전 정의된 스트링이 존재하는 경우(DictionaryXmlnsAttribute)와 같은 상황에서 사용될 수 있다.
텍스트-관련 구성 - 도 4b는 본 발명의 일 실시예에 대한 텍스트-관련 정보 항목에 관련되는 이진-데이터 유닛에 대한 특수 노드 타입 및 대응하는 바이트 값(상기 기술된 소정 프리미티브 타입을 포함함)의 표이다. 표는 불리언, 숫자(여러 종류임), 리스트, 문자, 텍스추얼, 및 이진 데이터와 같은 프리미티브 타입에 대한 관련을 포함한다.
하기에 보다 상세히 기술된 특수 EndElement 노드를 포함하여, 도 4b의 텍스트-관련 특수 노드는 쌍으로 제공된다. 텍스트는 텍스트의 타입에 의존하는 방식으로 프로세싱될 수 있다. 예를 들어, 일 실시예는 엠티 스트링(empty string), 사전 정의된 스트링, 임의의 스트링 또는 데이터, 및 날짜/시간-관련 스트링과 같은 특정 타입의 스트링을 포함하여 텍스트에 대한 관련을 제공한다.
엠티 스트링은 도 4b의 예에 보여진 바와 같이 147의 바이트 값을 갖는 이진-데이터 유닛에 의해 식별되는 특수 노드 "EmptyText"에 관련될 수 있다. 딕셔너리에 있는 스트링은 딕셔너리에서 관련 스트링을 식별하는 MB32-인코딩된 정수가 뒤따르는 "DictionaryText" 특수 노드(148의 바이트 값)에 의해 나타내어질 수 있다.
"Chars...Text" 및 "Binary...Text" 특수 노드는 임의의 스트링 및 데이터를 지원한다. "Chars...Text" 특수 노드는, 예를 들어, UTF8 인코딩을 통해 인코딩될 수 있는 문자숫자식의 문자를 우선한다. "Binary...Text" 특수 노드는 이진 데이터를 우선한다.
이러한 특수 노드들은 직렬화된 이진-포맷 문서에 포함될 때, 이어질 바이트의 수를 나타내는 부호화되지 않은 바이트(unsigned byte)가 뒤따르며, 텍스트 또는 데이터에 관련된 바이트가 뒤따르는 "Chars8Text" 또는 "Bytes8Text", 이어질 바이트의 수를 나타내는 2바이트(부호화되지 않음. LSB가 먼저 저장됨)가 뒤따르고, 그 뒤에 실제 바이트가 뒤따르는 "Chars16Text" 또는 "Bytes16Text", 및 이어 질 바이트의 수를 나타내는 4바이트(부호화됨, LSB가 먼저 저장됨, 음수는 허용되지 않음)가 뒤따르고, 그 뒤에 실제 바이트가 뒤따르는 "Chars32Text" 또는 "Bytes32Text"를 포함한다. "Bytes...Text" 특수 노드는 인코딩을 필요로 하지 않고서 이진 데이터의 직접적인 표현이 뒤따를 수 있다.
본 실시예는 관련 숫자 값을 보다 효율적으로 직렬화하기 위하여 일반적으로 발생하는 숫자 값에 대한 숏컷 특수 노드를 포함한다. 예를 들어, 숫자 0은 기존에 전형적으로 "정수 노드"를 사용하여 숫자 0과 함께 직렬화될 것이다. 그러나, 도 4b의 표에 나타난 바와 같이, 현재 기술하는 예시적인 실시예는 값 0을 직렬화하기 위하여 특수 노드 "ZeroText"(바이트 값이 128인 이진-데이터 유닛을 가짐)를 이용한다. 문자 "0" 및 숫자 "0"은 이들이 전형적으로 XML 문서에서 동일한 의미를 가지기 때문에 동일한 특수 노드에 의해 표현될 수 있으며, 따라서 상호교환적으로 사용될 수 있다.
도 4c는 도 4b에 도시된 텍스트-관련 특수 노드 중 몇몇의 소정 특징을 기술하는 표이다. 이들은 "참" 및 "거짓", 정수, 부동 소수(float), 십진 스트링, 날짜 및 시간, 및 리스트뿐 아니라 상기에 기술된 "0" 텍스트와 같은 특정 텍스트 스트링에 대한 특수 노드를 포함한다.
상기 언급된 바와 같이, 도 4b의 텍스트-관련 특수 노드는 관련 "...TextWithEndElement" 노드를 포함한다. 이들 각각은 관련 특수 노드, 예를 들어, "DictionaryTextWithEndElement" 및 "Int16TextWithEndElement"에 대응하는 형태를 갖는다.
도 2를 다시 참조하면, 이러한 구조들은 구성요소(200) 내의 마지막 ElementContents 구조(240)에서 사용될 수 있다. EndElement 노드(250) 대신에 자신이 마지막 ElementContents 구조(240)라는 것을 나타내기 위하여 "...WithEndElement" 특수 노드가 사용될 수 있다. 예를 들어, 다음 두 형태 모두 <foo>3</foo>를 직렬화한다.
Figure 112005071068674-PAT00004
따라서, "...WithEndElement" 특수 노드가 관련 "...Text" 특수 노드 대신 사용될 때, EndElement 노드(250)는 사용될 필요가 없다.
본 명세서에 제공된 특수 노드에 대한 설명의 관점에서, 이진-데이터 유닛으로서의 사용을 위한 여러 다른 특수 노드가 XML 분야에서 숙련된 기술을 가진 자들에게 명백할 것이다.
구성요소(200)가 여러 ElementContents 구조(240)를 포함하면, 구조(240)는 직렬화 효율성을 더욱 개선하기 위하여 연결(concatenate)될 수 있다. 예를 들어, 다음 4개의 예시적인 ElementContents 구조(240)가 구성요소(200)에 포함되면,
Figure 112005071068674-PAT00005
그들은 "<ELEM>ABC<FOO/>XYZ</ELEM>"으로 나타나도록 연결될 수 있다.
도 4b의 텍스트-관련 특수 노드 중 적어도 몇몇에서 연결을 이용할 수 있다. 예를 들어, 스트링으로 읽을 때, Chars8Text("BC")가 뒤따르는 Chars8Text("A")가 "ABC"로 연결될 수 있다. 소정 실시예에서, 날짜/시간 스트링 및 값 0 스트링과 같은 특정 스트링 타입은 이웃 노드와 연결되지 않는다. 예를 들어, Char8Text("0")이 뒤따르는 Int8Text(23)은 정수로 읽으려 할 때 숫자 230으로 역직렬화되지 않을 것이다.
소정 실시예에서, 연속적인 리스트 또한 연결되지 않으며, 자신의 개별적인 식별자를 유지한다. 예를 들어, List(1,2) 및 List(3,4)는 정수들의 어레이로서 읽으려 할 때 {1,2,3,4}로 역직렬화되지 않을 것이다.
본 발명의 일 실시예에서 ElementContent 구조(240)는 세 가지 형태 중 하나를 갖는다. ElementContent 구조(240)는 구성요소 자체일 수 있고(구성요소(200)에 임베딩됨), 텍스트 또는 기타 데이터를 포함할 수 있으며, 코멘트에 대응하는 스트링을 포함하는 코멘트 노드일 수 있다.
이제 배경 부분에 먼저 기술된 예시적인 XML 문서로 되돌아가면, 본 발명의 이진 XML 포맷의 일 실시예는 이 예시적인 문서를 다음과 같이 직렬화할 것이다.
1번째 바이트: 0("간단한 구성요소의 시작" 특수 노드의 이진-데이터 유닛에 대한 것)
2번째 바이트: 4(구성요소 이름에 대해 직렬화될 스트링의 길이)
3번째/4번째/5번째/6번째 바이트: 66, 111, 111, 107(UTF8 인코딩에서의 'B', 'o', 'o', 'k')
7번째 바이트: 5("간단한 속성의 시작" 특수 노드에 대한 이진-데이터 유닛에 대한 것)
8번째 바이트: 5(속성 이름에 대해 전송될 스트링의 길이)
9번째-13번째 바이트: 'P', 'r', 'I', 'c', 'e'(UTF8 인코딩에서)
14번째 바이트: 131("작은 정수 텍스트" 특수 노드의 이진-데이터 유닛에 대한 것)
15번째 바이트: 35(정수 속성에 대한 값이며, 문자 '3' 및 '5'로서 인코딩될 필요없음)
등...
편리하게도 소정 실시예에서는, 인포셋의 직렬화를 제어하는 객체-지향 코드가 텍스추얼 직렬화에 대한 기존의 메소드 호출과 동일한 패턴을 따르는 메소드 호출을 갖는다. 따라서, 방법(100)은 호출에 의해 이진 직렬화기 및/또는 이진 역-직렬화기에 인보크된 프로세싱을 프로그래머가 알 필요없이 XML 문서의 직접적인 이진 직렬화를 제공할 수 있다. 예를 들어, "Binary XML Writer"에의 함수 호출들의 집합이 다음과 같이 보일 수 있다.
Figure 112005071068674-PAT00006
이것은 상기 배경 부분에서 기술된 것과 유사하게 나타날 수 있지만, "Binary XML Writer"는 상기 기술된 바와 같이 이진-포맷화된 XML을 생성하기 위하 여 방법(100)을 구현한다.
본 발명은 특정 프로토콜 및/또는 포맷으로 제한되지 않는다. 본 발명의 원리를 구현하기 위해 사용될 수 있는 한 예시적인 프로토콜은 SOAP이다.
부분집합 - 본 발명의 소정 실시예에서, 부분집합은 직렬화된 문서의 일부이다. 예를 들어, 부분집합은 문서에 포함된 하나 이상의 토큰에 의해 식별된다. 특히, 부분집합은 독자적(self-contained)이다. 즉, 부분집합은 부분집합의 역직렬화를 가능하게 하기 위하여 부분집합의 외부에 있는 컨텐츠를 참조하지 않는다.
존재한다면, 선택적 부분집합 노드(210)는 본 발명의 일 실시예에 따라 구성요소(200) 및 그것의 컨텐츠(존재한다면, 포함된 구성요소의 전체 트리를 포함함)가 부분집합이라는 것을 나타낸다. 도 4a의 표에 관련된 예시적인 실시예에서, 부분집합 노드는 바이트 값 15를 갖는 이진-데이터 유닛에 의해 식별된다. 부분집합 노드는 또한 "태그" 또는 "토큰"이라 불릴 수 있다.
소정 실시예에서, 부분집합은 시작 태그 및 종료 태그에 의해 분리된다. 몇몇 실시예들은 종료 태그를 이용하지 않는다. 예를 들어, StartElement 구조(220)에 대한 접두사로서 부분집합 노드(210)를 이용하는 일 실시예는 부분집합의 종료를 나타내기 위하여 어떠한 특수 노드도 필요로 하지 않는다. 본 실시예에서, 구성요소의 종료는 구성요소에 대응하는 부분집합의 종료를 나타낸다.
본 발명의 일 실시예에 따르면, 부분집합은 부분집합에 의해 보유된 의미 중 어떠한 것도 잃지 않고서 문서의 나머지에 관계없이 프로세싱될 수 있는 XML 문서의 부분이다. 부분집합은 부분집합의 외부에 있는 컨텐츠를 참조하지 않는다.
범위 내에 있을 수 있는 임의의 딕셔너리를 포함하여 현재의 범위에 독립적인 문서의 섹션을 생성 및 보안하기 위한 메커니즘을 제공함으로써, 부분집합은 디지털 서명 및 검증을 위한 효율적인 메커니즘을 제공할 수 있다. 특히, 예를 들어, 현재의 직렬화/역직렬화 범위를 알지 못하는 소비자들에게 포워딩될 수 있도록, 서명되거나 검증될 바이트들이 메모리에 순차적으로 존재할 수 있다.
일 실시예에서, XML 부분집합은 직렬화된 문서에서 두 개의 토큰에 의해 표기되는데, 하나는 부분집합의 시작을 표시하는 것이며, 또하나는 종료를 표시하는 것이다. 예를 들어, 이것은 부분집합의 프로세싱이 현재의 범위에 대한 어떠한 의존성도 갖지 않음을 보장하기 위하여, 부분집합이 나타날 때 판독기/작성자가 현재의 딕셔너리를 리셋하도록 한다. 종료 토큰이 발견되면, 이전의 딕셔너리 상태가 복구될 수 있다. 본 실시예는 이진 XML 포맷을 역직렬화하는 판독기가, 소비자가 부분집합을 결코 요청하지 않는 경우, 부분집합의 존재를 문서의 소비자에게 이진 XML 포맷으로 보이지 않도록 남겨두는 어플리케이션 프로그래밍 인터페이스(API)를 노출할 것을 선택하게 한다.
부분집합은 자신을 포함하는 문서의 특정 부분으로서 취급될 수 있다. 본 발명의 소정 실시예에서, 부분집합 노드와 같이 부분집합 경계를 넘어설 때 특수 프로세싱이 인보크된다. 이러한 실시예들 중 몇몇에서, 특수 프로세싱은 이진 직렬화된 문서의 판독기의 책임이다.
상기 기술된 바와 같이, 하나 이상의 부분집합을 포함하는 이진 XML-포맷화된 문서를 수신하는 사용자는 하나 이상의 부분집합의 존재를 알 필요가 없다. 따 라서, 문서는 부분집합이 있든지 없든지 직렬화될 수 있고, 나중에 동일한 본래의 문서를 노출하도록 역직렬화될 수 있다. 즉, 부분집합의 사용은 본래의 XML 문서를 변경하지 않는다. 이진 포맷화된 데이터를 소비하는 판독기 또는 기타 엔터티만이 임의의 부분집합의 존재를 인지할 필요가 있다.
유사하게, 직렬화된 문서가 부분집합을 포함하는 경우, 판독기(예를 들어, 역직렬화기)는 부분집합이 존재했던 곳을 노출할 수 있다. 따라서, 예를 들어, 판독기는 수신된 이진 포맷화된 문서를 소프트웨어 프로그램에 의한 프로세싱을 위해 본래의 XML 문서로 변환할 수 있고, 그 후 독자는 부분집합화되었던 XML 문서의 부분들을 소프트웨어 프로그램에 알릴 수 있다.
부분집합은 다음 유익한 사용 중 하나 이상을 가질 수 있다. 부분집합은 XML 문서로부터 "잘라내어져(cut out)" 또다른 시스템에 전송될 수 있다. 부분집합을 읽기 위해 필요한 모든 정보가 부분집합 내부에 둘러싸여져 있기 때문에, 수신측 시스템은 부분집합의 신뢰성을 보장받을 수 있다.
부분집합이 디지털 서명되면, 아무도 부분집합 외부에 있고 서명되지 않은 항목들을 변경함으로써 부분집합의 의미를 함부로 변경할 수 없음을 보장받을 수 있다. 마찬가지로, 이것은 부분집합이 자신의 외부에 있는 어떠한 것도 참조하지 않도록 보장받을 수 있기 때문이다. 부분집합은 네스팅될 수 있고, 방법(100)에 관하여 상기 기술된 특성들을 지원할 수 있다.
직렬화기 및 역-직렬화기는 부분집합이 나타났을 때 특수 기능을 수행할 수 있다. 예를 들어, 일 실시예에서, 부분집합을 직렬화할 때 직렬화기는 부분집합의 외부에 있는 딕셔너리 식별자를 내보내지 않는다. 또한, 일 실시예에서, 부분집합의 직렬화 동안에 새로운 스트링을 내보낼 때 직렬화기는 부분집합 외부에 있는 딕셔너리에 컨텐츠를 추가하지 않는다. 또한, 직렬화기는 부분집합을 빠져나갈 때 외부 딕셔너리(outer dictionary)를 복구할 수 있다. 일 실시예에서, 직렬화기는 네스팅된 부분집합에 대해 딕셔너리들의 스택을 유지한다. 역-직렬화기는 이러한 직렬화기의 기능에 대응하는 기능을 수행할 수 있다.
일 실시예에서, 부분집합은 부모 구성요소에서 정의된 임의의 네임스페이스 접두사를 사용하지 않거나, 또는 사용하기 전에 네임스페이스 접두사를 재정의한다. 부분집합은 XML 문서의 프로세싱에 영향을 주는 임의의 표준 XML 속성을 이용할 필요가 없다. 예를 들어, 일 실시예에서, XML 분야에서 숙련된 기술을 가진 자들에게 잘 알려진 xml:lang 및 xml:space 속성, 및 속성에 대해 사용된 인가받은 이름이 재방출된다. 본 실시예에서, ElementContents 구조(240)에서 사용된 임의의 인가받은 이름은 부모 구성요소에서 정의된 어떠한 네임스페이스 접두사도 사용하지 않거나, 또는 사용하기 전에 네임스페이스 접두사를 재정의한다.
따라서, 일 실시예에서, 직렬화기는 자신이 알고 있는 부분집합의 데이터에 영향을 줄 수 있는 부분집합의 외부에서 정의된 정보 모두를 재방출한다. 이것은 네임스페이스 접두사 선언, 및 xml:lang 및 xml:space와 같은 표준 XML 속성들을 포함할 수 있지만 이들로 제한되지는 않는다.
일 실시예에서, 부분집합에 들어갈 때, 역직렬화기는 자신이 아는 부분집합의 데이터에 영향을 줄 수 있는 부분집합의 외부에서 정의된 정보 모두를 잊는다. 이것은 네임스페이스 접두사 선언, 및 네스팅된 부분집합에 대한 xml:lang 및 xml:space와 같은 표준 XML 속성을 포함할 수 있지만 이들로 제한되지는 않는다. 부분집합을 빠져나갈 때, 역직렬화기는 직렬화기가 아는 부분집합에 있는 데이터에 영향을 줄 수 있는 부분집합의 외부에서 정의된 정보 모두를 상기할 수 있다. 역직렬화기는 자신이 아는 부분집합에 있는 데이터에 영향을 줄 수 있는 부분집합의 외부에서 정의된 모든 정보의 스택을 유지할 수 있다.
부분집합이 나타나면, 밴드 외에서 정의된 것들을 포함하여 임의의 또는 모든 현재 정의된 딕셔너리 식별자들을 제쳐놓을 수 있다. 부분집합을 빠져나갈 때, 부분집합 내부에서 정의된 딕셔너리 항목들이 잊혀질 수 있고, 이전의 딕셔너리 항목들이 복구될 수 있다.
이제 도 5를 참조하면, 문서를 직렬화하기 위해 부분집합을 이용하는 방법의 예가 기술된다. 도 5는 본 발명의 일 실시예에 따라 XML 문서를 프로세싱하기 위한 방법(500)의 흐름도이다. 방법(500)은 하나 이상의 정보 항목을 포함하는 XML 정보 집합에 관련된 XML 문서를 제공하는 단계(520), 및 XML 문서를 직렬화된 포맷으로 직렬화하는 단계(530)를 포함한다. 직렬화된 포맷은 부분집합 노드를 포함하는 적어도 하나의 부분집합 구성요소를 포함한다. 부분집합 노드는 XML 문서의 나머지에 관계없이 적어도 하나의 부분집합 구성요소가 역-직렬화될 수 있다는 것을 나타낸다.
방법(100)과 유사하게, 방법(500)은 정보 항목을 대응하는 이진-데이터 유닛에 관련시키는 단계(510)를 포함할 수 있고, 정보 항목과 대응하는 이진-데이터 유 닛 사이의 관련성을 사용하여 직렬화된 포맷으로부터 XML 문서를 역-직렬화하는 단계(540)를 포함할 수 있다.
상기 기술된 부분집합 구성요소와 같이, 부분집합은 부분집합 구성요소를 역-직렬화하기 위해 필요한 모든 컨텐츠를 포함할 수 있다. 부분집합 구성요소는 XML 문서의 나머지에 관계없이 역-직렬화될 수 있고/거나, 문서의 나머지를 포함하지 않고서 추출 및 전송(550)될 수 있다. 게다가, 몇몇 구현에서는, 부분집합 구성요소의 범위가 그 부분집합 구성요소를 포함하는 XML 문서의 범위에 독립적이다. 부분집합 구성요소는 상기 기술된 바와 같은 부분집합들의 부가적인 특성들을 가질 수 있다.
본 발명의 범위 내의 실시예들은 컴퓨터-실행가능 명령어 또는 데이터 구조를 운반 또는 저장하기 위한 컴퓨터-판독가능 매체를 포함할 수 있다. 그러한 컴퓨터-판독가능 매체는 범용 또는 특수용 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한을 가하지 않는 예로서, 그러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장 장치와 같은 물리적 컴퓨터-판독가능 매체, 또는 원하는 프로그램 코드를 컴퓨터-실행가능 명령어 또는 데이터 구조의 형태로 운반 또는 저장하기 위해 사용될 수 있고, 범용 또는 특수용 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함할 수 있다.
네트워크 또는 또다른 통신 연결(유선, 무선이든지, 또는 유선 또는 무선의 조합이든지)을 통해 정보가 컴퓨터에 전달 또는 제공되는 경우, 컴퓨터는 연결을 컴퓨터-판독가능 매체로서 여길 수 있다. 따라서, 임의의 그러한 연결은 컴퓨터-판독가능 매체로 여겨질 수 있다. 상기의 조합들 또한 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터-실행가능 명령어는, 예를 들어, 범용 컴퓨터, 특수용 컴퓨터, 또는 특수용 프로세싱 장치가 특정 기능 또는 기능들의 그룹을 수행하도록 하는 임의의 명령어 및 데이터를 포함한다. 컴퓨터-실행가능 명령어는, 예를 들어, 어셈블리 언어, 또는 심지어 소스 코드와 같은 이진, 중간 포맷 명령어일 수 있다.
본 분야에서 숙련된 기술을 가진 자들은 본 발명이 개인용 컴퓨터, 포켓형 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그래밍가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 여러 타입의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실행될 수 있음을 잘 알 것이다. 본 발명은 또한 통신 네트워크를 통해 연결되는(유선 링크, 무선 링크에 의해서든지, 유선 또는 무선 링크의 조합에 의해서든지) 로컬 및 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘 모두에 위치될 수 있다.
컴퓨터는 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터는 각각 또다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치, 또는 기타 일반적인 네트워크 노드일 수 있고, 전형적으로 상기 기술된 구성요소들 중 다수 또는 모두를 포함한다. 논리적 연결은, 예를 들어, 근거리 통신망(LAN) 및 광역 통신망(WAN)을 포함할 수 있으며, 이는 본 발명에서 제한이 아닌 예로서 제공된다. 그러한 네트워크 환경은 사무실-규모 또는 기업-규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
컴퓨팅 시스템은 하나 이상의 기능을 수행하기 위해 소프트웨어를 사용할 수 있는 임의의 하드웨어 컴포넌트 또는 컴포넌트들로 폭넓게 정의될 수 있다. 컴퓨팅 시스템의 예는 데스크탑 컴퓨터, 랩탑 컴퓨터, PDA, 전화기, 또는 프로세싱 기능을 갖는 임의의 기타 시스템 또는 장치를 포함한다.
본 발명의 소정 실시예들은 문서를 SOAP 엔벨로프로서 직렬화한다. 잘 알려진 바와 같이, SOAP 엔벨로프는, 예를 들어, 하이퍼텍스트 전송 프로토콜(HTTP), HTTP 보안(HTTPS), 간단한 메일 전송 프로토콜(SMTP), 사용자 데이터그램 프로토콜(UDP), 전송 제어 프로토콜(TCP), 블루투스 등과 같은 여러 전송 프로토콜을 통해 전송될 수 있다.
따라서, 본 발명의 적어도 하나의 실시예에 대한 몇몇 양상을 기술하였지만, 본 분야에서 숙련된 기술을 가진 자들은 다양한 변경, 수정, 및 개선이 쉽게 발생할 것이라는 점을 잘 알 것이다. 그러한 변경, 수정, 및 개선은 이러한 개시의 부분으로 의도되며, 본 발명의 취지 및 범위 내에 속하는 것으로 의도된다. 따라서, 전술한 설명 및 도면은 단지 예시적인 것이다.
본 발명에 따르면, 전자-기반 문서가 직렬화된 문서의 크기를 감소시키고, 프로세싱의 속도를 증가시키며/거나 전달을 위해 필요한 시간을 감소시킬 수 있는 방식으로 직렬화 및/또는 역-직렬화될 수 있다.

Claims (20)

  1. 컴퓨터-기반 시스템에서 확장성 마크업 언어(XML) 문서를 프로세싱하기 위한 방법으로서,
    다수의 정보 항목 각각을 다수의 이진-데이터 유닛 중 대응하는 이진-데이터 유닛에 관련시키는 단계,
    상기 다수의 정보 항목 중 하나 이상을 포함하는 XML 정보 집합에 관련된 XML 문서를 제공하는 단계, 및
    상기 XML 문서를 이진 XML 포맷으로 직렬화하는 단계 - 상기 직렬화하는 단계는 상기 XML 정보 집합 중 하나 이상의 정보 항목을 그들의 대응하는 하나 이상의 이진-데이터 유닛으로 변환하는 단계를 포함함 - , 또는
    상기 XML 문서를 상기 이진 XML 포맷으로부터 역-직렬화하는 단계 - 상기 역-직렬화하는 단계는 상기 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 그들의 대응하는 하나 이상의 정보 항목으로 변환하는 단계를 포함함 -
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 직렬화하는 단계는, 상기 하나 이상의 정보 항목을 먼저 텍스추얼(textual) XML 포맷으로 변환하지 않고서 상기 하나 이상의 정보 항목을 그들의 대응하는 이진-데이터 유닛으로 변환하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 역-직렬화하는 단계는, 상기 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 먼저 텍스추얼 XML 포맷으로 변환하지 않고서 상기 하나 이상의 이진-데이터 유닛을 그들의 대응하는 정보 항목으로 변환하는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    상기 직렬화하는 단계는, 직렬화되고 있는 현재의 정보 항목 이외에 상기 XML 문서의 하나 이상의 정보 항목 중 어떠한 것의 컨텐츠도 알지 않고서 수행되는 방법.
  5. 제4항에 있어서,
    상기 직렬화하는 단계는 적어도 상기 XML 문서에 관련된 정보 항목 중 대부분을 먼저 수집하지 않고서 수행되는 방법.
  6. 제1항에 있어서,
    상기 직렬화하는 단계는 상기 하나 이상의 정보 항목을 텍스추얼 XML 포맷으로 변환하는 것에 관련된 시퀀스에 대응하는 시퀀스로 상기 하나 이상의 정보 항목을 변환하는 단계를 포함하는 방법.
  7. 제1항에 있어서,
    상기 하나 이상의 정보 항목 중 적어도 하나는 이진-저장 포맷을 가지며, 상기 관련시키는 단계는 상기 하나 이상의 정보 항목 중 적어도 하나를 그것의 이진-저장 포맷에 관련시키는 단계를 포함하는 방법.
  8. 제1항에 있어서,
    상기 하나 이상의 정보 항목 중 적어도 하나는 숫자, 문자, 시간 및 날짜를 포함하는 항목들의 그룹으로부터 선택되는 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 정보 항목은 하나 이상의 스트링을 포함하고, 상기 관련시키는 단계는 상기 하나 이상의 스트링 각각을 하나 이상의 스트링 식별자 중 대응하는 스트링 식별자에 관련시키는 단계를 포함하며, 상기 직렬화하는 단계는 상기 하나 이상의 스트링을 그들의 대응하는 스트링 식별자로 변환하는 단계를 포함하고, 상기 역-직렬화하는 단계는 상기 하나 이상의 스트링 식별자를 그들의 대응하는 하나 이상의 스트링으로 변환하는 단계를 포함하는 방법.
  10. 제9항에 있어서,
    상기 하나 이상의 스트링 식별자 각각은 숫자에 관련되는 방법.
  11. 제9항에 있어서,
    직렬화하기 전에, 상기 하나 이상의 스트링 중 적어도 일부와 그들의 대응하는 하나 이상의 스트링 식별자 사이의 관련성에 관한 정보를 직렬화 유닛 및 역-직렬화 유닛에 제공하는 단계를 더 포함하는 방법.
  12. 제9항에 있어서,
    직렬화하는 동안에, 상기 하나 이상의 스트링 중 적어도 일부와 그들의 대응하는 하나 이상의 스트링 식별자 사이의 관련성에 관한 정보를 직렬화 유닛 및 역-직렬화 유닛에 제공하는 단계를 더 포함하는 방법.
  13. 제9항에 있어서,
    상기 관련시키는 단계는 상기 XML 문서를 직렬화하는 동안 상기 하나 이상의 스트링의 일부의 관련성을 정의하는 단계, 및 역-직렬화 유닛에 상기 일부의 관련성을 알리기 위하여 상기 하나 이상의 스트링의 상기 일부 및 그들의 대응하는 하나 이상의 스트링 식별자 둘 모두를 상기 직렬화된 XML 문서에 포함시키는 단계를 포함하는 방법.
  14. 제1항에 있어서,
    상기 하나 이상의 정보 항목은 하나 이상의 프리미티브 타입을 포함하며,
    상기 관련시키는 단계는 상기 하나 이상의 프리미티브 타입 각각을 대응하는 타입 식별자 및 대응하는 이진 숫자에 관련시키는 단계를 포함하는 방법.
  15. 제1항에 있어서,
    상기 하나 이상의 정보 항목은 하나 이상의 XML 구성을 포함하는 방법.
  16. 제1항에 있어서,
    제1 유닛으로부터 제2 유닛에 상기 이진 XML 포맷을 전송하는 단계를 더 포함하며, 상기 제1 유닛 및 상기 제2 유닛은 프로세서, 저장 장치, 클라이언트 컴퓨터 및 서버를 포함하는 유닛 타입들의 그룹으로부터 각각 선택되는 방법.
  17. 제16항에 있어서,
    상기 제1 유닛은 상기 XML 문서를 직렬화하고, 상기 제2 유닛은 상기 XML 문서를 역-직렬화하는 방법.
  18. 제1항에 있어서,
    상기 이진 포맷으로 직렬화된 XML 문서는 상기 XML 문서에 관련된 텍스추얼 XML 문서와의 직접 대응(direct correspondence)을 갖는 방법.
  19. 제1항에 있어서,
    상기 XML 문서는 SOAP 엔벨로프(envelope)인 방법.
  20. 적어도 하나의 프로세서상에서의 실행을 위한 프로그램으로 인코딩된 컴퓨터 판독가능 매체로서, 상기 프로그램은 상기 적어도 하나의 프로세서상에서 실행될 때, 확장성 마크업 언어(XML) 문서를 프로세싱하기 위한 방법을 수행하고, 상기 방법은,
    다수의 정보 항목 각각을 다수의 이진-데이터 유닛 중 대응하는 이진-데이터 유닛에 관련시키는 단계,
    상기 다수의 정보 항목 중 하나 이상을 포함하는 XML 정보 집합에 관련된 XML 문서를 제공하는 단계, 및
    상기 XML 문서를 이진 XML 포맷으로 직렬화하는 단계 - 상기 직렬화하는 단계는 상기 XML 정보 집합 중 하나 이상의 정보 항목을 그들의 대응하는 하나 이상의 이진-데이터 유닛으로 변환하는 단계를 포함함 - , 또는
    상기 XML 문서를 상기 이진 XML 포맷으로부터 역-직렬화하는 단계 - 상기 역-직렬화하는 단계는 상기 이진 XML 포맷의 하나 이상의 이진-데이터 유닛을 그들의 대응하는 하나 이상의 정보 항목으로 변환하는 단계를 포함함 -
    를 포함하는 컴퓨터 판독가능 매체.
KR1020050117881A 2005-01-25 2005-12-06 Xml 문서를 프로세싱하기 위한 방법 및 시스템 KR20060085907A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/042,555 2005-01-25
US11/042,555 US7441185B2 (en) 2005-01-25 2005-01-25 Method and system for binary serialization of documents

Publications (1)

Publication Number Publication Date
KR20060085907A true KR20060085907A (ko) 2006-07-28

Family

ID=36463489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050117881A KR20060085907A (ko) 2005-01-25 2005-12-06 Xml 문서를 프로세싱하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US7441185B2 (ko)
EP (1) EP1684191A3 (ko)
JP (1) JP2006209745A (ko)
KR (1) KR20060085907A (ko)
CN (1) CN1811753A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8723703B2 (en) 2011-09-19 2014-05-13 Electronics And Telecommunications Research Institute Method and apparatus for encoding and decoding structured data
US9753940B2 (en) 2010-07-21 2017-09-05 Samsung Electronics Co., Ltd. Apparatus and method for transmitting data

Families Citing this family (84)

* 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
US7350199B2 (en) * 2003-01-17 2008-03-25 Microsoft Corporation Converting XML code to binary format
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
US8346737B2 (en) * 2005-03-21 2013-01-01 Oracle International Corporation Encoding of hierarchically organized data for efficient storage and processing
KR20070116893A (ko) * 2005-03-30 2007-12-11 웰치알린인코포레이티드 복수의 네트워크 엘리먼트 사이의 정보 통신
US8788687B2 (en) 2006-10-04 2014-07-22 Welch Allyn, Inc. Dynamic medical object information base
US20060230339A1 (en) * 2005-04-07 2006-10-12 Achanta Phani G V System and method for high performance pre-parsed markup language
US8356053B2 (en) * 2005-10-20 2013-01-15 Oracle International Corporation Managing relationships between resources stored within a repository
US7730082B2 (en) 2005-12-12 2010-06-01 Google Inc. Remote module incorporation into a container document
US7730109B2 (en) * 2005-12-12 2010-06-01 Google, Inc. Message catalogs for remote modules
US8185819B2 (en) 2005-12-12 2012-05-22 Google Inc. Module specification for a module to be incorporated into a container document
US7725530B2 (en) 2005-12-12 2010-05-25 Google Inc. Proxy server collection of data for module incorporation into a container document
US7890853B2 (en) * 2006-02-13 2011-02-15 Nextair Corporation Apparatus and machine-readable medium for generating markup language representing a derived entity which extends or overrides attributes of a base entity
US7644062B2 (en) * 2006-03-15 2010-01-05 Oracle International Corporation Join factorization of union/union all queries
US7945562B2 (en) * 2006-03-15 2011-05-17 Oracle International Corporation Join predicate push-down optimizations
US7809713B2 (en) * 2006-03-15 2010-10-05 Oracle International Corporation Efficient search space analysis for join factorization
US20070244865A1 (en) * 2006-04-17 2007-10-18 International Business Machines Corporation Method and system for data retrieval using a product information search engine
US9460064B2 (en) * 2006-05-18 2016-10-04 Oracle International Corporation Efficient piece-wise updates of binary encoded XML data
EP2036003B1 (en) * 2006-06-30 2017-05-03 Leica Biosystems Imaging, Inc. Method for storing and retrieving large images via dicom
JP4855172B2 (ja) * 2006-07-31 2012-01-18 シャープ株式会社 生体情報測定装置、管理装置、および生体情報通信システム
US8185830B2 (en) * 2006-08-07 2012-05-22 Google Inc. Configuring a content document for users and user groups
US20090037935A1 (en) * 2006-08-07 2009-02-05 Shoumen Saha Updating The Configuration of Container Documents
US8407250B2 (en) 2006-08-07 2013-03-26 Google Inc. Distribution of content document to varying users with security customization and scalability
US8954861B1 (en) 2006-08-07 2015-02-10 Google Inc. Administrator configurable gadget directory for personalized start pages
US20080056152A1 (en) * 2006-09-05 2008-03-06 Sharp Kabushiki Kaisha Measurement data communication device, health information communication device, information acquisition device, measurement data communication system, method of controlling measurement data communication device, method of controlling information acquisition device, program for controlling measurement data communication device, and recording medium
US8255790B2 (en) * 2006-09-08 2012-08-28 Microsoft Corporation XML based form modification with import/export capability
US9183321B2 (en) 2006-10-16 2015-11-10 Oracle International Corporation Managing compound XML documents in a repository
US7827177B2 (en) * 2006-10-16 2010-11-02 Oracle International Corporation Managing compound XML documents in a repository
US8015483B2 (en) 2006-10-20 2011-09-06 Microsoft Corporation Processing an XML feed with extensible or non-typed elements
US7627566B2 (en) * 2006-10-20 2009-12-01 Oracle International Corporation Encoding insignificant whitespace of XML data
US9953103B2 (en) * 2006-11-16 2018-04-24 Oracle International Corporation Client processing for binary XML in a database system
US8909599B2 (en) * 2006-11-16 2014-12-09 Oracle International Corporation Efficient migration of binary XML across databases
US7974993B2 (en) * 2006-12-04 2011-07-05 Microsoft Corporation Application loader for support of version management
US7779139B2 (en) * 2007-04-30 2010-08-17 Microsoft Corporation Normalization of binary data
US7933933B2 (en) * 2007-07-30 2011-04-26 Oracle International Corporation Fast path loading of XML data
US8291310B2 (en) * 2007-08-29 2012-10-16 Oracle International Corporation Delta-saving in XML-based documents
US8090731B2 (en) * 2007-10-29 2012-01-03 Oracle International Corporation Document fidelity with binary XML storage
US8438152B2 (en) * 2007-10-29 2013-05-07 Oracle International Corporation Techniques for bushy tree execution plans for snowstorm schema
US8250062B2 (en) 2007-11-09 2012-08-21 Oracle International Corporation Optimized streaming evaluation of XML queries
US8126841B2 (en) * 2008-02-20 2012-02-28 International Business Machines Corporation Storage and retrieval of variable data
US8145794B2 (en) 2008-03-14 2012-03-27 Microsoft Corporation Encoding/decoding while allowing varying message formats per message
FR2929778B1 (fr) * 2008-04-07 2012-05-04 Canon Kk Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml.
FI123499B (fi) * 2008-05-05 2013-06-14 Sensinode Oy Menetelmä ja laite viestien prosessoimiseksi
US20090305200A1 (en) * 2008-06-08 2009-12-10 Gorup Joseph D Hybrid E-Learning Course Creation and Syndication
FR2936623B1 (fr) * 2008-09-30 2011-03-04 Canon Kk Procede de codage d'un document structure et de decodage, dispositifs correspondants
US10943030B2 (en) 2008-12-15 2021-03-09 Ibailbonding.Com Securable independent electronic document
CN101477532B (zh) * 2008-12-23 2011-09-28 北京畅游天下网络技术有限公司 实现数据存储、读取的方法、装置及系统
FR2945363B1 (fr) * 2009-05-05 2014-11-14 Canon Kk Procede et dispositif de codage d'un document structure
WO2011011718A2 (en) * 2009-07-24 2011-01-27 Welch Allyn, Inc. Configurable health-care equipment apparatus
US8656055B2 (en) * 2009-08-25 2014-02-18 Oracle International Corporation Protocol wrapper and serializer/deserializer for facilitating data exchanges
US8255372B2 (en) 2010-01-18 2012-08-28 Oracle International Corporation Efficient validation of binary XML data
WO2011103886A1 (en) * 2010-02-26 2011-09-01 Nec Europe Ltd. A method for processing a soap message within a network and a network
KR101083494B1 (ko) * 2010-06-16 2011-11-16 엔에이치엔(주) 바이너리 패킷 중계 시스템 및 방법
USD635681S1 (en) 2010-07-22 2011-04-05 Welch Allyn, Inc. Patient-monitor housing
USD632397S1 (en) 2010-07-22 2011-02-08 Welch Allyn, Inc. Portions of a patient-monitor housing
USD671222S1 (en) 2010-07-22 2012-11-20 Welch Allyn, Inc. Module for a patient-monitor or the like
US8149148B1 (en) 2010-10-08 2012-04-03 Microsoft Corporation Local binary XML string compression
CN102004762B (zh) * 2010-11-05 2015-10-07 中国电信股份有限公司 生成电子书的方法和装置、以及下载电子书的方法和装置
US10756759B2 (en) 2011-09-02 2020-08-25 Oracle International Corporation Column domain dictionary compression
US10261980B2 (en) * 2012-08-08 2019-04-16 Fletcher James Method and system for persisting add-in data in documents
CN103684760B (zh) * 2012-09-24 2018-12-07 腾讯科技(深圳)有限公司 通信的加密和解密的方法、装置及系统
US8812523B2 (en) 2012-09-28 2014-08-19 Oracle International Corporation Predicate result cache
CN103841143A (zh) * 2012-11-23 2014-06-04 华为技术有限公司 文件发送方法、接收方法、系统及设备
CN104077335B (zh) * 2013-05-07 2017-05-03 腾讯科技(深圳)有限公司 一种结构化数据的序列化、反序列化方法、装置和系统
GB2519095A (en) 2013-10-09 2015-04-15 Ibm Improving XML communication
CN103699633A (zh) * 2013-12-23 2014-04-02 Tcl集团股份有限公司 一种利用xml实现通用化数据交换的方法和系统
US9870390B2 (en) 2014-02-18 2018-01-16 Oracle International Corporation Selecting from OR-expansion states of a query
US9560136B2 (en) * 2014-08-07 2017-01-31 Sap Se High speed communication protocol
US10148720B1 (en) 2014-12-05 2018-12-04 Quest Software Inc. Systems and methods for data serialization and transfer
US10585887B2 (en) 2015-03-30 2020-03-10 Oracle International Corporation Multi-system query execution plan
CN105183750B (zh) * 2015-07-14 2018-12-28 河南蓝信科技有限责任公司 紧凑式xml解析系统
CN106815238B (zh) * 2015-11-30 2020-10-20 阿里巴巴集团控股有限公司 一种结构化数据的序列化、反序列化方法及装置
JP2017126185A (ja) * 2016-01-13 2017-07-20 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
WO2017185032A1 (en) * 2016-04-22 2017-10-26 Kodiak Networks, Inc. System and method for push-to-talk (ptt) key one-touch calling
JP7076819B2 (ja) 2016-09-15 2022-05-30 ナッツ・ホールディングス、エルエルシー 暗号化されたユーザデータの移動および記憶
US10360066B2 (en) * 2016-10-25 2019-07-23 Entit Software Llc Workflow generation from natural language statements
US10977221B2 (en) * 2017-10-20 2021-04-13 Hewlett Packard Enterprise Development Lp Encoding of data formatted in human-readable text according to schema into binary
US10732944B1 (en) * 2019-05-14 2020-08-04 Baidu Usa Llc Generic verification approach for Protobuf based projects
AU2021251041A1 (en) 2020-04-09 2022-10-27 Nuts Holdings, Llc Nuts: flexible hierarchy object graphs
US11630761B2 (en) * 2021-02-24 2023-04-18 Capital One Services, Llc Methods, systems, and media for generating test authorization for financial transactions
US11698895B2 (en) 2021-02-24 2023-07-11 Capital One Services, Llc Access control for a databank system
US11775420B2 (en) 2021-02-24 2023-10-03 Capital One Services, Llc Methods, systems, and media for accessing data from a settlement file

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2615783C3 (de) * 1976-04-10 1979-06-28 Robert Bosch Gmbh, 7000 Stuttgart Verfahren und Schaltungsanordnung zur Erzeugung von videofrequenten Farbbalkensignalen
US5193181A (en) * 1990-10-05 1993-03-09 Bull Hn Information Systems Inc. Recovery method and apparatus for a pipelined processing unit of a multiprocessor system
US6072743A (en) * 1998-01-13 2000-06-06 Mitsubishi Denki Kabushiki Kaisha High speed operable semiconductor memory device with memory blocks arranged about the center
US6671853B1 (en) * 1999-07-15 2003-12-30 International Business Machines Corporation Method and system for selectively streaming markup language documents
US6209124B1 (en) * 1999-08-30 2001-03-27 Touchnet Information Systems, Inc. Method of markup language accessing of host systems and data using a constructed intermediary
US6643652B2 (en) * 2000-01-14 2003-11-04 Saba Software, Inc. Method and apparatus for managing data exchange among systems in a network
EP1273137B1 (en) * 2000-04-04 2005-02-23 Koninklijke Philips Electronics N.V. Accessing an in home network through the internet
US20020120780A1 (en) * 2000-07-11 2002-08-29 Sony Corporation Two-staged mapping for application specific markup and binary encoding
US7171475B2 (en) * 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
US6823369B2 (en) * 2001-03-14 2004-11-23 Microsoft Corporation Using state information in requests that are transmitted in a distributed network environment
US7500017B2 (en) * 2001-04-19 2009-03-03 Microsoft Corporation Method and system for providing an XML binary format
US20030074636A1 (en) * 2001-10-15 2003-04-17 Ensoftek, Inc. Enabling easy generation of XML documents from XML specifications
US20040201600A1 (en) * 2001-12-14 2004-10-14 Microsoft Corporation Methods and system for providing an XML-based interface description language
US7424717B2 (en) * 2002-05-01 2008-09-09 Bea Systems, Inc. Systems and methods for business process plug-in development
US20040044757A1 (en) * 2002-08-30 2004-03-04 Baker Albert D. Flow-through provisioning with embedded control data
KR100636909B1 (ko) * 2002-11-14 2006-10-19 엘지전자 주식회사 확장성 표기 언어 기반의 전자문서 버전 매김 및 버전을이용한 갱신 문서 제공 방법
US20040205216A1 (en) * 2003-03-19 2004-10-14 Ballinger Keith W. Efficient message packaging for transport
US7185209B2 (en) * 2003-05-28 2007-02-27 Microsoft Corporation End-to-end reliable messaging with complete acknowledgement
US7366729B2 (en) * 2003-06-11 2008-04-29 Wtviii, Inc. Schema framework and a method and apparatus for normalizing schema
JP4418183B2 (ja) * 2003-06-26 2010-02-17 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
JP2005018672A (ja) * 2003-06-30 2005-01-20 Hitachi Ltd 構造化文書の圧縮方法
US20050144137A1 (en) * 2003-12-24 2005-06-30 Kumar B. V. Protocol processing device and method
US7281208B2 (en) * 2004-11-18 2007-10-09 Microsoft Corporation Image stitching methods and systems
US7475289B2 (en) * 2005-02-11 2009-01-06 Microsoft Corporation Test manager

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9753940B2 (en) 2010-07-21 2017-09-05 Samsung Electronics Co., Ltd. Apparatus and method for transmitting data
US8723703B2 (en) 2011-09-19 2014-05-13 Electronics And Telecommunications Research Institute Method and apparatus for encoding and decoding structured data

Also Published As

Publication number Publication date
EP1684191A2 (en) 2006-07-26
JP2006209745A (ja) 2006-08-10
EP1684191A3 (en) 2006-09-27
CN1811753A (zh) 2006-08-02
US7441185B2 (en) 2008-10-21
US20060168513A1 (en) 2006-07-27

Similar Documents

Publication Publication Date Title
US7441185B2 (en) Method and system for binary serialization of documents
Borenstein et al. MIME (multipurpose internet mail extensions): Mechanisms for specifying and describing the format of internet message bodies
Girardot et al. Millau: an encoding format for efficient representation and exchange of XML over the Web
KR101027299B1 (ko) 웹 서비스 통신의 히스토리 구동 최적화를 위한 시스템 및방법
JP5242887B2 (ja) 型付きアプリケーションデータのフレキシブルな転送
US7210097B1 (en) Method for loading large XML documents on demand
Lam et al. XML document parsing: Operational and performance characteristics
US20050114405A1 (en) Flat file processing method and system
US8695018B2 (en) Extensible framework for handling different mark up language parsers and generators in a computing device
US20050144556A1 (en) XML schema token extension for XML document compression
US20080208830A1 (en) Automated transformation of structured and unstructured content
TW200422881A (en) Method and computer-readable medium for importing and exporting hierarchically structured data
US20060167912A1 (en) Method and system for use of subsets in serialized documents
Takase et al. An adaptive, fast, and safe XML parser based on byte sequences memorization
US20040268241A1 (en) Object persister
US6904562B1 (en) Machine-oriented extensible document representation and interchange notation
Werner et al. Compressing soap messages by using pushdown automata
US8954400B2 (en) Method, system and program product for managing structured data
Nottingham et al. Structured Field Values for HTTP
Aziz et al. An Introduction to JavaScript Object Notation (JSON) in JavaScript and .NET
US20040268242A1 (en) Object persister
Borenstein et al. Rfc1341: Mime (multipurpose internet mail extensions): Mechanisms for specifying and describing the format of internet message bodies
US7716576B1 (en) Flexible XML parsing based on p-code
Werner et al. XML compression for web services on resource-constrained devices
Berzosa Macho A context-and template-based data compression approach to improve resource-constrained IoT systems interoperability.

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid