KR100566019B1 - Xml 부호화 기법 - Google Patents
Xml 부호화 기법 Download PDFInfo
- Publication number
- KR100566019B1 KR100566019B1 KR1020037004869A KR20037004869A KR100566019B1 KR 100566019 B1 KR100566019 B1 KR 100566019B1 KR 1020037004869 A KR1020037004869 A KR 1020037004869A KR 20037004869 A KR20037004869 A KR 20037004869A KR 100566019 B1 KR100566019 B1 KR 100566019B1
- Authority
- KR
- South Korea
- Prior art keywords
- packet
- representation
- encoding
- document
- xml document
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8543—Content authoring using a description language, e.g. Multimedia and Hypermedia information coding Expert Group [MHEG], eXtensible Markup Language [XML]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/235—Processing of additional data, e.g. scrambling of additional data or processing content descriptors
- H04N21/2353—Processing of additional data, e.g. scrambling of additional data or processing content descriptors specifically adapted to content descriptors, e.g. coding, compressing or processing of metadata
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/70—Media network packetisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/54—Presence management, e.g. monitoring or registration for receipt of user log-on information, or the connection status of the users
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/20—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
- H04N19/25—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding with scene description coding, e.g. binary format for scenes [BIFS] compression
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1101—Session protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Library & Information Science (AREA)
- Document Processing Apparatus (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Medicines Containing Material From Animals Or Micro-Organisms (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Lubrication Of Internal Combustion Engines (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Information Transfer Between Computers (AREA)
Abstract
계층적 표현(102)에 의해 기술된 문서(104)의 구조 중 적어도 일부를 통신하는 방법 900이 개시된다. 이 방법은 문서(104)의 계층적 표현(예를 들면, 트리 구조)을 식별한다(902). 이 식별은 바람직하게 XML 태그를 사용하여 수행된다. 그러면, 표현은 다수의 데이터 패킷으로 패킷화된다(906). 한쌍의 패킷 사이에는 적어도 하나의 링크가 생성되고(908), 그 링크는 표현의 대응하는 성분들(예를 들면, 구조 및 콘텐트) 사이의 상호연결을 나타내도록 동작한다. 패킷들은 이어서 통신을 위해 스트림으로 형성된다(910). 링크들은 패킷들 내에 계층적 표현을 유지한다.
부호화 기법, 계층적 표현, 데이터 패킷, 스트림, XML 문서
Description
본 발명은 XML(Extensible Markup Language) 문서의 부호화에 관한 것으로, 특히 XML 문서의 압축, 스트리밍(streaming), 검색, 및 동적 구성 중 적어도 하나에 관한 것이다.
MPEG-7 기술어(descriptions)의 스트리밍, 다운로드, 및 저장을 보다 효과적으로 하기 위해, 기술어는 부호화 및 압축될 수 있다. MPEG-7 기술어의 전달과 관련된 다수의 논점을 분석해 보면, 이들은 이진수 부호화에 사용되는 포맷에 대한 고찰을 포함한다. XML에 대한 기존 부호화 기법으로는, WAP(Wireless Application Protocol Forum)에서 제안된 WBXML을 포함하여, Millau 알고리즘 및 XMill 알고리즘이 각각 고려되었다.
자주 사용되는 XML 태그인 WBXML에서는, 속성 및 값들에 대해 글로벌 코드 스페이스(global code space)로부터 고정된 코드 세트가 지정된다. 문서 인스턴스에서 반복되는 애플리케이션 지정(application specific)의 태그명, 속성명, 및 속성값은 로컬 코드 스페이스로부터 지정되는 코드이다. WBXML은 XML 문서의 구조를 유지한다. DTD(Document Type Definition)에서 정의되지 않는 속성값 및 콘텐트는 인라인(in-line) 또는 스트링 테이블 내에 저장될 수 있다. 문서의 코드 스페이스 의 테이블은 특정한 클레스의 애플리케이션에 알려져 있거나 또는 그 문서와 함께 전송되는 것으로 기대된다.
WBXML은 태그와 속성을 토큰화(tokenize)하지만, 텍스트 콘텐트를 압축하지는 않는다. WBXML을 고안한 WAP에서 그 사용을 제안한 WML(Wireless Markup Language) 문서의 경우에는 통상적으로 한정된 텍스트 콘텐트를 가지므로, 이것으로 충분할 수 있지만, WBXML은 전형적인 텍스트-포함(text-laden) XML 문서의 부호화 포맷으로는 매우 효과적인 것으로 간주되지는 않는다. Millau 접근법은 전형적인 텍스트 압축 알고리즘을 사용하여 텍스트를 압축함으로서 WBXML 부호화 포맷을 확장시킨다. Millau는 또한 스키마(schema) 및 데이터 타입을 이용하여 원시 데이터 타입(datatypes)인 속성값의 보다 우수한 압축을 가능하게 한다.
Xmill 알고리즘의 저자들은, 비록 WBXML에 기초한 것은 아니지만, 훨씬 더 복잡한 부호화 기법을 제시하였다. 구조 및 텍스트 부호화를 분리하고 내장 데이터 타입의 부호화 값에 대한 스키마 및 DTD의 타입 정보를 사용하는 것과 별개로, 그 구조는 또한:
(ⅰ) 동일 또는 관련된 타입의 엘리먼트를 컨테이너(container)에 그룹화하였고(중복성(redundancy)을 증가시키기 위해),
(ⅱ) 다른 압축기를 사용하여 각 컨테이너를 분리하여 압축하였고,
(ⅲ) 극소(atomic)의 압축기가 보다 복잡한 것에 조합되는 것을 허용하였고, 또한
(ⅳ) 고도의 특수한 데이터 타입에 대해 새로운 특수한 압축기를 사용하는 것을 허용하였다.
그럼에도 불구하고, 기존의 부호화 기법들은 단지 압축에 대해서만 고안되었다. 이들은 XML 문서의 스트리밍을 지원하지는 못한다. 또한, XPath/XPointer 어드레싱 기법을 사용하여 엘리먼트들이 효과적으로 배치될 수 없고, 문서를 구성해 가면서 문서를 점증적으로 부호화할 수 없다.
<발명의 요약>
본 발명의 한 일면에 따르면, 계층적인 표현에 의해 기술된 문서의 구조 중 적어도 일부를 통신하는 방법이 제공되고, 상기 방법은:
상기 문서의 상기 표현을 식별하는 단계;
상기 표현을 다수의 데이터 패킷(packet)으로 패킷화하는 단계 - 상기 패킷들은 소정의 크기를 갖고, 상기 패킷화하는 단계는 한 쌍의 상기 패킷 사이에 적어도 하나의 링크를 생성하는 것을 포함하고, 상기 링크는 상기 표현의 대응하는 구성 성분 사이의 상호연결을 나타냄 -; 및
통신을 위해 상기 데이터 패킷들을 스트림(stream)으로 형성하는 단계 - 상기 링크는 상기 패킷들 내에서 상기 표현을 유지함 -
를 포함한다.
본 발명의 또 다른 일면에 따르면, 계층적인 표현에 의해 기술된 문서의 구조 중 적어도 일부를 통신하는 방법이 제공되고:
상기 표현 중 적어도 일부를 식별하여 적어도 하나의 소정의 크기의 패킷으로 패킷화하는 단계를 포함하는 상기 방법은 상기 표현의 상기 부분들 중 하나 또 는 그 이상이 상기 하나의 패킷 내에 들어 맞지 않는 경우, 상기 하나의 패킷으로부터 상기 들어 맞지 않는 부분들이 패킷화된 적어도 하나의 또 다른 상기 패킷으로의 적어도 하나의 링크를 정의하는 것을 - 상기 링크는 상기 패킷들 내에서 상기 문서의 계층적 구조를 유지함 - 특징으로 한다.
본 발명의 또 다른 일면에 따르면, XML 문서의 구조에 액세스를 용이하게 하는 방법이 제공되고, 상기 방법은:
상기 문서의 계층적 표현을 식별하는 단계;
상기 표현을 소정의 패킷 크기의 다수의 패킷으로 패킷화하는 단계; 및
한 패킷 내에 표현될 수 없는 상기 표현의 부분들을 정의하도록 상기 패킷들 사이에 링크를 형성하고, 그에 의해 역패킷화(de-packetizing) 이후에 상기 표현의 재구성을 가능하게 하는 단계
를 포함한다.
본 발명의 부호화 및 복호화 기법은 구조 및 텍스트 부호화를 분리시키고, 내장 데이터 타입의 값들을 부호화하기 위한 스키마 및 데이터 타입을 사용한다. 또한, 본 발명은 스트리밍을 지원하고, XPath/XPointer 등의 어드레싱 메커니즘을 사용하여 효과적인 검색을 허용한다. 본 발명은 또한 XML 문서를 구성해 가면서 부호화 및 스트리밍 처리되도록 허용한다. 이러한 특징은 브로드캐스팅 및 모바일 애플리케이션에 있어서 중요하다. 본 발명의 부호화 기법은 또한 다수의 네임 스페이스(namespace)를 지원하고, 확장가능한 인코더를 구축하기 위한 인터페이스 세트 및 비트스트림의 EBNF(Extended Backus_Naur Form) 정의를 제공한다.
도 1은 부호화 XML 문서를 개략적으로 도시하는 도면이다.
도 2는 구조 세그먼트의 구성(organization)을 도시하는 도면이다.
도 3은 인코더 모델을 개략적으로 도시하는 도면이다.
도 4는 디코더 모델을 개략적으로 도시하는 도면이다.
도 5는 XML 문서를 다수의 패킷으로 점증적으로 부호화하는 인코더를 개략적으로 나타내는 도면이다.
도 6a 및 도 6b는 노드 로케이터(node locator)를 사용하여 다른 구조 패킷 내의 노드를 그 서브-트리에 링크시키는 방식과 각 노드 로케이터가 서브-트리 패킷의 패킷 번호를 포함하고 있는 방식을 도시하는 도면이다.
도 7은 롱 스트링(a long string)이 스트링 프레그먼트로서 다수의 텍스트 패킷 내에 저장되는 방식을 개략적으로 도시하는 도면으로서, 각 패킷은 다음 프레그먼트(fragment)를 포함하는 텍스트 패킷을 지시하고 있다.
도 8은 기재된 구성이 구현될 수 있는 컴퓨터 시스템의 개략 블록도를 도시하는 도면이다.
도 9는 XML 문서 부호화 동작의 흐름도이다.
도 10은 부호화 동작에서 상이한 데이터 타입이 처리되는 방식을 설명하는 흐름도이다.
부록은 부호화 비트스트림과 그 파라미터들에 대한 유용한 정의를 제공한다.
도 1 내지 도 7, 도 9, 및 도 10을 참조하여 설명되는 XML 문서의 부호화 및 복호화 방법은, 바람직하게 도 8에 도시된 바와 같은 범용 컴퓨터 시스템(800)을 사용하여 실시되고, 여기서 도 1 내지 도 7의 처리는 컴퓨터 시스템(800) 내에서 실행되는 애플리케이션 프로그램과 같은 소프트웨어로서 구현된다. 특히, 그 방법의 단계들은 컴퓨터에 의해 실행되는 소프트웨어 내의 명령에 의해 수행된다. 소프트웨어는 2개의 분리된 부분으로 분리된다: 한 부분은 부호화/복호화 방법을 실행하기 위한 것이고; 다른 한 부분은 부호화/복호화 방법과 사용자 사이의 사용자 인터페이스를 관리하기 위한 것이다. 소프트웨어는 예를 들어, 이후 설명될 저장 디바이스를 포함하는 컴퓨터 판독가능 매체 내에 저장된다. 소프트웨어는 컴퓨터 판독가능 매체로부터 컴퓨터에 로드된 다음 컴퓨터에 의해 실행된다. 컴퓨터 프로그램 제품은 이러한 소프트웨어 또는 컴퓨터 프로그램을 기록하고 있는 컴퓨터 판독가능 매체이다. 컴퓨터에서 컴퓨터 프로그램 제품을 사용함으로써 XML 문서의 부호화/복호화에 유리한 장치를 바람직하게 수행하게 된다.
컴퓨터 시스템(800)은 컴퓨터 모듈(801)과, 키보드(802) 및 마우스(803)와 같은 입력 디바이스와, 프린터(815) 및 디스플레이 디바이스(814)와 같은 출력 디바이스를 포함한다. 예를 들어, 컴퓨터 모듈(801)에서 전화선(821)이나 다른 기능 매체를 통해 연결가능한 통신 네트워크(820)와 통신하기 위해 변복조기(Modulator-Demodulator: Modem)(이하, 모뎀) 트랜시버 디바이스(816)가 사용된다. 모뎀(816)은 인터넷 및 LAN(Local Area Network) 또는 WAN(Wide Area Network)와 같은 다른 네트워크 시스템에 액세스하는데 사용될 수 있다. 도시된 서버 컴퓨터 시스템(850)은 네트워크(820)에 연결되어 컴퓨터 시스템(800)과의 통신을 가능하게 한다. 서버 컴퓨터 시스템(850)은 전형적으로 컴퓨터 시스템(800)과 유사한 구조를 가지며, 또한/또는 컴퓨터 시스템(800)에 상보적인 형태 또는 그와 유사한 형태로 동작할 수 있다. 예를 들어, 컴퓨터 시스템(800)은 XML 부호화 기능을 수행하는 동안, 서버 컴퓨터 시스템(850)은 상보적인 XML 복호화 기능 등을 수행하거나; 또는 이와 반대일 수 있다.
컴퓨터 모듈(801)은 전형적으로 적어도 하나의 프로세서 유닛(805)과, 예를 들어 반도체 랜덤 액세스 메모리(RAM) 및 판독 전용 메모리(ROM)로 형성된 메모리 유닛(806)과, 입출력(I/O) 인터페이스들 - 이들 인터페이스는 비디오 인터페이스(807)와, 키보드(802), 마우스(803), 및 선택적으로 조이스틱(도시되지 않음)을 위한 I/O 인터페이스(813)와, 모뎀(816)을 위한 인터페이스(808)를 포함함 - 을 포함한다. 저장 디바이스(809)가 제공되고, 전형적으로 하드 디스크 드라이브(810) 및 플로피 디스크 드라이브(811)를 포함한다. 자기 테이프 드라이브(도시되지 않음)가 사용될 수도 있다. CD-ROM 드라이브(812)는 전형적으로 데이터의 비휘발성 소스로서 제공된다. 컴퓨터 모듈(801)의 구성 성분(805 내지 813)들은 당해 기술분야에 숙련된 자에게 공지된 컴퓨터 시스템(800)의 통상적인 동작 모드를 제공하게 되는 방식으로 상호연결된 버스(804)를 통해 통신한다. 전술한 구성이 실시될 수 있는 컴퓨터의 예로는 IBM-PC 및 호환 기종, Sun Sparcstation, 또는 그로부터 전개된 유사한 컴퓨터 시스템을 들 수 있다.
전형적으로, 애플리케이션 프로그램은 하드 디스크 드라이브(810)에 위치하 고, 그 실행에 있어서 프로세서(805)에 의해 판독 및 제어된다. 네트워크(820)로부터 인출된 데이터 및 프로그램의 중간 저장은 하드 디스크 드라이브(810)와의 협력에 의해 반도체 메모리(806)를 사용하여 이루어진다. 어떤 경우에는, 애플리케이션 프로그램은 CD-ROM 또는 플로피 디스크에 부호화되어 사용자에게 제공되어 대응하는 드라이버(812 또는 811)를 통해 판독되거나, 다른 방법으로 모뎀 디바이스(816)를 통해 네트워크(820)로부터 사용자에 의해 판독될 수 있다. 또한, 이 소프트웨어는 다른 컴퓨터 판독가능 매체 및 인터넷이나 인트라넷으로부터 컴퓨터 시스템(800)에 로드될 수 있으며, 이 컴퓨터 판독가능 매체는 자기 테이프; ROM 또는 집적 회로; 자기광학 디스크; 컴퓨터 모듈(801)과 다른 디바이스 사이의 무선 또는 적외선 전송 채널; PCMCIA 카드와 같은 컴퓨터 판독가능 카드를 포함하며, 인터넷이나 인트라넷은 이메일 전송과 웹사이트 등에 기록된 정보를 포함한다. 이들은 적절한 컴퓨터 판독가능 매체를 예시한 것 뿐이다. 다른 컴퓨터 판독가능 매체가 대신 사용될 수 있다.
동작시, XML 문서 부호화/복호화 기능은 서버 컴퓨터(850)나 컴퓨터 시스템(800) 중 하나에서 수행되고, 그렇게 형성된 패킷화된 비트 스트림은 경우에 따라 각각 컴퓨터 시스템(800) 또는 서버 컴퓨터(850)에 의해 수신 및 복호화되도록 통신 네트워크(820)를 통해 전송된다. 이와 같이 하여, 전체 문서를 먼저 수신할 필요 없이, 수신해 가면서 전송중인(on-the-fly) 문서를 수신기에서 복호화하는데 최적의 시간을 허용하는 효율적인 방식으로, XML 문서가 2개 지점 사이에 편리하게 통신될 수 있다.
이 부호화 및 복호화 방법은 다른 방법으로 부호화 및/또는 복호화 기능 또는 서브 기능을 수행하는 하나 또는 그 이상의 집적 회로 등의 전용 하드웨어에 의해 부분적으로 또는 전체적으로 구현될 수 있다. 이러한 전용 하드웨어는 그래픽 프로세서, 디지털 신호 프로세서, 또는 하나 또는 그 이상의 마이크로프로세서 및 연관된 메모리를 포함한다.
XML의 부호화 및 압축
구조와 텍스트의 분리
통상적으로, XML 문서는 대부분 가공되지 않은 텍스트 포맷으로 저장 및 전송된다. 일부 애플리케이션에서, XML 문서는 저장 또는 전송을 위한 통상적인 텍스트 압축 알고리즘을 사용하여 압축되고, 이들이 파싱되어 처리되기 이전에 XML로 다시 압축해제된다.
본 발명에 따르면, XML 문서를 부호화하는 또 다른 방법은 문서의 트리 계층구조(tree hierarchy)(문서의 DOM 표현 등)를 부호화하는 것이다. 이 부호화는 넓이 우선(breadth-first) 또는 깊이 우선(depth-first) 방식으로 수행할 수도 있다. 압축 및 복호화를 보다 효율적으로 하기 위해, XML 문서 내에서 태그로 표시된 XML 구조를 XML 문서의 텍스트로부터 분리하여 부호화할 수 있다. 부호화 문서를 전송하는 경우, 그 구조 및 텍스트는 분리된 스트림으로 전달되거나 단일 스트림으로 연결될 수 있다.
도 1에 도시된 바와 같이, 본 실시예에 따르면, 전형적으로 메모리로부터 이 용가능한 XML 문서(104)의 트리 표현(102)은 다수의 노드(116)를 포함하고, 깊이 우선 방식으로 부호화된다. 문서(104) 및 그에 포함된 텍스트의 구조는 도시된 바와 같이 2개의 분리된 스트림(106, 108)으로 각각 부호화되거나 단일 스트림으로 연결될 수 있다. 구조 스트림(106)은 코드 테이블 110, 114로 시작된다. 트리(102)의 부호화 노드(118)는 각각 노드의 크기를 나타내며 그에 뒤따르는 노드들의 총 크기를 포함하는 사이즈 필드(도시되지 않음)를 갖는다. 부호화 말단(leaf) 노드(118) 중 일부는 이들 말단 노드를 텍스트 스트림(108) 내의 대응하는 부호화 콘텐트에 링크시키는 링크(112)를 포함한다. 텍스트 스트림(108) 내의 각 부호화 스트링은 그 스트링의 크기를 나타내는 사이즈 필드(도시되지 않음)로 시작된다. 단일 스트림으로 연결된 경우, 링크(112)의 루트(root)를 포함하는 패킷이 그 링크(112)에 의해 지시되는 텍스트를 포함하는 패킷들에 선행함으로써, 디코더에서 문서(104)의 구조 성분을 대응하는 텍스트(콘텐트) 성분 이전에 수신하게 되는 것을 보장하게 된다.
도 1에 도시된 접근법은 또한 컴퓨터 시스템(800)에서 실행되는 소프트웨어 프로그램으로서 구현될 수 있는 부호화 방법 900의 흐름도로서 도 9에 도시되어 있다. 이 방법 900은 계층적인 표현으로 기술된 문서의 구조 중 적어도 일부를 전달하고, 시작 단계 902를 갖는다. 처음에 단계 904에서, 방법 900은 문서(104)의 계층적인 표현(예를 들면, 트리 구조)을 식별한다. 식별은 바람직하게 상기에 기술된 바와 같이 XML 태그를 사용하여 수행된다. 이것으로, 단계 906에서는 표현이 다수의 데이터 패킷으로 패킷화된다. 단계 908에서는 한 쌍의 패킷 사이에 적어도 하나의 링크가 생성된다. 링크는 표현의 대응하는 성분(예를 들면, 구조 및 콘텐트) 사이의 상호연결을 나타내도록 동작한다. 단계 910에서는 패킷들이 통신을 위한 스트림으로 형성된다. 링크는 패킷 내에서 계층적인 표현을 유지한다. 방법 900은 단계 912에서 종료된다.
일반적으로, 구조적인 정보의 양은 텍스트 콘텐트 보다 훨씬 더 적다. 구조는 일반적으로 문서 인스턴스 내에서 네스트(nest)되며 반복된다. 텍스트로부터 구조를 분리시키면, 전형적으로 고정된 크기의 윈도우를 통해 입력 스트림을 검사하는 압축 알고리즘에 의해 반복적인 패턴을 보다 용이하게 식별할 수 있게 된다. 또한, 구조 및 텍스트 스트림은 다소 다른 특성을 갖는다. 따라서, 구조 및 텍스트 각각에 서로 다른 보다 효율적인 부호화 방법이 적용될 수 있다.
구조는 텍스트를 해석하기 위한 콘텍스트(context)를 제공함에 있어서 중요하다. 인코더에서 구조와 텍스트를 분리하면, 대응하는 디코더가 문서의 구조를 보다 신속하게 파싱할 수 있도록 함으로써, 알고 있지 않거나 필요로 하지 않는 엘리먼트(및 그에 뒤따르는 것들)는 무시하고 관련된 엘리먼트만을 처리할 수 있게 된다. 디코더는 관련되지 않은 엘리먼트와 연관된 텍스트는 버퍼 처리하지 않도록 선택할 수도 있다. 디코더가 부호화 문서를 다시 XML로 변환할지의 여부는 수행되는 특정 애플리케이션에 의존된다(후술하는 API(Application Program Interface)에 대한 기재 부분 참조).
코드 테이블
문서 기술어의 엘리먼트 및 그 속성은 DTD 또는 스키마에 정의된다. 전형적 으로, 엘리먼트 세트 및 이에 연관된 속성들은 문서 인스턴스에서 반복적으로 사용된다. 엘리먼트명 뿐만 아니라 속성명과 그 값들은 이들을 부호화하는데 요구되는 바이트의 수를 감소시키기 위하여 지정된 코드일 수 있다.
전형적으로, 각 애플리케이션 도메인(domain)은 다수의 스키마 및/또는 DTD로 정의된 다른 엘리먼트 세트 및 타입을 사용한다. 또한, 각 스키마 또는 DTD는 다른 네임 스페이스에 대한 정의를 포함할 수 있다. 엘리먼트 및 타입 중 일부가 다수의 애플리케이션 클래스에 공통적이더라도, 이들은 통상적으로 다른 패턴으로 사용된다. 즉, 도메인 A 및 B에 공통되는 엘리먼트 X는 도메인 A에서는 자주 사용되지만, 도메인 B에서는 드물게 사용될 수 있다. 또한, 항상 기존 스키마가 업데이트되고 새로운 스키마가 생성된다. 따라서, 코드 지정은 그 도메인에서의 상호동작성을 감독하는(overlook) 구성(organization)에 남겨두는 것이 최상이다. 예를 들어, MPEG-7 기술어는 XML 문서이다. MPEG는 자체 기술문과 기술 방식뿐만 아니라 그들이 사용하는 외부 엘리먼트 및 타입에 대한 코드 스페이스를 정의할 수 있다. MPEG는 또한 코드 스페이스를 생성하는 방법을 정의할 수 있다. 이상적으로, 그 방법은 엔트로피(entropy) - 즉, 기술어 및 기술어 클레스에서의 기술 방식 및 기술문의 발생 횟수를 근거로 하여야 한다(코드 스페이스의 생성에 관한 기재 부분 참조).
엘리먼트 및 속성의 분리
XML 태그는 전형적으로 엘리먼트명 및 속성명/값의 쌍들의 세트를 포함한다. 잠재적으로, 엘리먼트 인스턴스에는 많은 속성 세트가 열거(specify)될 수 있다. 따라서, 속성으로부터 엘리먼트명을 분리시키면, 문서 트리의 파싱 처리와 엘리먼트의 위치 파악을 보다 신속하게 할 수 있게 된다. 또한, 일부 속성 또는 속성명/값의 쌍들은 다른 것들 보다 훨씬 더 자주 사용되는 경향이 있다. 속성명, 속성값, 및 속성명/값의 쌍들을 다른 섹션으로 그룹화하면, 통상적으로 보다 우수한 압축 결과를 초래한다.
내장 데이터 타입과 스페셜 타입의 부호화 값
인코더는 내장(또는 디폴트(default)) 데이터 타입의 엘리먼트와 속성값들을 그 타입에 따라 보다 효과적인 표현으로 부호화하도록 동작한다. 타입 정보를 포함하는 스키마가 이용가능하지 않으면, 그 값들은 스트링으로 다루어진다. 또한, 값(예를 들면, 한 자릿수의 정수)이 스트링으로 표현되는 것이 보다 효과적이라면, 인코더도 이를 스트링으로 다루도록 선택하고 이를 부호화하지 않을 것이다. 디폴트로, 스트링은 다중-바이트 문자의 스트링을 부호화하는 표준적이고 효과적인 방법을 제공하는 UTF-8(Universal Text Format) 스트링으로 부호화된다. 또한, UTF 스트링은 길이 정보를 포함하여, 적절한 디리미터(delimiter; 구획 문자)를 찾는 문제를 미연에 방지하고 스트링의 끝부분으로 쉽게 스킵할 수 있도록 한다.
스페셜 데이터 타입에는 스페셜 타입 인코더가 사용될 수 있다. 이러한 스페셜 타입 인코더는 인코더 API(후술함)의 setTypeEncoder() 인터페이스를 사용하여 지정될 수 있다. 스페셜 타입 인코더에 대한 정보는 바람직하게 구조 세그먼트의 헤더 내에, 타입 인코더 식별자의 테이블로서 저장된다. 또한, 이 디폴트 타입 인코더(내장 데이터 타입에 대한)는 동일한 메커니즘을 사용하여 오버라이드(override)할 수 있다. 일부 내장 데이터 타입은 디폴트 인코더를 사용하여 부호화되는 것이 보통이지만, 스페셜 인코더가 대신 사용될 수도 있으며, 이때에는 비트스트림 내에서의 식별을 수반하게 되어, XML 문서의 정확한 복원을 위해 다른 복호화 처리가 필요하게 된다. 각 부호화 값의 앞에는 그 값을 부호화하는데 사용되었던 타입 인코더의 식별자가 선행한다.
이와 같이 하여, 본 발명에 따라 구현된 XML 문서 인코더는 XML 문서 내에서 다른 타입의 구조 및 텍스트에 대한 다수의 부호화 포맷을 포함한다. 특정한 부호화 포맷을 내장하거나 또는 디폴트로 사용하여 잘 알려져 있거나 일반적으로 접하게 되는 데이터 타입에 대해 사용할 수도 있다. 스페셜 타입 인코더는 스페셜 데이터 타입에 대해 사용된다. 이러한 경우, 부호화 처리에서 사용된 특정 타입의 인코더에 대한 식별을 패킷의 헤더에 포함시킴으로써, 디코더가 부호화 문서에서 부호화 타입에 대해 사용될 필요가 있는 복호화 처리를 식별할 수 있게 된다. 적절한 경우, 특정한 타입의 인코더는 URI(Uniform Resource Indicator)를 통해 컴퓨터 네트워크로부터 액세스될 수 있다. 디코더가 부호화 문서 내의 패킷 내에서 만나게 되는 부호화 타입에 대응하는 복호화 처리를 액세스 또는 구현할 수 없는 경우, 그 부호화 데이터를 무시하도록 디폴트 응답하고, 널 데이터(null data)(예를 들면, 블랭크 표시)를 복원하게 될 수 있다. 다른 방법으로, 디코더가 예를 들어 부호화 데이터를 동반하는 URI를 사용하여 연결된 네트워크로부터 스페셜 타입 디코더를 인출하도록 동작할 수 있다. 인코더/디코더 포맷의 URI는 상기에 기술된 테이블에 포함되어 비트스트림에 포함될 수 있다(부록 참조).
이 접근법을 더 확장하여, 단일 데이터 타입에 대해 다수의 부호화 포맷이 사용될 수 있다. 예를 들면, 텍스트 스트링이 스트링의 길이에 기초하여 상이하게 부호화되어, 복호화 처리를 수행하는데 소요되는 시간과 얻어질 수 있는 압축 레벨 사이의 절충안을 나타내도록 할 수 있다. 예를 들어, 0-9 문자의 텍스트 스트링은 부호화되지 않고, 반면에 10-99 및 100-999 문자의 스트링은 각각의(상이한) 부호화 포맷으로 부호화될 수도 있다. 또한, 스페셜 데이터 타입에는 이들 부호화 포맷 중 하나 또는 그 이상의 포맷이 사용될 수 있다. 이와 같이, 본 예에서 인코더는 텍스트 스트링을 부호화함에 있어서, 실제로 0-9 문자의 스트링에 대해서는 인코딩하지 않고, 10-99 문자 스트링에 대해는 디폴트 인코더를 사용되고, 100 이상의 텍스트 문자를 갖는 스트링에 대해서는 스페셜 인코더를 사용할 수 있다.
도 10은 XML 문서를 부호화하는 방법 1000의 예를 도시하는 것으로서, 시작 단계 1002를 갖는다. 초기에 단계 1004에서는, 방법 1000은 XML 문서(104)의 일부를 형성하는 각 데이터 타입을 식별하도록 XML 문서(104)를 검사한다. 단계 1006에서, 방법 1000은 대응하는 스페셜 부호화 포맷이 이용가능한 데이터 타입의 제1 세트를 식별하도록 동작한다. 스페셜 데이터 타입을 식별하면, 단계 1008에서, 제1 세트의 데이터 타입을 갖는 XML 문서의 각 부분을 대응하는 스페셜 부호화 포맷으로 부호화한다. 다음으로, 단계 1010에서, 방법 1000은 나머지 부분의 데이터 타입에 대응하는 디폴트 부호화 포맷으로 XML 문서의 나머지 부분을 각각 부호화한다. 단계 1012에서는, 적어도 대응하는 스페셜 부호화 포맷으로 된 제1 세트의 데이터 타입 각각을 참조하기 위한 정보의 표현을 형성한다. 단계 1014에서는 그 표 현이 XML 문서(104)의 부호화 폼으로서 부호화 부분과 연관된다. 그러면, 방법 1000은 단계 1016에서 종료된다.
구조 세그먼트(또는 구조 스트림)
도 2는 구조 세그먼트(또는 스트림)(106)의 각종 섹션을 도시한다. 구조 세그먼트는 헤더(202)로 시작되고, 그 바디(body)는 다수의 섹션 204로 나뉘어져 있다. 헤더(202)는 XML의 버전과 부호화 포맷의 버전을 식별한다.
바디 내의 각 섹션 204는 섹션 타입을 나타내는 유일한 시그너쳐(signature)로 시작된다. 따라서, 각종 섹션이 특정한 순서로 배열될 필요가 없다. 그럼에도 불구하고, 아래의 기재 내용에서는, 섹션이 도 2에 도시된 순서로 배열되는 것으로 가정한다. 섹션 시그너쳐의 다음에는 섹션의 크기를 나타내는 사이즈 필드가 뒤따른다.
ID 테이블 섹션 206은 ID를 갖는 엘리먼트가 문서 계층구조 섹션 208 내에 신속하게 배치되도록 허용한다. ID 테이블 206은 문서가 ID를 갖는 엘리먼트를 포함하고 있더라도 부호화 문서에 존재하지 않을 수도 있다. 이는 ID 정의를 포함하는 DTD 또는 스키마가 부호화를 하는 때에 이용가능하지 않을 수 있기 때문이다.
섹션 210은 바람직하게 문서 타입 선언 및 내부(DTD) 서브세트를 위해 남겨둔 것이다. XML 스키마-기반의 문서, 예를 들어 MPEG-7 기술어에서는 이 섹션 210이 존재하지 않는다.
네임 스페이스(212), 엘리먼트명(214), 속성명(216), 및 속성값(218)에 대한 코드 테이블을 위한 섹션도 존재한다. 이하, 이들 코드 테이블을 로컬 코드 테이 블이라고 지칭하여 다른 코드 테이블, 즉 인코더 및 디코더 모두에 대해 미리 정의되어 있고 비트스트림 내에 포함되어 있지 않은 임의의 코드 테이블과 구별하기로 한다. 예를 들어, MPEG-7 또는 XML 스키마에 대해서도 미리 정의된 코드 테이블이 존재할 것이다.
로컬 코드 테이블의 다음에는 통상적으로 로컬 코드 테이블 뿐만 아니라 미리 정의된 코드 테이블에서 정의된 코드들을 사용하는 속성명/값의 쌍(220)들의 테이블을 포함하는 섹션이 뒤따른다.
문서 계층구조 섹션 208은 로컬 코드 테이블 및 미리 정의된 코드 테이블에서의 코드를 사용하는 XML 문서의 부호화 트리 구조이다.
부호화에 있어서 코드 테이블 및 타입 인코더를 사용하는 것과 별개로, 대부분의 경우에, 인코더는 압축기를 사용하여 각 섹션을 압축한다. 구조 세그먼트(106)의 바디의 각 섹션을 독립적으로 압축하지 않고, 구조 세그먼트의 바디는 함께 압축될 수 있다. 이는 오버헤드(overhead)가 더 적고 데이터의 양이 더 많기 때문에, 실질적으로 보다 우수한 압축률을 제공하게 된다. 그러나, 이러한 압축은 문서가 특정한 엘리먼트를 포함하는지의 여부를 알아내기 위해 전체 구조 바디를 압축해제할 필요가 있다. 이들 접근법 중 어느 것이 실질적으로 더 우수하게 작동되는지를 판정하기 위해 테스트해 볼 수도 있다. 그럼에도 불구하고, 섹션이 작다면, 압축이 효과적이지 못하므로 인코더는 그 섹션을 압축하지 않기로 선택할 수도 있다. 각 섹션은 압축이 적용되었는지의 여부를 나타내는 압축 플래그를 갖는다. 압축이 적용되었다면, 각 섹션의 시작부에 있는 사이즈 필드가 그 섹션의 압축된 크기(압축되지 않은 크기는 아님)를 바이트 단위로 나타낸다.
잠재적으로, 각 섹션 내의 데이터의 특성을 고려하여 각 섹션에 대해 상이한 압축기를 사용할 수도 있다. 사용되는 압축기에 대한 정보는 헤더에 제공된다. 디폴트는 구조 세그먼트 뿐만 아니라 텍스트 세그먼트 내의 모든 섹션을 압축하는 ZLIB을 사용하는 것이다. ZLIB 알고리즘은 헤더 및 체크섬(checksum)을 생성하여, 압축된 데이터의 완전성(integrity)을 디코더 측에서 검증할 수 있도록 한다.
텍스트 세그먼트(또는 텍스트 스트림)
텍스트 세그먼트(108)는 텍스트 세그먼트 시그너쳐로 시작되며, 그 뒤에 부호화 텍스트의 크기를 나타내는 사이즈 필드가 뒤따른다. 텍스트 세그먼트는 엘리먼트의 텍스트인 UTF-8 스트링의 시퀀스를 포함한다.
인코더 및 디코더 모델
인코더 모델
도 3은 XML 문서(104)를 저장 또는 전송을 위한 비트스트림(306)으로 부호화하는 인코더(302)를 포함하는 XML 인코더 모델(300)을 도시한다. 인코더 모델(300)은 컴퓨터 모듈(801) 내에서 동작하는 소프트웨어 프로그램이나 서브프로그램으로서 구현될 수 있으며, 그 프로그램은 전형적으로 HDD(810) 내에 저장되어 그 실행시에 프로세서(805)에 의해 판독 및 제어된다. 비트스트림(306)이 생성되면 I/O 인터페이스(808) 및 네트워크(820)를 통해 전송되어, 서버 컴퓨터(850)에 의해 상보적으로 복호화 및 복원된다. 다른 방법으로, 비트스트림(306)은 HDD(810) 또는 드라이브(812) 내의 CD-ROM에 저장된 다음 후속하여 복원될 수 있다. 인코더(302)는 문서 트리(102)가 생성되어 가면서 문서 트리(102)가 부호화될 수 있도록 API(Application Program Interface)(308)(예를 들면, DOM API)를 지원한다. 표준 라이브러리(library)(310)(XML용)를 사용하여 코드 테이블 312, 내장 데이터 타입에 대한 인코더(314), 및 부호화 처리에서 사용될 수 있는 디폴트 압축기(316)를 제공한다. 각종 도메인에 대해 도메인-지정 라이브러리(318)가 정의될 수도 있다. 도메인-지정 라이브러리(318)는 각각 특정한 도메인에 대한 코드 테이블 320과 스페셜 데이터 타입에 대한 인코더(322)를 포함한다. 애플리케이션은 또한 상기에 논의된 바와 같은 스페셜 데이터 타입에 대한 애플리케이션-지정 인코더(326)와 그에 대응하는 압축기(328)를 포함하는 지정 모듈(324)을 제공할 수 있다. 그러나, 이러한 타입의 인코더(326) 및 압축기(328)는 다운로드가능하고 플랫폼에 독립적이거나, 또는 디코더 측에 미리 인스톨되어야 한다. 애플리케이션은 또한 자신의 미리 정의된 코드 테이블 330을 사용하도록 인코더(326)에 명령할 수 있다. 코드 테이블 330은 또한 비트스트림(306) 내에 포함되거나 디코더 측에 미리 인스톨될 수 있다. 도 3에 도시된 개개의 인코더 및 압축기는 각각 소프트웨어 (서브)프로그램에 의해 구현되거나, 어떤 경우에는 특수한 목적의 하드웨어(예를 들면, 고속 부호화용)에 의해 구현될 수도 있다.
디코더 모델
도 4는 XML 비트스트림(306)을 복호화하여 XML 문서(104)를 출력하기 위한 디코더(402)를 포함하는 상보적인 XML 디코더 모델(400)을 도시한다. 다른 방법으 로, 디코더는 애플리케이션이 문서 트리(102)의 자체 내부 모델을 구성하도록 허용하는 API(408)(예를 들면, SAX("simple API for XML") 또는 DOM API)를 지원할 수도 있다. 이는 디코더(402)가 XML 문서(104)를 출력하고 애플리케이션이 재구성된 XML 문서(104)를 다시 파싱하는 것을 면하게 한다. 어떠한 경우에서든, 디코더(402)는, XML 비트스트림(306)을 복호화함에 있어서, 표준 라이브러리(410), 도메인-지정 라이브러리(418) 뿐만 아니라 미리 인스톨되거나 다운로드된 애플리케이션-지정 모듈(424)(인코더에 의해 사용되었던)을 사용한다. 도 4에서, 디코더 모델(400)의 엘리먼트들은 도 3과 유사한 방식으로 번호를 매겨, 번호의 차가 100이 되도록 하였으며, 그 엘리먼트들은 대응하는 유사한 기능을 갖는다. 디코더 모델(400)은 예를 들어, 서버 컴퓨터(850)로부터 네트워크(820)를 통해 수신된 비트스트림(306)을 복호화하도록 컴퓨터 모듈(801) 내에 구현될 수도 있다. 다른 방법으로, 디코더 모델(400)은 예를 들어 CD-ROM으로부터 얻어진 비트스트림을 복호화하도록 동작할 수도 있다. 인코더(302)와 마찬가지로, 디코더(402) 내에서 소프트웨어 및 하드웨어 복호화 처리가 사용될 수도 있다.
대부분의 경우, 클라이언트 측의 디코더(402)는 복호화XML 문서(104)를 자신의 DTD 또는 스키마에 대해 검증할 필요가 없다. 클라이언트 측에서의 검증은 비용이 많이 들고 비효율적이고 또한 중복되는 경우가 많다. 디코더(104)는 XML 문서가 서버 측에서 DTD 또는 스키마에 대해 검증된 것으로 가정한다. 유사하게, 이진수 포맷으로 구성된 체크섬과 같은 에러 검출 메커니즘 뿐만 아니라 기본적인(underlying) 트랜스포트가 전송 에러를 포착할 수 있어야 한다.
엘리먼트의 위치 지정
XML 엘리먼트는 ID 또는 XPath/XPointer 프레그먼트를 사용하여 참조 및 위치 지정될 수 있다. 앞서 기술된 바와 같이, 구조 세그먼트(106)의 ID 테이블 206은 ID를 갖는 엘리먼트들이 문서 계층구조 섹션 208에서 신속하게 위치 지정되도록 허용한다. 그러면, 엘리먼트와 연관된 텍스트 및 속성들은 부호화 엘리먼트 내의 로케이터를 사용하여 효율적으로 위치 지정될 수 있다.
다음은 URI(Uniform Resource Indicator)에 첨부될 수 있는 XPath 프레그먼트의 예들이다:
●/doc/chapter[2]/section[3]
doc의 제2 챕터(chapter)의 제3 섹션을 선택
●chapter[contains(string(title), "Overview")]
텍스트 "Overview"를 포함하는 하나 또는 그 이상의 타이틀 차일드(child)를 갖는 콘텍스트 노드의 챕터 차일드를 선택
●child::*[self::appendix or self::index]
콘텍스트 노드의 부록 및 인덱스 차일드를 선택
●child::*[self::chapter or self::appendix][position()=last()]
콘텍스트 노드의 마지막 챕터 또는 부록 차일드를 선택
●para[@type="warning"]
값 "warning"의 타입 속성을 갖는 콘텍스트 노드의 모든 패러그래프(para) 차일드를 선택
●para[@id]
id 속성을 갖는 콘텍스트 노드의 모든 패러그래프 차일드를 선택
XPath/XPointer 프레그먼트는 XML 문서 내에 요구되는 엘리먼트(들)의 절대 또는 상대적인 위치를 나타내는 로케이션 스텝(location step)의 리스트로 구성된다. 전형적으로, 프레그먼트는 엘리먼트명들의 리스트를 포함한다. 상기의 예에서와 같이, 어레이 내에서의 엘리먼트의 인덱스, 속성의 존부(presence), 매칭하는 속성값, 및 매칭하는 텍스트 콘텐트와 같은 추가 선택 기준을 지정하기 위하여 서술부(predicate) 및 함수가 사용될 수 있다.
부호화 문서 계층구조가 간결하면, 전체적인 오브젝트 트리 표현으로 확장할 필요없이 파싱(및 실증(instantiate))할 수 있게 된다. 먼저, 프레그먼트 어드레스가 부호화 폼으로 해석된다. 이러한 해석 처리의 결과로서, 요구되는 엘리먼트(들)가 실제로 문서에서 발생되었는지의 여부를 바로 판정할 수 있게 된다. 부호화 프레그먼트 어드레스의 성분을 매칭시키는 것이 또한 서브-스트링을 매칭시키는 것 보다 훨씬 더 효과적이다. 이러한 설계는 간단한 XPath/XPointer 프레그먼트(가장 자주 사용되는)가 신속하게 평가되는 것을 허용된다. 또한, 문서 계층구조를 먼저 검색함으로써, 보다 복잡한 프레그먼트 어드레스의 경우, 이어지는 평가 단계의 범위를 크게 좁힐 수 있다.
스트리밍(streaming)을 위한 비트스트림의 패킷화
XML의 스트리밍
전형적으로, XML 문서는 대부분 가공되지 않은 텍스트 포맷으로 저장 및 전송된다. 일부 애플리케이션에서, XML 문서는 저장 또는 전송을 위한 통상적인 텍스트 압축 알고리즘을 사용하여 압축되고, 이들이 파싱 및 처리되기 이전에 다시 XML로 압축해제된다. 비록 압축에 의해 XML 문서의 크기가 많이 감소되지만, 이러한 환경 하에서는, 파싱 및 처리가 수행될 수 있게 되기 이전에 애플리케이션이 전체 XML 문서를 수신하여야 한다.
XML 문서의 스트리밍은 충분한 분량의 XML 문서가 수신되자마자 파싱 및 처리가 시작될 수 있음을 의미한다. 이러한 특성은 낮은 대역폭의 통신 링크 및/또는 매우 한정된 리소스를 갖는 디바이스의 경우에 매우 유용하다.
통상적인 XML 파서(parser)는 XML 문서가 제대로 형성된 것(즉, 매칭되고 오버랩되지 않은 시작-태그 및 종료-태그의 쌍들을 가짐)으로 판단하기 때문에, 파서는 단지 깊이 우선 방식으로 XML 문서 트리를 분석할 수 있을 뿐이며, 이를 지원하기 위해 XML 문서의 콘텐트가 재구성되지 않으면, 문서의 일부를 스킵할 수 없다.
비트스트림의 패킷화
앞서 설명된 바와 같이, XML 문서를 완전한 구조 세그먼트(106)와 완전한 텍스트 세그먼트(108)로 부호화하면, 데이터의 크기가 크게 감소되고, 이와 동시에, 전송 에러가 검출될 수 있다. 그럼에도 불구하고, 디코더(402)는 부호화 데이터를 처리할 수 있게 되기 이전에, 많은 양의 부호화 데이터를 수신하여야 한다. 예를 들어, 디코더(402)는 문서 계층구조의 파싱 처리를 시작할 수 있게 되기 이전에, 코드 테이블 110 전체를 수신하게 된다. 이와 동시에, 디코더(402)는 노드와 연관된 텍스트를 얻기 위해 텍스트 세그먼트(108) 중 소정의 세그먼트의 도착을 대기하여야 한다. 디코더 측에서 가능한 한 신속한 처리의 시작을 허용하기 위해서는, 도 5에 도시된 바와 같이, XML 문서(104)를 점증적으로 부호화하여, 부호화 데이터(500)의 작은 패킷(502)이 이용가능하게 될 때 디코더(402)로 전달되도록 허용하여야 한다. 도 5에서, 교차하여 빗금친 패킷(504)들은 구조 패킷을 나타내고, 대각선으로 빗금친 패킷(506)들은 텍스트 패킷을 나타낸다. 이들 패킷의 앞에는 헤더 패킷(508)이 선행하며, 그 뒤에는 트레일러(trailer) 패킷(510)이 뒤따른다. 바람직한 배열로는, 각 데이터 패킷(502)이 완전한 구조 세그먼트(106) 또는 완전한 텍스트 세그먼트(108)와 동일한 구조를 갖는다. 이와 동시에, 각 패킷(502)이 그 전에 전달된 패킷(502)들에 의존하거나, 일부 구현예에서는 그 이후에 전달되는 소정의 갯수의 패킷에 의존할 수 있다.
문서가 전달되고 있는 동안 문서를 처리할 필요성과 별개로, 인코더/디코더는 전형적으로 고정된 크기의 입력/출력 버퍼를 갖는다. 따라서, 매우 짧은 문서를 제외하고, 인코더(302)는 XML 문서를 점증적으로 다수의 패킷으로 부호화하여야 한다. 각 패킷(502)(504, 506, 508, 510 포함)은 패킷 헤더로 시작된다. 패킷 헤더는 패킷 ID로 사용될 뿐만 아니라 패킷의 순서를 정하고 누락된 패킷을 검출하기 위해 사용되는 패킷 번호를 포함한다. 패킷 헤더는 또한 패킷(502)의 크기를 바이트 단위로 나타내는 사이즈 필드와, 패킷이 구조 패킷(504), 텍스트 패킷(506), 헤 더 패킷(508), 트레일러 패킷(510), 또는 도 5에 도시되지 않지만 이후 설명될 커맨드 패킷이라 칭하여지는 또 다른 타입의 패킷(502)인지의 여부를 나타내는 타입 필드를 포함한다.
각 구조 패킷(504)의 경우에는, 그에 포함된 ID 테이블은 그 패킷에 포함된 엘리먼트들의 ID만을 포함하고 있다. 그 코드 테이블은 전송되지 않은 새로운 코드만을 포함하고 있다. 전송된 코드는 다시 지정되거나 다시 맵핑되지 않는다. 디폴트 구현예는 단순히 그 테이블에 새로운 값을 첨부하고, 그 엔트리의 인덱스(테이블의 베이스 인덱스에 의해 오그멘트됨)를 그 코드로서 사용한다. 좀 더 복잡한 방법은 그 값의 발생 횟수를 카운트하여, 더 자주 발생되는 값이 더 짧은 코드로 재맵핑되도록 하여, 그 패킷이 출력되기 직전에 코드를 재맵핑하는 것이다. 미리 정의된 코드 테이블을 사용하거나 재맵핑이 발생 횟수에 기초한 것이 아니라면, 압축 이전에 그 값들을 소팅(sorting) 처리함으로써 보다 우수한 압축률을 얻을 수 있다. 코드를 지정하는데 다른 알고리즘을 사용하여 구현할 수도 있다. 그럼에도 불구하고, 일단 출력되면, 코드는 고정되게 되며, 다른 값으로 재지정되거나 후속하는 패킷에서 재맵핑될 수 없다. 본 명세서에서 추후 설명될 인코더 인터페이스의 UseCodeTable() 방법을 사용하여, 미리 정의된 코드 테이블을 지정할 수도 있다. 그 방법은 또한 미리 정의된 코드 테이블이 그 데이터를 그 비트스트림으로 부호화하도록 되어야 하는지의 여부를 지정할 수 있도록 한다. XML(또는 MPEG-7과 같은 애플리케이션 도메인)에 기본적인 다수의 네임 스페이스에 대한 코드 테이블은 모든 XML(MPEG-7) 인코더 및 디코더에 입력된(hardwired) 것으로 기대되며, 비 트스트림으로 부호화될 필요는 없다.
ID, 엘리먼트명, 속성명, 또는 속성값이 미리 정의된 길이 보다 더 길다면, 실제 스트링이 테이블에 나타나기 보다는, 텍스트 패킷 및 스트링 로케이터 내에 부호화된다.
구조 패킷의 문서 계층구조 섹션은 노드의 시퀀스를 포함한다. 각 노드는 그 패킷 내의 후속하는 부호화 노드의 총 크기를 포함하여 그 (부호화된) 크기를 바이트 단위로 나타내는 사이즈 필드를 갖는다. 노드는 엘리먼트 노드, 코멘트 노드, 텍스트 노드, 또는 노드 로케이터일 수 있다. 각 노드는 그 타입을 나타내는 노드 타입 필드를 갖는다.
문서 계층구조는 다음을 포함한다:
(ⅰ) 완전한 문서 트리: 이는 매우 짧은 문서에 대해서만 가능하다;
(ⅱ) 완전한 서브-트리: 이 서브-트리는 이전 패킷 내의 또 다른 부호화 노드의 차일드이다; 또한
(ⅲ) 불완전한 서브-트리: 이 서브-트리는 전체 서브-트리가 시간 및/또는 크기 제한으로 인하여 하나의 패킷으로 부호화될 수 없기 때문에 불완전하다.
노드 로케이터는, 도 6a에 도시된 바와 같이, 불완전한 서브-트리(602, 604)를 갖는 트리 구조(622)에 대해, 누락된 노드와 불완전한 서브-트리에 후속한 것들의 위치를 정하는데 사용된다. 이러한 점에서, 전술한 예를 참조하면, 부호화될 때에는 문서(104)의 계층구조적 트리 표현(102)이 알려져 있지만, 전송된 패킷을 복호화할 때에는 전형적으로 트리 표현(102) 중 일부만 이용가능하게 된다. 더 많 은 패킷이 수신됨에 따라, 트리는 재구성되게 된다. 예를 들어, 도 6b에 도시된 데이터 스트림에서, 패킷(620)(본 예에서 데이터 스트림의 #2 패킷)은 노드 A, B1, B2, 및 B3을 포함하는 구조인 문서의 트리 구조(622) 중 일부를 포함한다. 그러나, 본 예에서, 패킷(620)의 크기는 전체 트리 구조(622)를 기술하고 B4 및 D1과 같은 다른 노드를 수용하기에 불충분하다. 따라서, 대응하는 패어런트(parent) 노드(각각 B3 및 B2)의 기술어에 노드 로케이터(608, 606)가 각각 포함되며, 누락 노드와 그들의 서브-트리의 시퀀스를 포함하는 구조 패킷의 각 패킷 번호(610, 612)를 포함한다. 이와 같이, 도 6b에 도시된 패킷의 시퀀스를 수신하게 되면, 패킷(#2)(620)의 수신시 트리(622)의 일부가 재구성될 수 있고, 패킷(#7)(610)의 수신시 노드 D1을 포함하는 브랜치가 재구성될 수 있고, 패킷(#20)(612)의 수신시 트리의 균형이 재구성될 수 있다.
각 엘리먼트 노드는 바람직하게 네임 스페이스 코드, 엘리먼트(명) 코드를 포함하며, 또한 엘리먼트가 속성을 갖는 경우에는, 속성명/값의 쌍의 테이블 내의 제1 속성의 바이트 오프셋과 속성의 갯수를 포함한다.
각 텍스트 노드 또는 코멘트 노드는 전형적으로 실제 텍스트 보다는 텍스트 로케이터를 포함한다. 텍스트 로케이터는 텍스트 패킷의 패킷 번호와 텍스트 패킷에 대한 바이트 오프셋을 지정한다.
어떤 경우에는, 스트링이 패킷의 최대 크기를 초과할 수 있다. 이러한 경우, 스트링은 도 7에 도시된 바와 같이 다수의 텍스트 패킷에 걸쳐 프레그먼트로서 저장된다. 각 텍스트 패킷(702)은 플래그(704)를 구비하여, UTF-8 부호화 스트링 의 리스트와 스트링 로케이터 또는 스트링 프레그먼트를 포함하고 있는지의 여부를 나타낸다. 스트링 프레그먼트에는 다음 프레그먼트의 패킷 번호도 포함된다. 텍스트 패킷이 스트링의 마지막(또는 유일한) 프레그먼트를 포함하고 있다면, 다음 프레그먼트의 패킷 번호는 도시된 바와 같이 0으로 설정된다.
문서 트리를 구성하기 위한 명령
XML 문서는 그것이 부호화되거나 생성되고 있을 때 수신기로의 스트림 처리를 위해 패킷화될 수 있다(소정의 미리 정의된 DTC 또는 스키마에 따라). 이러한 경우, XML 문서는 전형적으로 DOM API와 같은 API를 사용하여 실시간으로 구성된다. 인코더(302)는 XML 파일을 파싱하는 대신에, 메모리 표현으로부터 직접적으로 비트 스트림(306)을 구성하도록 동작한다. API를 사용하여 삽입 및 첨부된 노드 및 서브-트리들은 (이진수) 커맨드 패킷으로서 부호화되어 디코더 측에서 메모리 표현을 수정하게 된다. 패킷 번호는 커맨드 패킷이 정확한 시퀀스로 실행될 수 있도록 한다.
전송된 노드가 동일한 문서(소정의 미리 정의된 DTD 또는 스키마에 따름)의 일부이고 문서가 항상 인코더(302)와 디코더(402) 사이에서 온라인(on-line) 및 동기된(in-sync) 상태이므로, 노드의 콘텐트에 관련한 일관성 문제는 없다. 어떤 프리젠테이션(presentation)에서는, 일부 정보는 시간적 관련성만을 갖는다. 즉, 일부 정보는 프리젠테이션 동안 소정의 기간 동안만 관련된다. 프리젠테이션의 서로 다른 2개의 순간에 관련된 정보 유닛(예를 들면, 축구 경기의 스코어)은 서로 일치하지 않을 수도 있다. 프리젠테이션 기술어 구조는 프리젠테이션의 타이밍 및 동기화 모델을 구축하는데 바람직하다. XML 데이터를 포함하는 임의의 미디어 오브젝트의 타이밍은 시작 시간 및 지속 시간으로 나타내질 수 있다. 이러한 프리젠테이션 인코더/디코더의 쌍은 전형적으로 상기에 설명된 바와 같이 내부에 구성된 XML 인코더/디코더를 포함한다. XML 디코더 보다는, 프리젠테이션 디코더는 시작 시간 및 지속 시간 속성을 해석하도록 동작한다. 프리젠테이션 인코더는 또한 더 이상 관련이 없는 XML 서브-트리를 메모리로부터 제거할지의 여부를 결정한다. XML 인코더/디코더에서는 일관성 문제는 존재하지 않는다. 생성기가 항상 유효한 문서(프레그먼트)를 생성하도록 한다면, (일치하지 않거나 유효하지 않은) 노드나 서브-트리를 제거하라는 커맨드는 필요없다. 즉, 삽입 및 첨부 커맨드만이 필요하다.
커맨드 패킷은 첨부 또는 삽입되는 서브-트리의 (루트의) 경로 및 그 서브-트리를 포함하는 구조 패킷의 패킷 번호를 포함한다. 예를 들어, 도 6b를 다시 참조하면, 노드(B4)에 대한 로케이터를 패킷(620) 내에 수용할 수 없는 경우에는, 커맨드 패킷은 패킷 #2와 #20 사이에 삽입되어 노드(B4)를 노드(A)에 부착시켜야 한다. 그러면, 이 커맨드 패킷은 노드(B4)에 의해 정의된 구조를 포함하는 패킷(612)을 지시하는 로케이터를 포함하게 된다.
비트스트림의 정의
비트스트림(306)은 바람직하게 부록에 정의된 방식으로 ENBF(Extended Backus-Naur Form)으로 정의된다. 문자는 단일 인용부호로 둘러싸이고 스트링은 이중 인용부호로 둘러싸인다. 이와 다르게 언급되지 않으면, UTF-8 부호화 및 UTF 스트링(길이 정보 포함)으로 된 UCS 문자인 것으로 가정한다.
API
문서 및 스키마에 대한 API
디코더(402)가 부호화 문서를 다시 XML로 변환하는 것이 항상 필요한 것은 아니다. 상기에 나타내진 바와 같이, 디코더(402)는 애플리케이션이 복호화 콘텐트를 직접 액세스하는 것을 허용하기 위해, SAX API, DOM API, 또는 다른 전용 API등의 API를 지원한다. 이는 디코더(402)가 XML 문서를 재구성하여 출력하여야 하고 애플리케이션이 재구성된 XML 문서를 다시 파싱하여야 하는 것을 면하게 한다.
애플리케이션은 또한 스키마 내에 저장된 정보를 액세스하여야 한다. 스키마도 XML 문서이므로, 이들은 동일한 방식으로 부호화될 수 있다. 스키마의 정의를 액세스 및 해석하기 위한 기존의 SAX 또는 DOM API를 사용하는 것은 매우 번거롭다. "Wan E., Anderson M., Lennon A., Description Object Model(DesOM). Doc. ISO/IEC JTC1/SC29/WG11 MPEG00/M5817, Noordwijkerhout, March 2000"에서 정의된 Schema API와 같은 스키마 API를 지원하는 파서를 이용함으로써 스키마의 정의를 보다 용이하게 액세스할 수 있다.
내장 데이터 타입 및 스페셜 타입의 값들의 효율적인 부호화를 가능하도록 하기 위해, 인코더는 스키마로부터 타입 정보를 획득할 수 있어야 한다. 따라서, 스키마 API도 또한 인코더(302)에 있어서 매우 중요하다.
인코더에 대한 API
아래에 제안된 이진수 포맷은 다양한 특성을 갖는 복잡한 인코더의 구현을 가능케 한다. 이 섹션에 기재된 인터페이스는 부호화 기법에 의해 지원되는 보다 복잡한 특징을 제공하도록 확장될 수 있는 기본 인코더를 구성하도록 허용한다.
인코더 인터페이스
void SetMaxPacketSize(in unsigned long maxPacketSize)
●최대 패킷 크기를 바이트 단위로 설정한다.
void SetMaxPrivateDataSize(in unsigned long maxPrivateDataSize)
●전용(private) 데이터의 최대 크기를 바이트 단위로 설정한다. 한 패킷에 포함될 수 있는 전용 데이터의 양은 패킷의 최대 크기에 의해 제한됨을 주목한다. 비트스트림의 크기를 감소시킨다는 목적에 반하므로 많은 양의 전용 데이터는 기대되지 않는다.
void SetHeaderUserData(in ByteArrayheaderData)
●사용자 데이터를 헤더 패킷에 기록한다. 기존의 데이터가 오버라이트된다.
void UseCodeTable(in CodeTable codeTable, in Boolean encodeIt)
●미리 정의된 코드 테이블과 그 코드 테이블이 그 데이터로 부호화되어야 하는지의 여부를 인코더에 알린다.
void SetCompressor(in Section section, in Inflater compressor)
●지정된 섹션에 대해 지정된 압축기를 사용하도록 인코더에 명령한다. 섹 션은 다음의 값을 갖는 목록이다: STRUCT_BODY=1, TEXT_BODY=2, ID_TABLE=3, NS_SECT=3, ELEMENT_SECT=5, ATTR_NAME_SECT=6, ATTR_VALUE_SECT=7, ATTR_PAIR_SECT=8, DOC_HIERARCHY_SECT=9.
인플레이터(Inflator)는 java.util.zip 패키지의 인플레이터와 동일한 인터페이스를 갖는다.
void Flush()
●버퍼 내의 패킷을 출력 스트림으로 플러시(flush) 처리한다.
void OnOutput()
●버퍼 내의 패킷의 세트가 출력되기 이전에 통보를 수신하여, 애플리케이션이 애플리케이션 지정-데이터를 그 패킷에 삽입하도록 허용한다.
void SetPacketUserData(in ByteArrayuserData)
●버퍼 내의 헤더 패킷을 제외하고 패킷 각각에 사용자 데이터를 기록한다. 기존 사용자 데이터는 오버라이트된다.
코드 테이블 인터페이스
unsigned short GetSize()
●코드 테이블 내의 엔트리의 갯수를 구한다.
wstring GetNamespace(in unsigned short i)
●코드 테이블의 제i 엔트리와 연관된 값의 네임 스페이스를 구한다.
wstring GetValue(in unsigned short i)
●코드 테이블의 제i 엔트리와 연관된 값을 구한다.
wstring GetType(in unsigned short i)
●코드 테이블의 제i 엔트리와 연관된 값의 타입을 구한다.
ByteArray GetCode(in unsigned short i)
●코드 테이블의 제i 엔트리와 연관된 코드를 구한다.
unsigned short GetIndexByCode(in ByteArray code)
●코드와 연관된 값을 구한다.
unsigned short GetIndexByValue(in wstring value)
●코드와 연관된 값을 구한다.
unsigned short GetMaxCodeValue()
●코드 테이블에 예비된(reserved) 최대 코드값을 구한다. 인코더는 최대 코드값 이상의 코드값을 자유롭게 사용할 수 있다. 애플리케이션에 따라서는, 인코더는 미리 정의된 코드 테이블에 남겨진 홀(hole)들을 사용하도록 구현될 수도 있다.
타입 인코더 인터페이스
ByteArrayEncode(in wstring text)
●값을 텍스트 표현으로 주어지는 바이트 어레이로 부호화한다.
wstring Decode(in ByteArray encodedText)
●부호화 값을 그 값의 텍스트 표현으로 복호화한다.
XML 데이터, 특히 MPEG-7 프리젠테이션 기술어의 부호화
MPEG-7 기술어(오디오-비디오(AV) 콘텐트를 기술하는데 사용되는 XML 데이터)를 포함하는 XML 데이터(의 프레그먼트)가 AV 콘텐트로 스트리밍 처리 및 프리젠테이션되려면, 미디어 오브젝트들(XML 데이터 포함) 사이의 타이밍 및 동기가 지정되어야 한다. XML과 유사하게, DDL(XML의 기술어 정의 언어)은 미디어 오브젝트를 프리젠테이션하기 위한 타이밍 및 동기화 모델을 정의하지 않는다. 상기에 기술된 바와 같이, 여기서 프리젠테이션 기술어 기법(Presentation Description Scheme)이라고 하는 SMIL형 MPEG-7 기술어 기법은 멀티미디어 프리젠테이션을 저작(authoring)하기 위한 타이밍 및 동기화 모델을 제공하는데 바람직하다.
MPEG-7 기술어는 AV 오브젝트와 동일한 방식으로 취급될 수 있는 것으로 제안되었다. 이는 프리젠테이션에서 사용되는, AV 오브젝트와 같은, 각 MPEG-7 기술어 프레그먼트가 그 시간적인 범위를 정의하는 시작 시간과 지속 시간으로 태그 처리됨을 의미한다. 이로써, MPEG-7 프레그먼트 및 AV 오브젝트 모두가, 프리젠테이션 기술어 기법의 미디어 오브젝트 엘리먼트의 클레스에 맵핑되며, 동일한 타이밍 및 동기화 모델에 적용되게 된다. 상세히 설명하면, SMIL-기반의 프리젠테이션 기술어 기법의 경우, <mpeg7> 태그와 같은 새로운 미디어 오브젝트 엘리먼트가 정의될 수 있다. 다른 방법으로, MPEG-7 기술어가 특정한 타입의 텍스트로서 취급될 수도 있다.
다른 타입의 MPEG-7 기술어를 단일 스트림 또는 분리된 스트림으로 전달하는 것이 가능하다. 또한, 다른 시간적 범위의 서브-프레그먼트를 갖는 MPEG-7 기술어 프레그먼트를 단일 데이터 스트림 또는 분리된 스트림으로 전달하는 것이 가능하 다. 이는 앞서 논의된 XML 인코더(300)와 대조되는, 프리젠테이션 인코더의 역할이다.
프리젠테이션 인코더는 언제 또는 얼마 동안의 패킷 콘텐트가 필요 또는 관련되는지를 알리는 시작 시간과 지속 시간으로 XML 패킷을 랩핑(wrap) 처리한다. 그 패킷은 다음을 포함할 수 있다:
(ⅰ) 높은 압축률과 최소의 오버헤드를 달성하도록 함께 연결된 다수의 짧은 기술어 프레그먼트(각각이 시간적 범위를 가짐);
(ⅱ) 단일 기술어 프레그먼트; 및
(ⅲ) 큰 기술어 프레그먼트 중 일부
패킷이 다수의 기술어 프레그먼트를 포함하는 경우, 그 패킷의 시작 시간은 프레그먼트의 시작 시간 중 가장 빠른 시간이고, 그 패킷의 지속 시간은 그 패킷의 시작 시간과 프레그먼트의 종료 시간 중 가장 늦은 시간(시작 시간에 프레그먼트의 지속 시간을 더하여 계산함) 사이의 차이이다.
애플리케이션의 브로드캐스팅에서는, 사용자가 임의의 시간에 프리젠테이션에 동조될 수 있도록, 관련 자료가 규칙적인 간격으로 반복되어야 한다. 이전에 전달된 XML 패킷 중 일부가 더 이상 관련되지 않아서 XML 패킷 중 일부만이 재전달되어야 하는 경우, 헤더 패킷은 반복될 필요가 있다. 이는, 애플리케이션의 브로드캐스팅의 경우, 전송을 공지된 상태로 재설정하기 위하여, 헤더 패킷이 구조, 텍스트, 및 커맨드 패킷 중에 산재될 수 있음을 의미한다.
상기로부터 전술한 구성은 컴퓨터 및 데이터 프로세싱 산업에 적용될 수 있으며, 이것과 연관된 통신 리소스를 효율적으로 사용 - 일부의 수신 정보만을 가지고도 처리할 수 있는 능력을 보유함 - 하는데 적용될 수 있음을 알 수 있다.
상기 기재에서는 본 발명의 하나 또는 그 이상의 실시예만을 기재하고 있지만, 본 발명의 범주 및 사상에서 벗어나지 않고 수정 및/또는 변화가 이루어질 수 있고, 이들 실시예들은 예시적인 것으로 이에 한정되지 않는다. 예를 들어, XML 문서를 참조하여 설명하였지만, 여기서 설명한 절차(기법)는 문서의 트리 표현과 같은 임의의 계층적 표현에 적용될 수 있다.
<부록>
비트스트림의 정의
비트 스트림을 ENBF(Extended Backus_Naur Form)로 정의하기로 한다. 문자는 단일 인용부호로 둘러싸이고 스트링은 이중 인용부호로 둘러싸인다. 이와 다르게 언급되지 않으면, UTF-8 부호화 및 UTF 스트링(길이 정보 포함)으로 된 UCS 문자인 것으로 가정한다.
xmlbitStream ::= xml_packet+
주의: 부호화 XML 문서의 비트스트림은 패킷의 시퀀스로 구성된다. 시퀀스는 헤더 패킷으로 시작되고 트레일러 패킷으로 종료된다.
Packet
xml_packet ::= packet_header packet_body
packet_header ::= packet_signature packet_number packet_size packet_type packet_private_data
packet_number ::= variable_length_natural_number
주의: packet_number는 0 보다 커야 한다.
packet_type ::= header_packet | structure_packet | text_packet | trailer_packet | command_packet
packet_signature ::= 'x' 'm' 'l' 'b' 'i' 'n' 'p' 'k'
packet_size ::= unsigned_short
주의: unsigned_short로, 0 - 65535 범위의 비부호 정수가 2 바이트를 사용하여 표현되고, 제1 바이트는 정수의 상위 바이트가 된다.
packet_private_data ::= byte_array
packet_body ::= header_body | trailer_body | structure_body | text_body | command_body
header_packet ::= 'h'
structure_packet ::= 's'
text_packet ::= 't'
trailer_packet ::= 'e'
command_packet ::= 'c'
byte_array ::= size_in_byte byte*
size_in_byte ::= variable_length_natural_number
주의: variable_length_natural_number로, 0 - 1,073,741,823 범위의 자연수가 1 내지 4 바이트를 사용하여 표현되고, 제1 바이트는 그 수의 상위 바이트이다. 상위 바이트 중 2개의 최상위 비트는 실제로 그 수를 표현하는데 사용되는 추가 바이트의 수를 나타내는데 사용된다. 예를 들어, '01'은 하나의 추가 바이트 또는 2-바이트 표현을 의미하고, '11'은 3개의 추가 바이트 또는 4-바이트 표현을 의미한다.
Byte ::= [#x00 #xFF]
Header
header_body ::= enoding_version xml_version xml_params max_packet_size max_decompressed_packet_size max_packet_number section_compressor_list type_encoder_list
xml_params ::= count xml_encoding xml_standalone
encoding_version ::= "1.0"
xml_version ::= "1.0"
count ::= variable_length_natural_number
xml_encoding ::= UTF8_string
주의: UTF8_String으로, 처음 2 바이트는 unsigned short로서, 판독되는 추가 바이트의 수를 지정하는 UTF 길이이다. 추가 바이트는 스트링의 UTF-8 부호화를 포함한다.
xml_standalone ::= 'y' | 'n'
max_packet_size ::= variable_length_natural_number
주의: 0의 값은 최대 패킷 크기가 알려지지 않음을 의미한다.
max_packet_number ::= variable_length_natural_number
주의: 0의 값은 최대 패킷수가 알려지지 않음을 의미한다.
section_compressor_list ::= count(section_ID compressor_URI)*
type_encoder_list ::= count(type_ID type_encoder_URI)*
compressor_URI ::= URI
type_encoder_URI ::= URI
URI ::= UTF8_string
section_ID ::= struct_body_ID | text_body_ID | id_table_ID | ns_section_ID | element_sect_ID | attribute_name_sect_ID | attribute_value_sect_ID | attribute_pair_sect_ID | doc_hierarchy_sec_ID
struct_body_ID ::= 's'
text_body_ID ::= 't'
id_table_ID ::= 'i'
ns_section_ID ::= 'n'
element_sect_ID ::= 'e'
attribute_name_sec_ID ::= 'a'
attribute_value_sec_ID ::= 'v'
attribute_pair_sect_ID ::= 'p'
doc_hierarchy_sect_ID ::= 'd'
type_ID ::= [#x00 #xFF]
other_type_ID ::= #x00
string_ID ::= #x01
string_locator_ID ::= #x02
boolean_ID ::= #x03
byte_ID ::= #x04
unsigned_short_ID ::= #x05
short_ID ::= #x06
unsigned_long_ID ::= #x07
long_ID ::= #x08
float_ID ::= #x09
double_ID ::= #x0A
date_ID ::= #x0B
time_ID ::= #x0C
주의: 내장 데이터 타입에 대한 상기 리스트는 완성된 것이 아니다. 타입 00-0F는 내장 데이터 타입에 대한 것이다. XML 인코더는 타입 10-FF를 애플리케이션-지정 타입으로 지정할 수 있다. 애플리케이션-지정 타입에 (Java) 타입 인코더 및 디코더를 제공하는 것은 애플리케이션이 담당한다. 이들 타입 인코더 및 디코더는 요구되기 이전에 미리 인스톨되거나 다운로드되어야 한다. 타입 정보가 이용가능하지 않은 경우, XML 텍스트 및 속성값은 스트링으로 다루어진다.
Trailer
trailer_body ::=
주의: 현재는, 트레일러 패킷은 XML 문서의 종료를 나타내는 데에만 사용된다. 트레일러 패킷의 바디는 비어 있다.
Structure Packet
structure_body ::= [ID_table_section] [internal_subset_section]
[ns_table_section] [element_name_codetable_section]
[attribute_name_codetable_section]
[attribute_value_codetable_section]
[attribute_name_value_pair_section] [document_hierarchy_section]
주의: 상기의 EBNF 규칙에서는 구조 패킷의 바디의 각종 섹션이 특정한 순서로 배열되는 것으로 정의하고 있지만, 섹션은 실제로 각 섹션이 유일한 시그너쳐에 의해 식별된다면 임의의 순서로 배열되는 것도 허용된다.
ID Table Section
ID_table_section ::= ID_table_section_signature section_size compressed entry_count(ID_table | compressed_ID_table)
section_size ::= size_in_byte
주의: section_size는 시그너쳐를 제외한 섹션의 크기를 저장한다.
compressed ::= boolean
주의: 압축 플래그는 그 테이블이 압축되었는지의 여부를 나타낸다.
주의: boolean으로, 바이트값 1은 참(true)을 나타내고, 바이트값 0은 거짓(false)을 나타낸다.
entry_count ::= variable_length_natural_number
size_of_compressed_ID_table ::= variable_length_natural_number
ID_table ::= (ID_string offset_to_the_document_hierarchy)*
주의: ID_table은 압축되지 않은 ID 테이블의 구조를 정의한다. ID 테이블은 동일한 패킷의 문서 계층구조에 나타나는 노드의 ID만을 수집한다(노드 로케이터에 의해 참조되는 노드는 제외함). 부호화하는 동안 타입 정보를 입수할 수 없으면, 문서 내에 ID가 존재하더라도 인코더가 이들을 식별할 방법이 없으므로 ID는 ID 테이블에 수집되지 않는다.
ID_string ::= UTF8_string
offset_to_the_document_hierarchy ::= byte_offset
주의: offset_to_the_document_hierarchy는 (압축되지 않은) document_hierarchy_section에 대한 바이트 오프셋이 아니라 (압축되지 않은) document_hierarchy_section 내의 document_hierarchy에 대한 바이트 오프셋이다.
byte_offset ::= variable_length_natural_number
ID_table_section_signature ::= #xFF01
Internal Subset Section
Internal_subset_section ::= internal_subset_section_signature section_size_compressed[byte*]
주의: 내부 서브세트 섹션의 상세가 정의되어야 한다.
NS_table_section_signature ::= #xFF02
Namespace Table Section
NS_table_section ::= NS_table_section_signature section_size compressed entry_count index_base(NS_table | compressed_NS_table)
index_base ::= variable_length_natural_number
주의: NS_table에 대한 인덱스는 네임 스페이스 코드로서 사용된다. 인덱스의 베이스는 필드 index_base 내에 지정된다. 네임 스페이스 코드 0은 널 네임 스페이스를 위해 남겨둔다. 따라서, 네임 스페이스 테이블은 0의 index_base를 가질 수 없다.
NS_table ::= (NS_URI)*
주의: NS_table은 압축되지 않은 NS 테이블의 구조를 정의한다. 테이블에 대한 인덱스는 네임 스페이스 코드로서 사용된다. 인덱스의 베이스는 필드 index_base 내에 지정된다. 네임 스페이스 코드 0은 널 네임 스페이스를 위해 남겨둔다. 따라서, 네임 스페이스 테이블은 0의 index_base를 가질 수 없다.
NS_URI ::= URI
NS_table_section_signature ::= #xFF03
Code Table Sections
element_name_codetable_section ::= element_name_codetable_section
_signature section_size compressed entry_count index_base (element_name_codetable | compressed_element_name_codetable)
attribute_name_codetable_section ::= attribute_name_codetable_section
_signature section_size compressed entry_count index_base (attribute_name_codetable | compressed_attribute_name_codetable)
attribute_value_codetable_section ::= attribute_value_codetable_section
_signature section_size compressed entry_count index_base has_predefined_code (attribute_value_codetable | compressed_attribute_value_codetable)
주의: 미리 정의된 코드가 없는 경우에는, 각 코드 테이블에 대한 인덱스가 코드로서 사용된다. 코드 테이블은 부호화에 사용되는 코드와 실제값 사이의 맵핑을 허용한다. 각 테이블에 대한 인덱스의 베이스는 그 테이블의 필드 index_base 내에 지정된다. 양(positive)의 코드만이 허용된다. 따라서, index_base는 0의 값을 가질 수 없다.
element_name_codetable_section_signature ::= #xFF04
attribute_name_codetable_section_signature ::= #xFF05
attribute_value_codetable_section_signature ::= #xFF06
has_predefined_code ::= boolean
주의: has_predefined_code 플래그는 코드 테이블이 predefined_code 칼럼을 갖는지의 여부를 지정한다.
Element name code table
element_name_codetable ::= element_name_code_table_entry*
주의: element_name_codetable은 압축되지 않은 엘리먼트명 코드 테이블의 구조를 정의한다. 테이블에 대한 인덱스는 미리 정의된 코드가 없는 경우 엘리먼트명 코드로서 사용된다. 인덱스의 베이스는 필드 index_base 내에 지정된다. 코드 0은 남겨둔다. 따라서, 코드 테이블은 0의 index_base를 가질 수 없다.
element_name_codetable_entry ::= ns_code element_name type_ID [predefined_code]
주의: 내장 데이터 타입 및 인코더에 공지된 스페셜 타입을 제외하고, 모든 다른 타입의 텍스트 콘텐트는 스트링으로서 부호화된다.
predefined_code ::= byte_array
주의: 빈 predefined_code는 그 엔트리에 대해 미리 정의된 코드가 없음을 의미한다. 이러한 경우는 생기지 않아야 한다. 미리 정의된 코드 테이블에서 하나의 값이 누락되면, 인코더는 그 값에 대한 코드를 생성하여 이를 predefined_code 필드에 저장하여야 한다.
element_name ::= non_empty_UTF8_string | (#x0000 string_locator)
주의: 엘리먼트명은 항상 테이블에 인라인으로 저장된다. 그러나, 엘리먼트명이 너무 긴 경우, 분리된 텍스트 패킷 내에 저장될 수 있고, 그 대신 테이블 내에 스트링 로케이터가 사용된다.
string_locator ::= text_packet_number byte_offset
주의: byte_offset은 스트링이 발견될 수 있는 텍스트 패킷 바디에 대한 오프셋을 지정한다.
non_empty_UTF8_string ::= UTF_string-""
Attribute name code table
attribute_name_codetable ::= attribute_name_code_table_entry*
주의: attribute_name_codetable은 압축되지 않은 속성명 코드 테이블의 구조를 정의한다. 테이블에 대한 인덱스는 미리 정의된 코드가 없는 경우 속성명 코드로서 사용된다. 인덱스의 베이스는 필드 index_base 내에 지정된다. 코드 0은 남겨둔다. 따라서, 코드 테이블은 0의 index_table을 가질 수 없다.
attribute_name_codetable_entry ::= ns_code attribute_name type_ID [predefined_code]
주의: 내장 데이터 타입 및 인코더에 공지된 스페셜 타입을 제외하고, 다른 모든 타입의 텍스트 콘텐트는 스트링으로서 부호화된다.
attribute_name ::= non_empty_UTF8_string | (#x0000 string_locator)
주의: 속성명은 항상 테이블 내에 인라인으로 저장된다. 그러나, 속성명이 너무 긴 경우, 분리된 텍스트 패킷 내에 저장될 수 있고, 그 대신 테이블 내에 스트링 로케이터가 사용된다.
Attribute value code table
attribute_value_codetable ::= attribute_value_code_table_entry*
주의: attribute_value_codetable은 압축되지 않은 속성값 코드 테이블의 구조를 정의한다. 테이블에 대한 인덱스는 미리 정의된 코드가 없는 경우 속성값 코드로서 사용된다. 인덱스의 베이스는 필드 index_base 내에 지정된다. 코드 0은 남겨둔다. 따라서, 코드 테이블은 0의 index_base를 가질 수 없다.
attribute_value_codetable_entry ::= ns_code attribute_value type_ID predefined_code]
주의: 내장 데이터 타입 및 인코더에 공지된 스페셜 타입을 제외하고, 다른 모든 타입의 텍스트 콘텐트는 스트링으로서 부호화된다.
attribute_value ::= encoded_value
주의: 속성값은 통상 인라인으로 테이블에 저장된다.
encoded_value ::= encoded_value_of_non_string_type | non_empty_UTF8_string | (""#x00) | (#x00 string_locator)
주의: 값들은 그 타입에 따라 부호화된다. 내장 데이터 타입 및 인코더에 공지된 스페셜 타입을 제외하고, 값들은 스트링으로서 부호화된다.
주의: 빈 UTF8-string의 뒤에는 유효한 스트링 로케이터와의 구별을 위해 #x00이 뒤따라야 한다. 또한, 속성명이 너무 긴 경우, 분리된 텍스트 패킷 내에 저장될 수 있고, 그 대신 테이블 내에 스트링 로케이터가 사용된다.
Attribute Name/Value Pair Section
attribute_name_value_pair_section ::= attribute_name_value_pair_section
_signature section_size compressed entry_count index_base (attribute_name_value_pair_table | compressed_attribute_name_value_pair
_table)
attribute_name_value_pair_table = attribute_name_value_pair_entry*
주의: attribute_name_value_pair_table은 비압축된 속성명/값의 쌍 테이블의 구조를 정의한다. 인덱스의 베이스(>0)는 필드 index_base 내에 지정된다.
attribute_name_value_pair_entry ::= attribute_name_code attribute_value_code
attribute_name_value_pair_section_signature ::= #xFF07
Document Hierarchy Section
document_hierarchy_section ::= document_hierarchy_section_signature section_size compressed (subtree | compressed_subtree)
subtree ::= node
주의: 서브-트리는 압축되지 않은 XML 서브-트리의 구조를 정의한다.
node ::= node_size node_type (element_node | text_node | comment_node | node_locator)
주의: node_size는 노드의 크기와, 동일한 패킷 내에서 뒤따르는 부호화 노드들의 크기를 포함한다.
node_type ::= (element_node_signature element_flag) | ((text_node_signature | comment_node_signature | locator_node_signature)#x0)
element_node_signature ::= #x3
text_node_signature ::= #x5
comment_node_signature ::= #x9
locator_node_signature ::= #xC
element_flag ::= has_attribute | has_children | has_attribute_and_children
has_attribute ::= 0x1
has_children ::= 0x2
has_attribute_and_children ::= 0x3
element_node ::= element_name_code [attribute][child_node*]
child_nodes ::= node
attributes ::= index_of_starting_attribute_name_value_pair number_of_attribute
number_of_attributes ::= variable_length_natural_number
text_locator ::= string_locator
comment_node ::= text_locator
node_locator ::= packet_number
Text Packet
text_body ::= compressed (encoded_text | compressed_encoded_text)
encoded_text ::= (0x00 encoded_value*) | (next_packet_number UTF8_string)
주의: next_packet_number가 0이면, 텍스트 패킷의 제1 스트링은 롱 스트링의 마지막 프레그먼트가 된다. next_packet_number가 0이 아니면, 전체 텍스트 패킷은 스트링의 단일 프레그먼트를 포함한다.
next_packet_number ::= variable_length_natural_number
Command Packet
command_body ::= command path packet_number_of_subtree
주의: 추가되는 서브-트리는 지정된 패킷 번호를 갖는 구조 패킷 내에 정의된다.
command ::= insert_command | append_command
insert_command ::= #x01
append_command ::= #x02
path ::= URI_reference
URI-reference ::= UTF8_string
<부록 끝>
Claims (60)
- 데이터를 관리하는 구조화 문서(structured document) - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현(hierarchical representation)에 의해 기술됨 - 중 적어도 일부를 통신하는 방법에 있어서,상기 문서의 상기 계층적 표현을 식별하는 단계;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화화는 단계 - 상기 구조 및 상기 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화하는 단계는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 간의 적어도 하나의 링크를 생성하는 단계를 포함함 -; 및상기 데이터 패킷들을 하나 이상의 스트림으로 전달하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
- 제1항에 있어서,상기 스트림을 수신하는 단계;상기 스트림으로부터 상기 패킷들을 복호화하여 상기 링크들을 식별하는 단계; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 단계를 더 포함하는 것을 특징으로 하는 통신 방법.
- 제1항에 있어서,상기 패킷화하는 단계는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
- 계층적 표현에 의해 기술된 문서의 구조 중 적어도 일부를 통신하는 방법에 있어서,상기 표현 중 적어도 일부분을 식별하고 상기 부분을 소정의 크기의 적어도 하나의 패킷으로 패킷화하는 단계; 및상기 표현의 상기 부분 중 하나 이상이 상기 하나의 패킷 내에 들어맞지 않는 경우, 상기 하나의 패킷으로부터 상기 들어맞지 않은 부분이 패킷화되는 적어도 하나의 또 다른 상기 패킷으로의 적어도 하나의 링크를 정의하는 단계 - 상기 링크는 상기 패킷 내에서 상기 문서의 계층 구조를 유지함 -를 포함하는 것을 특징으로 하는 통신 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,상기 계층적 표현은 트리 표현을 포함하는 것을 특징으로 하는 통신 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,상기 문서는 XML 문서를 포함하는 것을 특징으로 하는 통신 방법.
- 제1항 내지 제4항 중 어느 한 항에 있어서,상기 소정의 크기는 소정의 최대 크기인 것을 특징으로 하는 통신 방법.
- XML 문서의 구조에 대한 액세스를 용이하게 하는 방법에 있어서,상기 문서의 계층적 표현을 식별하는 단계;상기 표현을 소정의 패킷 크기를 갖는 다수의 패킷으로 패킷화하는 단계; 및상기 표현 중 하나의 패킷 내에 표현될 수 없는 부분을 정의함으로써 역패킷화(de-packetizing) 이후에 상기 표현들의 재구성을 가능하게 하기 위하여 상기 패킷들 사이에 링크를 형성하는 단계를 포함하는 것을 특징으로 하는 방법.
- XML 문서를 부호화하는 방법에 있어서,상기 XML 문서의 일부분을 형성하는 각 데이터 타입을 식별하기 위하여 상기 XML 문서를 검사하는 단계;대응하는 스페셜 부호화 포맷이 이용가능한 상기 데이터 타입들의 제1 세트를 식별하는 단계;상기 제1 세트의 데이터 타입을 갖는 상기 XML 문서의 각 부분을 상기 대응하는 스페셜 부호화 포맷으로 부호화하는 제1 부호화 단계;상기 XML 문서의 나머지 각 부분을 상기 나머지 부분의 데이터 타입에 대응하는 디폴트(default) 부호화 포맷으로 부호화하는 제2 부호화 단계;적어도 상기 제1 세트의 각 데이터 타입을 참조하는 정보의 표현을 대응하는 스페셜 부호화 포맷으로 형성하는 단계; 및상기 표현과 상기 부호화 부분들을 상기 XML 문서의 부호화 폼으로서 연관시키는 단계를 포함하는 것을 특징으로 하는 부호화 방법.
- 제9항에 있어서,상기 부호화 단계는 상기 XML 문서의 구조 및 콘텐트 부분들을 분리하여 부호화하고, 상기 표현은 상기 XML 문서의 부호화 폼 중 헤더 부분에 유지되는 것을 특징으로 하는 부호화 방법.
- 제9항에 있어서,상기 표현은 상기 헤더 부분 내에 테이블로서 유지되는 것을 특징으로 하는 부호화 방법.
- 제10항에 있어서,상기 분리되어 부호화된 부분들은 적어도 하나의 비트스트림의 패킷들을 포함하는 것을 특징으로 하는 부호화 방법.
- 제9항에 있어서,상기 제1 부호화 단계는 상기 스페셜 데이터 타입 및 상기 대응하는 부분을 검사하여, 상기 부분에 적용하게 될 상기 부호화 포맷들 중 하나를 결정하는 단계를 포함하는 것을 특징으로 하는 부호화 방법.
- 제9항에 있어서,상기 부호화 단계는 상기 부분의 데이터 타입에 대응하는 다수의 상기 부호화 포맷들 중 하나를 선택하여, 상기 선택된 부호화 포맷으로 상기 부분을 부호화하는 단계를 포함하는 것을 특징으로 하는 부호화 방법.
- 부호화 XML 문서를 복호화하는 방법에 있어서,상기 XML 문서의 일부분을 형성하는 각 데이터 타입과 연관된 부호화 포맷을 식별하기 위하여 상기 부호화 XML 문서를 검사하는 단계; 및상기 대응하는 데이터 타입을 부호화한 부호화 포맷과 상보되는 디코더를 사용하여 상기 각 부분을 복호화하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
- 제15항에 있어서,상기 부호화 XML 문서는 분리하여 부호화된 상기 XML 문서의 구조 부분과 콘텐트 부분들을 포함하고, 상기 검사하는 단계는 적어도 하나의 구조 부분 내에서 상기 XML 문서의 부호화 부분을 상기 대응하는 부호화 포맷과 연관시키는 표현을 식별하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
- 제16항에 있어서,상기 부호화 XML 문서는 다수의 패킷으로서 형성되고, 상기 표현은 적어도 하나의 상기 패킷의 헤더 내에 형성되는 것을 특징으로 하는 복호화 방법.
- 제17항에 있어서,상기 표현은 테이블을 포함하는 것을 특징으로 하는 복호화 방법.
- 제16항 내지 제18항 중 어느 한 항에 있어서,상기 표현은 URI(Uniform Resource Indicator)를 포함하는 것을 특징으로 하는 복호화 방법.
- 제16항에 있어서,상기 표현은 적어도 대응하는 복호화 포맷을 갖는 스페셜 데이터 타입들의 세트에 관련되는 것을 특징으로 하는 복호화 방법.
- 제15항에 있어서,디코더가 상기 부호화 XML 문서의 부분을 복호화하는데 이용가능하지 않다면, 상기 부분을 무시하는 단계를 포함하는 것을 특징으로 하는 복호화 방법.
- 제1항, 제4항, 제8항 및 제9항 중 어느 한 항의 방법을 사용하여 형성되는 패킷화된 비트스트림.
- XML 문서를 부호화하는 장치에 있어서,상기 XML 문서의 일부분을 형성하는 각 데이터 타입을 식별하기 위하여 상기 XML 문서를 검사하는 수단;대응하는 스페셜 부호화 포맷이 이용가능한 상기 데이터 타입들의 제1 세트를 식별하는 수단;상기 제1 세트의 데이터 타입을 갖는 상기 XML 문서의 각 부분을 상기 대응하는 스페셜 부호화 포맷으로 부호화하는 제1 부호화 수단;상기 XML 문서의 나머지 각 부분을 상기 나머지 부분의 데이터 타입에 대응하는 디폴트(default) 부호화 포맷으로 부호화하는 제2 부호화 수단;적어도 상기 제1 세트의 각 데이터 타입을 참조하는 정보의 표현을 대응하는 스페셜 부호화 포맷으로 형성하는 수단; 및상기 표현과 상기 부호화 부분들을 상기 XML 문서의 부호화 폼으로서 연관시키는 수단을 포함하는 것을 특징으로 하는 부호화 장치.
- 컴퓨터로 하여금 데이터를 관리하는 구조화 문서(structured document) - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에서 표현되는 텍스트 콘텐트를 갖는 계층적 표현(hierarchical representation)에 의해 기술됨 - 중 적어도 일부를 통신하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 통신 절차는상기 문서의 상기 계층적 표현을 식별하는 단계;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화하는 단계 - 상기 구조 및 상기 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화하는 단계는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 간의 적어도 하나의 링크를 생성하는 단계를 포함함 -; 및상기 데이터 패킷들을 하나 이상의 스트림으로 전달하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제24항에 있어서,상기 스트림을 수신하는 단계;상기 스트림으로부터 상기 패킷들을 복호화하여 상기 링크들을 식별하는 단계; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제24항 또는 제25항에 있어서,상기 패킷화하는 단계는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 컴퓨터로 하여금 계층적 표현에 의해 기술된 문서의 구조 중 적어도 일부를 통신하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 통신 절차는상기 표현 중 적어도 일부분을 식별하고 상기 부분을 소정의 크기의 적어도 하나의 패킷으로 패킷화하는 단계; 및상기 표현의 상기 부분 중 하나 이상이 상기 하나의 패킷 내에 들어맞지 않는 경우, 상기 하나의 패킷으로부터 상기 들어맞지 않은 부분이 패킷화되는 적어도 하나의 또 다른 상기 패킷으로의 적어도 하나의 링크를 정의하는 단계 - 상기 링크는 상기 패킷 내에서 상기 문서의 계층 구조를 유지함 -를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제24항에 있어서,상기 계층적 표현은 트리 표현을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제24항에 있어서,상기 문서는 XML 문서를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제24항에 있어서,상기 소정의 크기는 소정의 최대 크기인 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 컴퓨터로 하여금 XML 문서의 구조에 대한 액세스를 용이하게 하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,XML 문서의 구조에 대한 액세스를 용이하게 하는 상기 절차는상기 문서의 계층적 표현을 식별하는 단계;상기 표현을 소정의 패킷 크기를 갖는 다수의 패킷으로 패킷화하는 단계; 및상기 표현 중 하나의 패킷 내에 표현될 수 없는 부분을 정의함으로써 역패킷화(de-packetizing) 이후에 상기 표현들의 재구성을 가능하게 하기 위하여 상기 패킷들 사이에 링크를 형성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 컴퓨터로 하여금 XML 문서를 부호화하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 부호화 절차는,상기 XML 문서의 일부분을 형성하는 각 데이터 타입을 식별하기 위하여 상기 XML 문서를 검사하는 단계;대응하는 스페셜 부호화 포맷이 이용가능한 상기 데이터 타입들의 제1 세트를 식별하는 단계;상기 제1 세트의 데이터 타입을 갖는 상기 XML 문서의 각 부분을 상기 대응하는 스페셜 부호화 포맷으로 부호화하는 제1 부호화 단계;상기 XML 문서의 나머지 각 부분을 상기 나머지 부분의 데이터 타입에 대응하는 디폴트(default) 부호화 포맷으로 부호화하는 제2 부호화 단계;적어도 상기 제1 세트의 각 데이터 타입을 참조하는 정보의 표현을 대응하는 스페셜 부호화 포맷으로 형성하는 단계; 및상기 표현과 상기 부호화 부분들을 상기 XML 문서의 부호화 폼으로서 연관시키는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제32항에 있어서,상기 부호화 단계는 상기 XML 문서의 구조 및 콘텐트 부분들을 분리하여 부호화하고, 상기 표현은 상기 XML 문서의 부호화 폼 중 헤더 부분에 유지되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제32항 또는 제33항에 있어서,상기 표현은 상기 헤더 부분 내에 테이블로서 유지되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제33항에 있어서,상기 분리되어 부호화된 부분들은 적어도 하나의 비트스트림의 패킷들을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제32항에 있어서,상기 제1 부호화 단계는 상기 스페셜 데이터 타입 및 상기 대응하는 부분을 검사하여, 상기 부분에 적용하게 될 상기 부호화 포맷들 중 하나를 결정하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제32항에 있어서,상기 부호화 단계는 상기 부분의 데이터 타입에 대응하는 다수의 상기 부호화 포맷들 중 하나를 선택하여, 상기 선택된 부호화 포맷으로 상기 부분을 부호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 컴퓨터로 하여금 부호화된 XML 문서를 복호화하는 절차를 실행하게 하도록 구성된 프로그램이 기록되는 컴퓨터 판독가능 매체에 있어서,상기 복호화 절차는,상기 XML 문서의 일부분을 형성하는 각 데이터 타입과 연관된 부호화 포맷을 식별하기 위하여 상기 부호화 XML 문서를 검사하는 단계; 및상기 대응하는 데이터 타입을 부호화한 부호화 포맷과 상보되는 디코더를 사용하여 상기 각 부분을 복호화하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제38항에 있어서,상기 부호화 XML 문서는 분리하여 부호화된 상기 XML 문서의 구조 부분과 콘텐트 부분들을 포함하고, 상기 검사하는 단계는 적어도 하나의 구조 부분 내에서 상기 XML 문서의 부호화 부분을 상기 대응하는 부호화 포맷과 연관시키는 표현을 식별하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제39항에 있어서,상기 부호화 XML 문서는 다수의 패킷으로서 형성되고, 상기 표현은 적어도 하나의 상기 패킷의 헤더 내에 형성되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제40항에 있어서,상기 표현은 테이블을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제39항에 있어서,상기 표현은 URI(Uniform Resource Indicator)를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제42항에 있어서,상기 표현은 적어도 대응하는 복호화 포맷들을 갖는 스페셜 데이터 타입들의 세트에 관련되는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제43항에 있어서,디코더가 상기 부호화 XML 문서의 부분을 복호화하는데 이용가능하지 않다면, 상기 부분을 무시하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 데이터를 관리하는 구조화 문서 - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현에 의해 기술됨 - 중 적어도 일부를 통신하는 장치에 있어서,상기 문서의 상기 계층적 표현을 식별하는 식별 유닛;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화 - 상기 구조 및 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함함 - 하는 패킷화 유닛; 및상기 데이터 패킷들을 하나 또는 그 이상의 스트림으로 전달하는 전달 유닛을 포함하는 것을 특징으로 하는 통신 장치.
- XML 문서를 부호화하는 장치에 있어서,상기 XML 문서의 일부분을 형성하는 각 데이터 타입을 식별하기 위하여 상기 XML 문서를 검사하는 검사 유닛;대응하는 스페셜 부호화 포맷이 이용가능한 상기 데이터 타입들의 제1 세트를 식별하는 식별 유닛;상기 제1 세트의 데이터 타입을 갖는 상기 XML 문서의 각 부분을 상기 대응하는 스페셜 부호화 포맷으로 부호화하는 제1 부호화 유닛;상기 XML 문서의 나머지 각 부분을 상기 나머지 부분의 데이터 타입에 대응하는 디폴트(default) 부호화 포맷으로 부호화하는 제2 부호화 수단;적어도 상기 제1 세트의 각 데이터 타입을 참조하는 정보의 표현을 대응하는 스페셜 부호화 포맷으로 형성하는 형성 유닛; 및상기 표현과 상기 부호화 부분들을 상기 XML 문서의 부호화 폼으로서 연관시키는 연관 유닛을 포함하는 것을 특징으로 하는 부호화 장치.
- 데이터를 관리하는 구조화 문서 - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현에 의해 기술됨 - 중 적어도 일부를 통신하는 방법에 있어서,상기 문서의 상기 계층적 표현을 식별하는 단계;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화 - 상기 구조 및 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화하는 단계는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함함 - 하는 단계;상기 데이터 패킷들을 하나 또는 그 이상의 스트림으로 전달하는 단계;상기 스트림을 수신하는 단계;상기 스트림으로부터 상기 패킷들을 복호화하여 상기 링크들을 식별하는 단계; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
- 제47항에 있어서,상기 패킷화하는 단계는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함하는 것을 특징으로 하는 통신 방법.
- 컴퓨터로 하여금 데이터를 관리하는 구조화 문서 - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현에 의해 기술됨 - 중 적어도 일부를 통신하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 통신 절차는상기 문서의 상기 계층적 표현을 식별하는 단계;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화하는 단계 - 상기 구조 및 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화하는 단계는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 간의 적어도 하나의 링크를 생성하는 단계를 포함함 -;상기 데이터 패킷들을 하나 이상의 스트림으로 전달하는 단계;상기 스트림을 수신하는 단계;상기 스트림으로부터 상기 패킷들을 복호화하여 상기 링크들을 식별하는 단계; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제49항에 있어서,상기 패킷화하는 단계는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 컴퓨터로 하여금 트리 표현(tree representation)을 포함하는 계층적 표현에 의해 기술된 문서의 구조 중 적어도 일부를 통신하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 통신 절차는상기 트리 표현 중 적어도 일부분을 식별하고 상기 부분을 소정의 크기의 적어도 하나의 패킷으로 패킷화하는 단계; 및상기 트리 표현의 상기 부분 중 하나 이상이 상기 하나의 패킷 내에 들어맞지 않는 경우, 상기 하나의 패킷으로부터 상기 들어맞지 않은 부분이 패킷화되는 적어도 하나의 또 다른 상기 패킷으로의 적어도 하나의 링크를 정의하는 단계 - 상기 링크는 상기 패킷 내에서 상기 문서의 계층 구조를 유지함 -를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 데이터를 관리하는 구조화 문서 - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현에 의해 기술됨 - 중 적어도 일부를 통신하는 장치에 있어서,상기 문서의 상기 계층적 표현을 식별하는 식별 유닛;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화 - 상기 구조 및 상기 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 것을 포함함 - 하는 패킷화 유닛;상기 데이터 패킷들을 하나 또는 그 이상의 스트림으로 전달하는 전달 유닛;상기 스트림을 수신하는 수신 유닛;상기 링크들을 식별하도록 상기 스트림으로부터 상기 패킷들을 복호화하는 복호화 유닛; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 재구성 유닛을 포함하는 것을 특징으로 하는 통신 장치.
- 제52항에 있어서,상기 패킷화는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 것을 포함하는 것을 특징으로 하는 통신 장치.
- 컴퓨터로 하여금 데이터를 관리하는 구조화 문서 - 상기 문서는 구조와 상기 구조의 각 말단 노드(leaf node)에 표현되는 텍스트 콘텐트를 갖는 계층적 표현에 의해 기술됨 - 중 적어도 일부를 통신하는 절차를 실행하게 하도록 구성된 프로그램이 기록된 컴퓨터 판독가능 매체에 있어서,상기 통신 절차는상기 문서의 상기 계층적 표현을 식별하는 단계;상기 계층적 표현을 다수의 데이터 패킷으로 패킷화하는 단계 - 상기 구조 및 상기 텍스트 콘텐트는 분리된 패킷으로 패킷화되고, 상기 패킷화하는 단계는 적어도 하나의 상기 구조 패킷과 적어도 하나의 상기 텍스트 콘텐트 패킷 간의 적어도 하나의 링크를 생성하는 단계를 포함함 -;상기 데이터 패킷들을 하나 또는 그 이상의 스트림으로 전달하는 단계;상기 스트림을 수신하는 단계;상기 스트림으로부터 상기 패킷들을 복호화하여 상기 링크들을 식별하는 단계; 및상기 링크들을 사용하여 상기 스트림의 한 패킷으로 상기 표현의 패킷화되지 않은 부분들에 대한 상기 표현을 재구성하는 단계를 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 제54항에 있어서,상기 패킷화는 상기 적어도 하나의 구조 패킷과 적어도 하나의 계층적으로 연관된 상기 텍스트 콘텐트 패킷 사이에 적어도 하나의 링크를 생성하는 것을 포함하는 것을 특징으로 하는 컴퓨터 판독가능 매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AUPR0634 | 2000-10-06 | ||
AUPR0634A AUPR063400A0 (en) | 2000-10-06 | 2000-10-06 | Xml encoding scheme |
PCT/AU2001/001257 WO2002029602A1 (en) | 2000-10-06 | 2001-10-05 | Xml encoding scheme |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20030061819A KR20030061819A (ko) | 2003-07-22 |
KR100566019B1 true KR100566019B1 (ko) | 2006-03-31 |
Family
ID=3824692
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020037004869A KR100566019B1 (ko) | 2000-10-06 | 2001-10-05 | Xml 부호화 기법 |
Country Status (9)
Country | Link |
---|---|
US (1) | US7647552B2 (ko) |
EP (1) | EP1323064B1 (ko) |
JP (1) | JP4574114B2 (ko) |
KR (1) | KR100566019B1 (ko) |
CN (1) | CN1244062C (ko) |
AT (1) | ATE366441T1 (ko) |
AU (1) | AUPR063400A0 (ko) |
DE (1) | DE60129232T2 (ko) |
WO (1) | WO2002029602A1 (ko) |
Families Citing this family (110)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8312429B2 (en) * | 2000-11-10 | 2012-11-13 | Oracle International Corporation | Cell based data processing |
WO2002043396A2 (en) * | 2000-11-27 | 2002-05-30 | Intellocity Usa, Inc. | System and method for providing an omnimedia package |
ATE513415T1 (de) * | 2001-12-28 | 2011-07-15 | Koninkl Philips Electronics Nv | Verfahren zur verarbeitung von multimediainhalt |
KR20030095048A (ko) | 2002-06-11 | 2003-12-18 | 엘지전자 주식회사 | 멀티미디어 재생 방법 및 장치 |
BR0306986A (pt) * | 2002-07-23 | 2005-06-28 | Samsung Electronics Co Ltd | Estrutura de ìndice de meta-dados divididos em fragmentos e mìdia para leitura em computador |
CN100525386C (zh) * | 2002-09-24 | 2009-08-05 | 佳能株式会社 | 图像摄取装置 |
KR100449742B1 (ko) | 2002-10-01 | 2004-09-22 | 삼성전자주식회사 | 멀티미디어 방송 송수신 장치 및 방법 |
DE10339971A1 (de) * | 2002-12-03 | 2004-07-01 | Siemens Ag | Verfahren zur Codierung eines XML-basierten Dokuments |
US20040111396A1 (en) * | 2002-12-06 | 2004-06-10 | Eldar Musayev | Querying against a hierarchical structure such as an extensible markup language document |
GB0305828D0 (en) | 2003-03-14 | 2003-04-16 | Ibm | Real time xml data update identification |
JP3815567B2 (ja) * | 2003-03-31 | 2006-08-30 | 日本電気株式会社 | コンピュータシステム、コンピュータプログラム、コンピュータ間の通信方法、構造化文書の符号化方法、符号化された構造化文書の復号方法 |
KR100511308B1 (ko) * | 2003-04-29 | 2005-08-31 | 엘지전자 주식회사 | 휴대 단말기에서 스마일 문서의 z-인덱스 처리방법 |
JP4625004B2 (ja) * | 2003-09-10 | 2011-02-02 | 株式会社エヌ・ティ・ティ・ドコモ | 安全で小額の信用課金をサービスプロバイダが認証可能に測定するための方法及び装置 |
CN100442278C (zh) * | 2003-09-18 | 2008-12-10 | 富士通株式会社 | 网页信息块提取方法和装置 |
EP1902523A1 (en) * | 2003-11-07 | 2008-03-26 | Expway | Method for compressing and decompressing structured documents |
JP2005141650A (ja) * | 2003-11-10 | 2005-06-02 | Seiko Epson Corp | 構造化文書符号化装置及び構造化文書符号化方法ならびにそのプログラム |
US20050114224A1 (en) * | 2003-11-24 | 2005-05-26 | Hodges Donna K. | Methods for providing communications services |
US7464179B2 (en) | 2003-11-24 | 2008-12-09 | At&T Intellectual Property I, L.P. | Methods, systems, and products for providing communications services amongst multiple providers |
US7467219B2 (en) * | 2003-11-24 | 2008-12-16 | At&T Intellectual Property I, L.P. | Methods for providing communications services |
US7509373B2 (en) | 2003-11-24 | 2009-03-24 | At&T Intellectual Property I, L.P. | Methods for providing communications services |
US7216127B2 (en) * | 2003-12-13 | 2007-05-08 | International Business Machines Corporation | Byte stream organization with improved random and keyed access to information structures |
US7237184B2 (en) * | 2003-12-18 | 2007-06-26 | Microsoft Corporation | Data property promotion system and method |
CN1635492A (zh) * | 2003-12-30 | 2005-07-06 | 皇家飞利浦电子股份有限公司 | 一种xml数据的压缩与解压缩方法及装置 |
US7873663B2 (en) * | 2004-01-13 | 2011-01-18 | International Business Machines Corporation | Methods and apparatus for converting a representation of XML and other markup language data to a data structure format |
US7454696B2 (en) * | 2004-04-09 | 2008-11-18 | International Business Machines Corporation | Method and apparatus for stream based markup language post-processing |
ATE532142T1 (de) * | 2004-03-16 | 2011-11-15 | Microdasys Inc | Inhaltsüberwachung für xml |
US7664759B2 (en) * | 2004-05-18 | 2010-02-16 | Hewlett-Packard Development Company, L.P. | Method and system for storing self-descriptive tabular data with alphanumeric and binary values |
DE102004034004A1 (de) * | 2004-07-14 | 2006-02-09 | Siemens Ag | Verfahren zum Codieren eines XML-Dokuments, sowie Verfahren zum Decodieren, Verfahren zum Codieren und Decodieren, Codiervorrichtung, Decodiervorrichtung und Vorrichtung zum Codieren und Decodieren |
US7627589B2 (en) * | 2004-08-10 | 2009-12-01 | Palo Alto Research Center Incorporated | High performance XML storage retrieval system and method |
DE102004043269A1 (de) * | 2004-09-07 | 2006-03-23 | Siemens Ag | Verfahren zur Codierung eines XML-basierten Dokuments |
DE102004044164A1 (de) * | 2004-09-13 | 2006-03-30 | Siemens Ag | Verfahren und Vorrichtung zur Kodierung von XML-Dokumenten |
US20060085737A1 (en) * | 2004-10-18 | 2006-04-20 | Nokia Corporation | Adaptive compression scheme |
US8533357B2 (en) | 2004-12-03 | 2013-09-10 | Microsoft Corporation | Mechanism for binding a structured data protocol to a protocol offering up byte streams |
US7412649B2 (en) * | 2005-01-24 | 2008-08-12 | International Business Machines Corporation | Viewing and editing markup language files with complex semantics |
US7444345B2 (en) * | 2005-02-15 | 2008-10-28 | International Business Machines Corporation | Hierarchical inherited XML DOM |
US20060182129A1 (en) * | 2005-02-16 | 2006-08-17 | Mutch Karl N | Distributed markup and processing apparatus and method |
KR100660028B1 (ko) * | 2005-02-23 | 2006-12-20 | 인천대학교 산학협력단 | 데이터베이스 개념 구조에 기반한 xml 트리의 색인 및질의 방법 |
US8346737B2 (en) * | 2005-03-21 | 2013-01-01 | Oracle International Corporation | Encoding of hierarchically organized data for efficient storage and processing |
CN101198954B (zh) * | 2005-04-12 | 2010-08-25 | 法国电信公司 | 用于处理树数据结构的方法 |
US8667179B2 (en) * | 2005-04-29 | 2014-03-04 | Microsoft Corporation | Dynamic utilization of condensing metadata |
ATE374400T1 (de) * | 2005-06-21 | 2007-10-15 | Research In Motion Ltd | Automatisierte auswahl und aufnahme einer nachrichtensignatur |
WO2007000649A1 (en) * | 2005-06-27 | 2007-01-04 | Nokia Corporation | Transport mechanisms for dynamic rich media scenes |
US20070055629A1 (en) * | 2005-09-08 | 2007-03-08 | Qualcomm Incorporated | Methods and apparatus for distributing content to support multiple customer service entities and content packagers |
US7565506B2 (en) * | 2005-09-08 | 2009-07-21 | Qualcomm Incorporated | Method and apparatus for delivering content based on receivers characteristics |
US20070078944A1 (en) * | 2005-09-12 | 2007-04-05 | Mark Charlebois | Apparatus and methods for delivering and presenting auxiliary services for customizing a channel |
US8528029B2 (en) | 2005-09-12 | 2013-09-03 | Qualcomm Incorporated | Apparatus and methods of open and closed package subscription |
US8893179B2 (en) * | 2005-09-12 | 2014-11-18 | Qualcomm Incorporated | Apparatus and methods for providing and presenting customized channel information |
US8156232B2 (en) * | 2005-09-12 | 2012-04-10 | Rockwell Automation Technologies, Inc. | Network communications in an industrial automation environment |
US8533358B2 (en) * | 2005-11-08 | 2013-09-10 | Qualcomm Incorporated | Methods and apparatus for fragmenting system information messages in wireless networks |
US8571570B2 (en) * | 2005-11-08 | 2013-10-29 | Qualcomm Incorporated | Methods and apparatus for delivering regional parameters |
US8600836B2 (en) | 2005-11-08 | 2013-12-03 | Qualcomm Incorporated | System for distributing packages and channels to a device |
CN101369268B (zh) * | 2007-08-15 | 2011-08-24 | 北京书生国际信息技术有限公司 | 一种文档库系统中文档数据的存储方法 |
US7747942B2 (en) * | 2005-12-20 | 2010-06-29 | American Express Travel Related Services Company, Inc. | System and method for obtaining a markup language template through reversing engineering |
US8842660B2 (en) * | 2006-03-31 | 2014-09-23 | Microsoft Corporation | VoIP variable metadata |
US8228824B2 (en) * | 2006-04-06 | 2012-07-24 | Microsoft Corporation | VoIP contextual information processing |
US20070253407A1 (en) * | 2006-05-01 | 2007-11-01 | Microsoft Corporation | Enhanced VoIP services |
US20070270126A1 (en) * | 2006-05-18 | 2007-11-22 | Microsoft Corporation | Authentication of a digital voice conversation |
US20070274293A1 (en) * | 2006-05-26 | 2007-11-29 | Microsoft Corporation | Archiving VoIP conversations |
US20070280225A1 (en) * | 2006-05-31 | 2007-12-06 | Microsoft Corporation | Extended services and recommendations |
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 |
CN101627607A (zh) * | 2007-02-26 | 2010-01-13 | 诺基亚公司 | 用于执行对富媒体内容和服务的动态更新的基于脚本的系统 |
JP4830936B2 (ja) * | 2007-03-23 | 2011-12-07 | カシオ電子工業株式会社 | 印刷システム、及び該システムに使用するホスト機器 |
US7917515B1 (en) * | 2007-03-26 | 2011-03-29 | Lsi Corporation | System and method of accelerating processing of streaming data |
US7933933B2 (en) * | 2007-07-30 | 2011-04-26 | Oracle International Corporation | Fast path loading of XML data |
US8250115B2 (en) * | 2007-08-10 | 2012-08-21 | International Business Machines Corporation | Method, apparatus and software for processing data encoded as one or more data elements in a data format |
US20090138491A1 (en) * | 2007-11-28 | 2009-05-28 | Sandeep Chowdhury | Composite Tree Data Type |
US7865489B2 (en) * | 2007-11-28 | 2011-01-04 | International Business Machines Corporation | System and computer program product for discovering design documents |
US7865488B2 (en) * | 2007-11-28 | 2011-01-04 | International Business Machines Corporation | Method for discovering design documents |
US20100049727A1 (en) * | 2008-08-20 | 2010-02-25 | International Business Machines Corporation | Compressing xml documents using statistical trees generated from those documents |
US20100083083A1 (en) * | 2008-09-30 | 2010-04-01 | Apple Inc. | Compressed table format |
FR2936623B1 (fr) * | 2008-09-30 | 2011-03-04 | Canon Kk | Procede de codage d'un document structure et de decodage, dispositifs correspondants |
US8261186B2 (en) * | 2009-01-02 | 2012-09-04 | Apple Inc. | Methods for efficient cluster analysis |
FR2943441A1 (fr) * | 2009-03-18 | 2010-09-24 | Canon Kk | Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes |
DE102009015734A1 (de) * | 2009-03-31 | 2010-10-07 | Siemens Aktiengesellschaft | Komprimierungsverfahren, Dekomprimierungsverfahren, Komprimierungseinheit, Dekomprimierungseinheit sowie komprimiertes Dokument |
US9124448B2 (en) * | 2009-04-04 | 2015-09-01 | Oracle International Corporation | Method and system for implementing a best efforts resequencer |
US20100254388A1 (en) * | 2009-04-04 | 2010-10-07 | Oracle International Corporation | Method and system for applying expressions on message payloads for a resequencer |
US8661083B2 (en) * | 2009-04-04 | 2014-02-25 | Oracle International Corporation | Method and system for implementing sequence start and increment values for a resequencer |
US8578218B2 (en) * | 2009-04-04 | 2013-11-05 | Oracle International Corporation | Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment |
US8254391B2 (en) * | 2009-04-04 | 2012-08-28 | Oracle International Corporation | Method and system for performing blocking of messages on errors in message stream |
EP2242273A1 (en) | 2009-04-14 | 2010-10-20 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Transmission scheme for text-based information |
CN101557399A (zh) * | 2009-05-20 | 2009-10-14 | 深圳市汇海科技开发有限公司 | 一种xmpp协议传输数据压缩与解压缩方法 |
CN101902489B (zh) * | 2009-06-01 | 2013-04-17 | 华为技术有限公司 | 一种消息发送方法、处理方法、客户端、路由器和系统 |
FR2949883B1 (fr) * | 2009-09-10 | 2011-10-07 | Canon Kk | Procede de codage et de decodage d'un document structure, dispositifs correspondants |
BR122020008249B1 (pt) | 2010-04-13 | 2021-02-17 | Ge Video Compression, Llc | herança em amostra de arranjo em subdivisão multitree |
CN106231337B (zh) * | 2010-04-13 | 2020-06-19 | Ge视频压缩有限责任公司 | 解码器、解码方法、编码器以及编码方法 |
EP3703369B1 (en) | 2010-04-13 | 2024-07-24 | GE Video Compression, LLC | Sample region merging |
CN106067983B (zh) | 2010-04-13 | 2019-07-12 | Ge视频压缩有限责任公司 | 解码数据流的方法、生成数据流的方法及解码器 |
CA2706743A1 (en) * | 2010-06-30 | 2010-09-08 | Ibm Canada Limited - Ibm Canada Limitee | Dom based page uniqueness indentification |
CN102096706B (zh) * | 2011-01-05 | 2013-03-06 | 北京大学 | 一种变步长xml编码方法 |
US8442998B2 (en) | 2011-01-18 | 2013-05-14 | Apple Inc. | Storage of a document using multiple representations |
US9111327B2 (en) | 2011-01-18 | 2015-08-18 | Apple Inc. | Transforming graphic objects |
EP2739047A4 (en) * | 2011-07-29 | 2015-03-25 | Sony Corp | STREAMING DISTRIBUTION DEVICE AND METHOD, STREAMING RECEPTOR DEVICE AND METHOD, STREAMING SYSTEM, PROGRAM AND RECORDING MEDIUM |
DE102011112076A1 (de) * | 2011-09-01 | 2013-03-07 | Heidelberger Druckmaschinen Ag | Verfahren zum Erzeugen eines Druckproduktes |
US8862897B2 (en) | 2011-10-01 | 2014-10-14 | Oracle International Corporation | Increasing data security in enterprise applications by using formatting, checksums, and encryption to detect tampering of a data buffer |
WO2013089977A1 (en) * | 2011-12-12 | 2013-06-20 | Motorola Solutions, Inc. | Communicating large presence documents |
US9723091B1 (en) * | 2012-11-09 | 2017-08-01 | Noble Systems Corporation | Variable length protocol using serialized payload with compression support |
US9063916B2 (en) * | 2013-02-27 | 2015-06-23 | Oracle International Corporation | Compact encoding of node locations |
CN104104575B (zh) * | 2013-04-03 | 2019-01-29 | 腾讯科技(深圳)有限公司 | 一种即时通讯群的通讯方法及系统 |
US9628107B2 (en) | 2014-04-07 | 2017-04-18 | International Business Machines Corporation | Compression of floating-point data by identifying a previous loss of precision |
US9959299B2 (en) | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US20170099350A1 (en) * | 2015-10-05 | 2017-04-06 | Tobesoft Co., Ltd | Apparatus and method for transmitting mass data |
CN106021199B (zh) * | 2016-05-13 | 2019-02-15 | 中国农业银行股份有限公司 | 一种面向业务数据的字符串报文处理方法和装置 |
US10652300B1 (en) | 2017-06-16 | 2020-05-12 | Amazon Technologies, Inc. | Dynamically-generated encode settings for media content |
US11989569B2 (en) * | 2018-04-11 | 2024-05-21 | NanoVMs, Inc. | Unikernel provisioning |
US10506388B1 (en) * | 2018-06-27 | 2019-12-10 | Harris Global Communications, Inc. | Efficient short message compression |
RU2762398C2 (ru) * | 2019-12-03 | 2021-12-21 | Владимир Дмитриевич Мазур | Способ передачи двоичных данных в стандартном звуковом медиапотоке |
US11244126B2 (en) | 2019-12-19 | 2022-02-08 | Datamax-O'neil Corporation | Systems and methods for encoding and decoding data |
CN113659993B (zh) * | 2021-08-17 | 2022-06-17 | 深圳市康立生物医疗有限公司 | 免疫批次数据处理方法、装置、终端及可读存储介质 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5375068A (en) * | 1992-06-03 | 1994-12-20 | Digital Equipment Corporation | Video teleconferencing for networked workstations |
DE69626404T2 (de) | 1995-12-07 | 2004-01-08 | Vistar Telecommunications Inc., Ottawa | Drahtloses verteiltes datenpaketübertragungssystem |
US5991279A (en) | 1995-12-07 | 1999-11-23 | Vistar Telecommunications Inc. | Wireless packet data distributed communications system |
JP2000515692A (ja) | 1995-12-12 | 2000-11-21 | ザ ボード オブ トラスティーズ オブ ザ ユニバーシティー オブ イリノイ | 性質限定システム上でリアルタイムの動画及び音声情報を伝送し読み出すための方法及び装置 |
US5835730A (en) * | 1996-07-31 | 1998-11-10 | General Instrument Corporation Of Delaware | MPEG packet header compression for television modems |
JPH10143403A (ja) | 1996-11-12 | 1998-05-29 | Fujitsu Ltd | 情報管理装置および情報管理プログラム記憶媒体 |
GB9624001D0 (en) | 1996-11-19 | 1997-01-08 | Digi Media Vision Ltd | Method and apparatus for modifying tables of data |
JP3193947B2 (ja) * | 1997-01-08 | 2001-07-30 | 株式会社ディジタル・ビジョン・ラボラトリーズ | データ送信システム及びデータ送信方法 |
US5790196A (en) | 1997-02-14 | 1998-08-04 | Mitsubishi Electric Information Technology Center America, Inc. | Adaptive video coding method |
KR100593581B1 (ko) * | 1997-10-17 | 2006-06-28 | 코닌클리케 필립스 일렉트로닉스 엔.브이. | 데이터를 일정한 사이즈의 전송 패킷으로 캡슐화하는 방법 |
US6453355B1 (en) * | 1998-01-15 | 2002-09-17 | Apple Computer, Inc. | Method and apparatus for media data transmission |
EP0973129A3 (en) | 1998-07-17 | 2005-01-12 | Matsushita Electric Industrial Co., Ltd. | Motion image data compression system |
AU1517499A (en) * | 1998-11-27 | 2000-06-19 | Kent Ridge Digital Labs | Method and apparatus for content-linking supplemental information with time-sequence data |
US6393456B1 (en) | 1998-11-30 | 2002-05-21 | Microsoft Corporation | System, method, and computer program product for workflow processing using internet interoperable electronic messaging with mime multiple content type |
US6490370B1 (en) * | 1999-01-28 | 2002-12-03 | Koninklijke Philips Electronics N.V. | System and method for describing multimedia content |
JP2000259667A (ja) * | 1999-03-12 | 2000-09-22 | Hitachi Information Systems Ltd | 文書データ登録システム,文書データ登録方法およびこの方法を実現するためのプログラムを記録した記録媒体 |
US6763499B1 (en) * | 1999-07-26 | 2004-07-13 | Microsoft Corporation | Methods and apparatus for parsing extensible markup language (XML) data streams |
US6966027B1 (en) * | 1999-10-04 | 2005-11-15 | Koninklijke Philips Electronics N.V. | Method and apparatus for streaming XML content |
US6883137B1 (en) * | 2000-04-17 | 2005-04-19 | International Business Machines Corporation | System and method for schema-driven compression of extensible mark-up language (XML) documents |
US6970935B1 (en) * | 2000-11-01 | 2005-11-29 | International Business Machines Corporation | Conversational networking via transport, coding and control conversational protocols |
KR100537199B1 (ko) * | 2004-05-06 | 2005-12-16 | 주식회사 하이닉스반도체 | 동기식 메모리 소자 |
-
2000
- 2000-10-06 AU AUPR0634A patent/AUPR063400A0/en not_active Abandoned
-
2001
- 2001-10-05 CN CNB018155480A patent/CN1244062C/zh not_active Expired - Fee Related
- 2001-10-05 US US10/363,431 patent/US7647552B2/en not_active Expired - Fee Related
- 2001-10-05 DE DE60129232T patent/DE60129232T2/de not_active Expired - Lifetime
- 2001-10-05 AT AT01973848T patent/ATE366441T1/de not_active IP Right Cessation
- 2001-10-05 KR KR1020037004869A patent/KR100566019B1/ko not_active IP Right Cessation
- 2001-10-05 JP JP2002533104A patent/JP4574114B2/ja not_active Expired - Fee Related
- 2001-10-05 EP EP01973848A patent/EP1323064B1/en not_active Expired - Lifetime
- 2001-10-05 WO PCT/AU2001/001257 patent/WO2002029602A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
EP1323064A4 (en) | 2005-08-10 |
CN1244062C (zh) | 2006-03-01 |
DE60129232T2 (de) | 2008-03-06 |
JP2004510279A (ja) | 2004-04-02 |
CN1455901A (zh) | 2003-11-12 |
KR20030061819A (ko) | 2003-07-22 |
AUPR063400A0 (en) | 2000-11-02 |
US20040028049A1 (en) | 2004-02-12 |
WO2002029602A1 (en) | 2002-04-11 |
ATE366441T1 (de) | 2007-07-15 |
EP1323064B1 (en) | 2007-07-04 |
DE60129232D1 (de) | 2007-08-16 |
US7647552B2 (en) | 2010-01-12 |
EP1323064A1 (en) | 2003-07-02 |
JP4574114B2 (ja) | 2010-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100566019B1 (ko) | Xml 부호화 기법 | |
JP3880517B2 (ja) | 文書処理方法 | |
KR101011663B1 (ko) | Xml 문서의 구조적 스트리밍을 위한 방법 및 장치 | |
US7428547B2 (en) | System and method of organizing data to facilitate access and streaming | |
JP4405146B2 (ja) | Mpeg−7インスタンス用の二進フォーマット | |
EP1969457A2 (en) | A compressed schema representation object and method for metadata processing | |
Avaro et al. | MPEG-7 Systems: overview | |
US7870483B2 (en) | Encoding and distribution of schema for multimedia content descriptions | |
JP2003511770A (ja) | Xmlコンテンツをストリーミングする方法及び装置 | |
US20080228825A1 (en) | System and method of organizing data to facilitate access and streaming | |
US20050131930A1 (en) | Method and system for generating input file using meta representation on compression of graphics data, and animation framework extension (AFX) coding method and apparatus | |
US7814408B1 (en) | Pre-computing and encoding techniques for an electronic document to improve run-time processing | |
Leighton et al. | TREECHOP: A Tree-based Query-able Compressor for XML | |
US7627586B2 (en) | Method for encoding a structured document | |
AU2001293514B2 (en) | XML encoding scheme | |
KR20020070199A (ko) | 멀티미디어 메타데이터의 오류 내성 부호화/복호화 장치및 방법 | |
US20060259167A1 (en) | Method for compressing and decompressing structured documents | |
WO2004029837A1 (en) | Multimedia file format | |
AU2001293514A1 (en) | XML encoding scheme | |
US20140181882A1 (en) | Method for transmitting metadata documents associated with a video | |
EP1146672A1 (en) | Method to transmit an information service in a broadcast transmission system | |
US20020120780A1 (en) | Two-staged mapping for application specific markup and binary encoding | |
Davis et al. | Efficient delivery within the mpeg-21 framework | |
Werner et al. | Advanced data compression techniques for SOAP web services | |
EP1538841A2 (en) | Method and system for generating input file using meta representation of compression of graphics data, and animation framework extension (AFX) coding method and apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
J202 | Request for trial for correction [limitation] | ||
J301 | Trial decision |
Free format text: TRIAL DECISION FOR CORRECTION REQUESTED 20060818 Effective date: 20061130 |
|
FPAY | Annual fee payment |
Payment date: 20130221 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140226 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20150226 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20160226 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |