JP4098838B2 - 文書フォーマット変換方法 - Google Patents

文書フォーマット変換方法 Download PDF

Info

Publication number
JP4098838B2
JP4098838B2 JP09471895A JP9471895A JP4098838B2 JP 4098838 B2 JP4098838 B2 JP 4098838B2 JP 09471895 A JP09471895 A JP 09471895A JP 9471895 A JP9471895 A JP 9471895A JP 4098838 B2 JP4098838 B2 JP 4098838B2
Authority
JP
Japan
Prior art keywords
tag
binary
stack
spdl
encoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP09471895A
Other languages
English (en)
Other versions
JPH07334496A (ja
Inventor
モトヤマ テツロウ
ツアイ ドニー
マンガット サットウィンダー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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
Priority claimed from US08/261,184 external-priority patent/US5504891A/en
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of JPH07334496A publication Critical patent/JPH07334496A/ja
Application granted granted Critical
Publication of JP4098838B2 publication Critical patent/JP4098838B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Document Processing Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【0001】
【産業上の利用分野】
本発明は文書のフォーマット変換の方法に係り、より具体的には、テキストエンコード文書(textual encoded document)をバイナリエンコード文書(binary encoded document)へ変換する方法に関する。特に本発明は、クリアテキストエンコードの標準ページ記述言語文書(clear text encoded Standard Page Description Language document)からバイナリエンコードの標準ページ記述言語文書への変換に関する。本発明は、文書をサイズを縮小したフォーマットへ変換することよりデータ圧縮機能をも達成するものである。
【0002】
【従来の技術】
1つの標準化ページ記述言語が提案され、国際標準化機構(ISO)で国際規格として開発中である。この提案は、本願発明者の一人もその関与者であるが、現在、ISOの1セクションに草案として提出されている。この草案は、ISO/IEC DIS 10180 ”INFORMATION PROCESSING−TEXT COMMUMICATION−STANDARD PAGE DESCRIPTION LANGUAGE”として知られており、ニューヨークの米国規格協会(”ANSI”)で入手可能である
【0003】
標準ページ記述言語(”SPDL”)は階層的に構造化されたページ記述言語である。この構造化された階層によれば、文書の一部分の印刷をする場合に、当該部分に影響する可能性のあるフォーマット用コマンドを文書全体にわたっては調べる必要がなくなる。所望の部分を印刷するのに、その印刷したい部分より階層が上の文書の部分だけを処理すれば足りる。
【0004】
SPDLのもう1つの利点は、SPDLがISO 8879:1986 に定義された標準一般化マークアップ言語(Standard Generalized Markup Language,”SGML”)に準拠していることである。このことにより、文書構造を包括的に記述し結び付けることが可能になる。複数のファイルは、SGMLで結びつけられたならば、変換ユーティリティを用いる事なく、かつ構造フォーマットを損なうことなく、あるプラットフォームから他のプラットフォームへ切れ目なく移動できる。
【0005】
SPDLは、ASN.1に述べられているベーシック・エンコーディング規則(Basic Encoding Rules)に準拠している。ASN.1に関する完全な解説は、Douglas Steedman著”ASN.1,The Tutorial and Reference”(1990年)に詳しい
【0006】
クリアテキスト(clear text)言語は、人間が読むことのできるコンピュータ言語の一種である。ノンクリアテキスト(non−clear text)言語の一例をあげるならば、文書のバイナリ・エンコーディング(binary encoding)であろう。2進もしくは16進表現の文書を見ても、人間には文書内容を容易には理解できないからである。バイナリ・エンコード文書の1つの主要な利点として、2進表現の文書は同等のクリアテキスト形式の文書に比べて必要とする記憶スペースが非常に少ない事がある。このことがバイナリ文書の記憶スペースの減少及び伝送時間の高速化を可能にする。しかしクリアテキスト・エンコードの文書に比べ、特殊なソフトウエアを用いないとバイナリ・エンコードの文書を編集すること、理解することが困難である。
【0007】
したがって、前述のように文書のクリアテキスト・エンコーディングにもバイナリ・エンコーディングにも長所と短所があるので、文書を一方のフォーマットから他方のフォーマットへ変換したいことがあろう。
【0008】
【発明が解決しようとする課題】
本発明の目的は、クリアテキスト・エンコードの文書をバイナリ・エンコードの文書へ変換する方法を提供することである。詳しくは、クリアテキスト・エンコードの標準ページ記述言語文書を等価なバイナリ・エンコードの標準ページ記述言語文書へ変換する方法を提供することである。
【0009】
【課題を解決するための手段】
上記目的を達成するため、本発明によるフォーマット変換方法の骨子は、CPUが、SPDLクリアテキストデータを入力するステップ;入力されたSPDLクリアテキストデータのエレメントのタグが開始タグである場合は、そのタグのバイナリエンコードの記述に追加の部分が存在するか否かを判定するステップ;追加の部分が存在すると判定された場合に、スタックのトップエントリーに記憶されているバイナリエンコードの記述が追加の部分であるか否かを判定するステップ;スタックのトップエントリーに記憶されているバイナリエンコードの記述が追加の部分であると判定された場合に、その追加の部分が、入力されたエレメントのタグにおける追加の部分と同じであるか否か判定するステップ;同じでないと判定された場合に、スタックのトップエントリーに記憶されているタグのバイナリエンコードの記述に基づいて、バイナリデータを作成してトップエントリーをポップし、次に、入力されたエレメントのタグについて、追加の部分を入れたエントリーをスタックに追加し、さらにバイナリエンコードの記述で常に出現する必要がある部分を入れたエントリーをスタックに追加するステップ;同じであると判定された場合に、入力されたタグに対するバイナリエンコードの記述で常に出現する必要がある部分を入れたエントリーのみをスタックに追加するステップ;入力されたSPDLクリアテキストデータのエレメントのタグが終了タグである場合は、スタックのトップエントリーに記憶されているタグのバイナリエンコードの記述に基づいて、バイナリデータを作成してトップエントリーをポップするステップ;を実行するものである。
【0010】
本発明による上記目的を達成するための手段の理解をより容易にするため、後記実施例との関連を考慮して少しく具体的にさらに説明する。
【0011】
バイナリSPDL文書に要求されるフォーマットのゆえに、及び、クリアテキスト表現とバイナリ表現との間に1対1の対応関係がないため、発明者はクリアテキスト・エンコード文書をバイナリ・エンコード文書に変換するために単純なルックアップ(look−up)プロシージャを行なうことは不可能であると判断した。様々なバイナリシンボル(binary symbol)の表わす内容は、SPDL文書中におけるバイナリシンボルのロケーションに依存する。
【0012】
本発明が扱わなければならないもう1つの課題は、バイナリエンコードされたプロセスそれぞれの長さを管理することである。SPDLは階層的に構造化されたページ記述言語であり、バイナリ・エンコーディングの各階層レベルの始まり部分は、該レベルが固定長フォーマットまたは不定長フォーマットのいずれでエンコードされているかを示し、かつ、固定長バイナリ・エンコーディングが存在する時にはエンコーディングの長さを示す。本発明が扱うもう一つの課題は、クリアテキスト・エンコーディングにおける特定のエレメントの順序がバイナリ・エンコーディングでは変更されなければならないという事である。したがって、クリアテキストSPDLフォーマットにおいて要求されるエンコーディング順序を知る必要がある。また、特定のクリアテキストエレメントは、該エレメントのテキスト表現の前に現われるエレメントによって、異なったバイナリ表現をとることがある。
【0013】
本発明は、クリアテキストからバイナリへの変換遂行するが、その遂行のために長さ制御スタック(length control stack)を使用してエレメントをその変換中に管理する。この長さ制御スタックによって、各階層レベルの長さがそのレベルの完了まで分からなくとも、クリアテキストからバイナリへの変換を実行できる。
【0014】
クリアテキストタグ(tag)は、エレメントテーブル(element table)に格納される。このエレメントテーブルは、エレメントの下に出現可能なサブエレメントに関する情報を管理するために用いられるサブエレメント連結リスト(sub−elemtnt linked list)データ構造を指示するポインタを持っている。このサブエレメント連結リストデータ構造は、その第1エントリーとして、1個以上のASN.1タグを記憶するASN.1 TAGS エントリーを持っている。ADDITIONAL ASN.1 TAG フィールドはポインタを格納し、このポインタはヌル(null)を指すか、または、付加的なASN.1タグが必要となきはそれを指す。
【0015】
クリアテキスト・タグ STRCTID を処理する場合、当該タグに対するバイナリ表現は該クリアテキストSTRCTIDに関するパラメータによって異なる。STRCTIDのどのバイナリ表現を用いるべきか決定するためには、クリアテキストSPDL文書の一部を実際に処理する必要がある。このことは、その文書が単にあるフォーマットから他のフォーマットへ変換されるだけで、プレゼンテーション(presentation)装置によりプレゼンテーションするための処理が行なわれない場合でも、そうである。しかし、文書をプレゼンテーションするための処理は、変換プロセスの前でも後でも可能である。STRCTIDエレメントを処理するため、各種階層レベルを管理するピクチャー/ページセット(picture/pageset)スタックが用いられる。ピクチャー/ページセットスタックの各エントリーは、少なくともページセットレベル及びピクチャーレベルを含む1つのデータ構造を指示する。また、このデータ構造内に、STRCTID 連結リストデータ構造を指すポインタがある。このデータ構造は構造IDを表示するエレメント、構造タイプ、及び次の構造ID連結リストデータ構造へのポインタを含む。
【0016】
変換プロセス中に、クリアテキスト表現の各種SPDLエレメントのアトリビュートの順序がバイナリ表現に要求される順序と違うことがある。したがって、エレメントそれぞれに対するアトリビュートを管理するため、一時的アトリビュートバッファ(temporary attribute buffer)データ構造が使用される。1つのエレメントの全アトリビュートが一時的アトリビュートバッファ連結リストに書き込まれた後、一時的アトリビュートバッファ連結リストは、アトリビュートを適切な順序、すなわち当該エレメントのサブエレメント連結リストデータ構造内での順序に対応した順序にするように、並べ替えられる。
【0017】
【作用】
以上に述べたように、本発明のフォーマット変換方法によれば、クリアテキスト・エンコード文書(例えばSPDL文書)を入力することにより、それと等価なバイナリ・エンコード文書(SPDL)を生成することが可能である。
【0018】
【実施例】
以下、添付図面を参照し、本発明の実施例を説明する。なお、添付図面中の複数の図面にわたって、同一の参照数字は同一部または対応部を示すものである。
図1に、バイナリエンコード文書に対する固定長及び不定長フォーマットのネスティング(nesting)の一例が示されている。図1は、生成されるべき1つのデータストリームもしくは文書データストリームを表わすと考えることができる。行1〜行16及び行17〜行19は最高階層レベルの2つのエンコーディングであるが、行1〜行16内にはネストされたエンコーディングがある。行1〜行16のエンコーディングのコンテント(content)は400バイトの固定長である。これら400バイト内において、まず行4〜行13に1つの不定長構造がある。この行4〜行13の不定長コンテント内に、248バイト及び40バイトの固定長コーディングがある。行4〜行13の400バイトのコンテントからなる不定長エンコーディングに加えて、100バイトのコンテントを含む行14〜行16の固定長エンコーディングがある。図1の行17〜行19には、250バイト長の固定長エンコーディングが含まれる。
【0019】
”固定長フォーマットと不定長フォーマットのネスティング”なるタームは、ある不定長エンコーディングが、そのコンテントとして、1つの不定長エンコーディングと1つの固定長エンコーディング、あるいは、これら2つのエンコーディングの組合せを持つことができる、ということを意味する。このことは、その固定長エンコーディングが、その不定長エンコーディングが終わる前に始まることを意味する。上記タームは不定長エンコーディングを含む固定長エンコーディングにも同様に当てはまる。すなわち、不定長エンコーディングは固定長エンコーディングが終わる前に開始可能である。さらに、1つのエンコーディング内に、任意数の任意タイプのエンコーディングをネストできる。
【0020】
図1から分かるように、バイナリエンコーディングの長さを、そのコンテントが現われる前にエンコードする必要がある。したがって、長さ計算が可能であるためには、その前にコンテントをクリアテキストからバイナリ表現へ変換しておく必要がある。しかし、不定長エンコーディングが図1の行4〜行13のエンコーディングのような不定長エンコーディングの時には、その長さを知っている必要はない。行13にあるエンコーディング”000H”は不定長エンコーディングの長さを示す。
【0021】
本発明のフローチャートは、固定長バイナリエンコーディングへの変換を示している。しかし、本発明は不定長エンコーディングをカバーすることをも意図しており、これは、不定長エンコーディングの初めに、知られている適当な不定長エンコーディングタグ(tag)を挿入し、かつ、その不定長エンコーディングの終わりに適当な終了情報(”000H”)を挿入することにより、容易に達成される。
【0022】
さて、ASN.1に要求されるエンコーディングであるが、図2はISO/IEC8824に定義されたベーシック・エンコーディング規則に従ったバイナリエンコーディングの構造を示している。このエンコーディングは1個以上のアイデンティファイア・オクテット(identifier octet)で始まり、1個以上の長さオクテット(length octet)が続き、これにコンテント・オクテット(contents octet)が続く。
【0023】
ISO/IEC 8824で定義されたアイデンティファイア・オクテットの構造が図3に示されている。このアイデンティファイア・オクテットの初めの2ビットはエンコーディングのクラス(class)を表わす。図3に示されたビット8及びビット7で定義される可能なエンコーディング・クラスはユニバーサル(universal)、アプリケーション(application)、コンテント・スペシフィック(content−specific)、及びプライベート(private)の4つである。ASN.1のエンコーディングの完全な解説は、ISO/IEC 8824及びISO/IEC 8825(いずれも引用によって本明細書に組み込まれる)に見られる。しかし、本発明の作用を理解するのに、様々なクラスのエンコーディングに関する理解は必要としないので、これ以上の詳細説明は簡略化のため省略する。
【0024】
図3に示したビット6は、エンコーディングがプリミティブ(primitive)であるか複合(constructed)であるかを決定する。プリミティブとは現エンコーディング内にネストされたエンコーディングが全然存在しないことを意味し、複合とは現エンコーディング内にほかのエンコーディングがネストされていることを意味する。図3に示されているビット5〜ビット1は、タグの番号に関するものである。タグの番号が31を超えるときには、ビット5〜ビット1は同番号を表現するには足りないので、アイデンティフアイア・オクテットの最後の5ビットは11111に設定され、後続のアイデンティファィア・オクテットで該タグの番号をエンコードする。様々なタグ番号の完全な理解は、本発明の作用を理解するために必要とされないので、簡略化のため省略する。
【0025】
アイデンティファイア・オクテット及び長さオクテットはプリアンブル(preamble)情報と考えることができ、コンテント・オクテットはコンテント情報と考えることができる。
【0026】
当業者にとっては、以上の説明でバイナリSPDLエンコーディングの基本を理解するのに十分であると考えられる。しかし、バイナリ・エンコーディングの処理に関するより詳細かつ完全な説明は、同時係属米国特許出願第08/066,383号(”METHOD AND SYSTEM FOR PROCESSING MIXED BINARY LENGTH ENCODING CONTAINING DEFINITE AND INDEFINITE LENGTH FORMATS”)に見ることができる。しかし、本出願の主要な関心事及び処理はファイルをクリアテキストからバイナリ表現へ変換することであるのに対し、上記関連出願に述べられている処理は主としてプリンタ、CRT等による文書の出力(presentation)に関係するものである。
【0027】
本発明は各種SPDLエレメントの情報を管理するためにエレメントテーブル(element table)とサブエレメント連結リスト(sub−element linked list)データ構造を用いる。SPDLは階層的に構造化されたページ記述言語であり、エレメントテーブル及びサブエレメント連結リストの情報を生成するためにSPDLの階層構造を確定する必要があった。
【0028】
SPDLの階層秩序を確定するため、発明者は、規格草案に含まれているSPDLエレメントの記述を用い、図4に示すようなSPDLエレメント状態遷移ダイヤグラムを作成した。図4は、SPDL構造エレメントの階層構造を、それに包含されているツリー構造を用いて説明し、また1つのエレメントから出て同じエレメントに戻るラベル付けしたアトリビュート用円弧矢印を示すことにより、各種SPDLエレメントに対するアトリビュートを説明する。この状態遷移ダイヤグラムより、発明者は本発明に用いられるエレメント・テーブルとサブエレメント連結リストを生成することができた。
【0029】
状態遷移ダイヤグラムの最初のエレメントはSPDL152である。このSPDLエレメントの下に出現できる2つの可能なエレメントがある。文書エレメント154とリソース定義(resource definition)エレメント156である。このリソース定義エレメント156はリソース・アトリビュート、SPDL IDアトリビュート及びファンクション(function)アトリビュートというアトリビュートを持つ如く示されている。アトリビュートは固定値を持つことも、ユーザによって入力された値を持つこともできる。
【0030】
図4において、特定の階層構造における終端(terminal)エレメントつまり最も下のエレメントはアスタリスクが付けられており、また、前に定義済みのエレメントはプラス記号が付けられている。特定の階層構造の最低レベルには終端エレメントが存在できるが、他のエレメントは存在できない。
【0031】
図4に示したSPDLエレメント状態遷移ダイヤグラムは完全なものではなく、簡略化のためにSPDL構造エレメントの一部が省略されている。例えば、リソース・スペシフィケーション(specification)164、上位エレメントとして外部宣言(external declaration)を持つ構造IDエレメント196、情報宣言174、リソース定義176、リソース宣言178、DPI宣言180、コンテキスト(context)宣言182、セットアップ(set−up)プロシージャ186の下に来る構造エレメントがある。
【0032】
文書構造エレメント154の下にページセット(pageset)エレメント158とピクチャー(picture)エレメント160がある。ページセット158の下にページセットボディ(body)166とプロローグ(prologue)172がある。図4に示されるように、ピクチャーエレメント160はページセットボディ166の下に出現することも可能である。ピクチャーエレメント160はコンテント表現のアトリビュート(前記関連出願においてコンテント・タイプと呼ばれたもの)とSPDL IDとを有する。ピクチャーエレメント160の下に出現可能なSPDLエレメントはプロローグ172とピクチャーボディ168である。トークン(token)シーケンス170は、ピクチャーボディ168の下に出現可能である。プロローグ172の下に出現する辞書ジェネレータ(dictionarygenerator)184の下に、サイズのアトリビュートを持つ辞書ジェネレータエレメント188が出現可能である。辞書188の下に出現可能なSPDLエレメントは、辞書ID190、ネーム(name)194及びトークンシーケンス192である。
【0033】
なお、図4はSPDLに対する最近の変更を反映しておらず、また、STRCTIDエレメントが出現可能な場所が29ある。図4は背景情報として用意されたもので、当業者によれば、SPDLに関する文献及び情報を利用し、精密な最新のSPDLエレメント状態遷移ダイヤグラムを作成できるであろう。しかし、状態遷移ダイヤグラムがどのようなものかの一例として図4が用意された。
【0034】
図5は、典型的なバイナリSPDL文書を16進表現で示している。図5に示された文書と等価なクリアテキスト文書が図6に示されている。本発明を作用させると、図6に示した文書を入力して図5に示した形式へ変換することができる。なお、図5,図6及び図7はSPDL規格の前の草案に合わせたものであるので、エレメントネームの中には最新草案に入っているエレメントネームと違うものがあるかもしれない。しかし、これは問題ではない。図5及び図6の目的は、クリアテキスト文書とバイナリ文書との間の対応関係を説明することだからである。本発明の作用を説明した後ならば、もっとよく図5及び図6の詳細が理解されよう。
【0035】
図7は、図5に示された文書が図6に示された文書とどのように対応するかを説明するものである。図7より分かるように、61はエレメントであるページセットを表わしている。61の後の59は、このページセットの長さ(length)を表わしている。このページセット内に、ASN.1タグ06により表わされたSPDL IDがある。このSPDL IDの長さは4である。実際のSPDL IDは”ISO/IED 10180//SPDL”であり、”28 CF 44 00”によって表わされている。
【0036】
次に、図7において、ASN.1タグ44がコメントに対応することが分かる。このコメントの長さは1Fである。このコメントの内容は”SPDL ID=Public Object ID value ”である。次に、A1はページセットボディとも呼ばれるところのpsbodyを表わすことが分かる。図7の残りの部分も、同様に理解することができる。したがって、図7における対応関係の完全な説明は簡略化のため省略する。
【0037】
図8は、クリアテキスト入力ファイルをバイナリ出力ファイルへ変換するために用いられる概念的構成を示す。クリアテキストデータ202はパーサー(parser)204によって文法解析される。この文法解析(parsing)は普通の公知メカニズムによって遂行されるので、その説明は簡略化のため省略する。
【0038】
解析されたクリアテキストデータは、クリアテキスト−バイナリ・トランスレータ(translator)206及びSPDL構造プロセッサ208へ送られる。クリアテキスト−バイナリ・トランスレータはSPDL構造に関する特定の情報を知る必要があり、この情報はSPDL構造プロセッサ208より与えられる。SPDL構造プロセッサは、SPDL規格案の新しい草案では構造アイデンティフィケーション(STRCTIDクリアテキストタグ)とも呼ばれる外部宣言を管理するために利用され、また構造ID及び構造タイプを管理するために利用される。クリアテキスト−バイナリ・トランスレータ206は、ファイルのバイナリ表現をバイナリデータ210として出力する。
【0039】
図9は図8のSPDL構造プロセッサ208により文書を実際に処理するために用いられるデータ構造を示している。図9に示したデータ構造の利用法に関しては、米国特許出願第07/876,251号(1992年4月30日受理,”METHOD AND SYSTEM TO HANDLE INCLUSION OF EXTERNAL FILES INTO A DOCUMENT PROCESSING LANGUAGE”及び米国特許出願第07/876,601号(1992年4月30日受理,”METHOD AND APPARATUS TO MANAGE PICTURE AND PAGESETFOR DOCUMEN PROCESSING”に完全に述べられている。なお、これら出願(本出願はその一部継続出願である)は、処理中に取り込まれるべき外部ファイルに関するSPDL構造エレメントである外部宣言に言及している。しかし、SPDL規格の新草案は、外部宣言中のエレメントEXTIDの代わりに構造エレメントSTRCTIDをエレメントネームに指定しているが、本出願の図9に示された並びに米国特許出願第07/876,251号及び第07/876,601号に示された各種データ構造により遂行される機能は同様である。さらに、同時係属米国特許出願第08/087,571号(1993年7月2日受理,”METHOD AND SYSTEM TO HANDLE CONTEXT OFINTERPRETATION IN A DOCUMENT PROCESSING LANGUAGE”に述べられている、より進歩した処理メカニズムを、構造及びコンテントの処理のために利用することもできる。
【0040】
図9のピクチャー/ページセットスタック220は、文書の様々な階層レベルの管理のために利用される。文書の最初の階層レベルはピクチャー/ページセットスタック220のポインタ224に対応し、このポインタ224は連結リストデータ構造226を指す。このデータ構造226はページセットレベル(pageset level)228及びピクチャーレベル(picturelevel)230を管理するために利用される。また、データ構造226は、構造ID連結リストデータ構造242を指す外部宣言(externl declaration)ポインタ232を含む。このデータ構造242はSTRCTIDタグに関連した構造ID及び構造タイプを管理するために利用され、外部宣言でも参照される。SPDL構造の処理期間に、ある階層レベルの処理中にもう1つのSTRCTIDエレメントが出現すると、追加の構造ID連結リストデータ構造が、データ構造226と、外部宣言ポインタ232により前に指示されていたデータ構造との間に挿入される。例えば、外部宣言ポインタ232が構造ID連結リストデータ構造250を指していて、SPDL文書中に次のSTRCTID構造エレメントが出現すると、構造ID連結リストデータ構造242がデータ構造226とデータ構造250の間に挿入されることになる。
【0041】
文書の次の階層レベルが出現した時に、追加のエントリー222がピクチャー/ページセットスタック220にプッシュされる。また、新しいデータ構造234が生成され、このデータ構造234は外部宣言ポインタ232と同一の外部宣言ポインタ240を持つ。
【0042】
図10は、本発明の変換プロセスに利用される一時的アトリビュートバッファ(temporary attribute buffer)データ構造を示す。アトリビュートとはエレメントのサブエレメントであり、当該エレメントの属性を定義する。SPDLクリアテキストにおけるアトリビュートの出現順序は、変換後のバイナリ文書に要求されるアトリビュート順序と異なることがある。クリアテキスト文書の各アトリビュートの処理変換時に、アトリビュートは一時的アトリビュートバッファデータ構造に書き込まれる。1つのエレメントに対して連続したアトリビュートが出現した時に追加の一時的アトリビュートバッファデータ構造270が生成され、このデータ構造270は前に生成された一時的アトリビュートバッファデータ構造のnextポインタにより指し示される。1つのエレメントに対する全アトリビュートの変換が終了すると、一時的アトリビュートバッファデータ構造の連結リストがバイナリ文書に要求される順序と比較され、順序に違いがあるときには、一時的アトリビュートバッファデータ構造は正しい順序に並べ替えられる。最初の一時的アトリビュートバッファデータ構造は、一時的アトリビュートポインタ272により指示される。一時的データ構造270はアトリビュートネーム(attribute name)のエントリー274とアトリビュート値(value)のエントリー276を有する。図13乃至図18に示したサブエレメント連結リストデータ構造に関連して、アトリビュートの例を説明する。
【0043】
図11に示したエレメントテーブルは、本発明の変換プロセスに利用される。変換されるべきファイルの1つのクリアテキスト(clear text)タグもしくはエレメントが出現する都度、このタグをエレメントテーブル280の第1カラムで調べる。図11に示したクリアテキストタグの例は、!DOCKTYPE,SPDL,PICTURE,PICTBDY,TKNSEQNである。
【0044】
エレメントテーブル280の第2カラムは、ASN.1表記法(notation)に関連したエレメント宣言に関するものである。このエレメント宣言はエレメントの属性の記述である。より具体的に言えば、エレメント宣言はエレメントの属性、及び、従属構造エレメントがあれば、その扱いに関するものである。各種宣言の例は、無宣言(NONE)、オクテットストリング(octet string)、印刷可能ストリング、選択(choice)、シーケンス(sequence)、選択シーケンス(sequence of choice)、暗黙シーケンス(implicit sequence)である。なお、あらゆるクリアテキストタグ、各エレメント宣言及びクリアテキストタグに関する他の情報の全てを含む完全なエレメントテーブルは、SPDL規格案等の公知資料に見ることができ、また、それら資料を使って作成することができる。
【0045】
本発明は、エンコーディングのシンタックスがSPDLエンコーディング条件に違反しないように、エレメント宣言を使用できる。
【0046】
エレメントテーブル280の第3カラムは、エレメントに関するアトリビュート数を示す。前述のように、アトリビュートはエレメントに関する特定の特徴を記述するために用いられる。アトリビュート数のカラムにおいて、疑問符は該クリアテキストタグのためにアトリビュートがいくつ必要であるか分からないことを示し、0は該タグのためのアトリビュートがないことを示し、1は該タグのためにアトリビュートが1個あることを示す、等々である。
【0047】
エレメントテーブル280の第4カラムは、該エレメントの下に出現できる各種サブエレメントの個数を示す。例えば、!DOCTYPEのエレメントもしくはクリアテキストタグの直ぐ下に出現できるサブエレメントは、1個だけである。SPDLタグの下には、25の異なったタイプのサブエレメントが出現可能である。
【0048】
エレメントテーブル280の第5カラムは、サブエレメント連結リストへのポインタである。これらの連結リストは、エレメントの下に出現可能なサブエレメントに関する情報を記憶している。TKNSEQNタグは、どのようなサブエレメントもその下に出現しないので、そのサブエレメント連結リストデータ構造へのポインタはヌル(null)を指す。
【0049】
図12はサブエレメント連結リストデータ構造282を示す。これらのデータ構造は、図11に示したエレメントテーブル内のサブエレメントへのポインタによって指示または参照でき、あるいは、別のサブエレメント連結リストデータ構造のnextポインタにより参照できる。
【0050】
図12に示したサブエレメント連結リストデータ構造282の第1フィールド284は、1つのサブエレメントのバイナリ表現を含む1つ以上のASN.1タグを記憶する。第2フィールド285は、該サブエレメントのクリアテキスト表現を記憶する。第3フィールドはタイプ(type)フィールド286であり、サブエレメントのタイプを示す。このタイプは1つのタグもしくはアトリビュートであり、これはATTと略されることがある。
【0051】
シーケンス番号エントリー287は、順序がバイナリエンコーディングで重要である場合に、サブエレメントがエレメント後のどこに出現しなければならないかを示す。例えば、シーケンス番号が1の場合、サブエレメントがエレメントの後に出現すれば、それはエレメント後に最初に出現するサブエレメントでなければならない。
【0052】
フィールド288は、追加ASN.1タグへのポインタを格納する。一定のSPDLエレメントは2つ以上のバイナリタグを必要とし、これらのエレメントについては、ポインタ288は追加ASN.1タグ289を指す。それ以外のエレメントについては、ポインタ288はヌルを指す。
【0053】
同じエレメントに関する一定の複数のサブエレメントは、同じ追加ASN.1タグを持つという点で関連付けられる。この追加ASN.1タグは、関連したサブエレメント中の1つが最初に変換された時に出現しなければならないが、同じ追加ASN.1タグを持つ後続の関連サブエレメントの後には出現してはならない。しかし、サブエレメント連結リストの第1フィールドであるASN.1フィールドは、サブエレメントの表現のために常に出現する。サブエレメント連結リストデータ構造の追加ASN.1タグフィールドに関係するのが、図19に示す長さ制御スタック(length control stack)中にある追加タグ(additionaltag)フラグである。この追加タグフラグは、長さ制御スタック中の追加タグであるエントリーについてはyesである。そうでなければ、追加タグフラグはnoである。図19に示した長さ制御スタックに関するこれ以上の説明は、フローチャートと関連させて行なう。
【0054】
サブエレメント連結リストデータ構造282の最後のエントリーは、次のサブエレメント連結リストデータ構造を指すnextポインタ290である。1つのエレメントに対し2つ以上のサブエレメントが存在するときには、各サブエレメントはそれ固有のサブエレメント連結リストデータ構造を持ち、その最初のサブエレメント連結リストデータ構造のnextポインタは2番目のサブエレメントのサブエレメント連結リストデータ構造を指す。
【0055】
図13は、!DOCTYPEエレメントのためのサブエレメント連結リストデータ構造を示す。このサブエレメントはSPDLタグであり、SPDLのASN.1表現は28Hである。SPDLは!DOCTYPEのための唯一のサブエレメントであるので、シーケンス番号は1である。28Hは1つのタグであるので、追加ASN.1タグポインタはヌルを指す。!DOCTYPEエレメントに対するサブエレメントは1つしかないので、このサブエレメントのためのサブエレメント連結リストデータ構造のnextポインタもヌルを指す。
【0056】
SPDLエレメントは、図14から分かるように、1つ目のページセット、2つ目のピクチャーというサブエレメントを持つ。これらサブエレメントはデータ構造320,330にそれぞれ格納されている。
【0057】
ピクチャーエレメントの1番目のサブエレメントCONTREPは、コンテント表現を示すもので、かってSPDL規格の前草案でコンテントタイプと呼ばれた。このサブエレメントは図15に示したデータ構造340に格納されている。このピクチャーエレメントの2番目のサブエレメントはPICTBDYであり、その情報はデータ構造350に格納されている。
【0058】
なお、SPDLエレメント及びピクチャーエレメントについては、29個及び4個の可能なサブエレメントがそれぞれ存在することは図11に示したエレメントテーブルに見られるとおりであるが、これらのサブエレメントのそれぞれは簡略にするため図14及び図15には示されなかった。しかし、これらのサブエレメント連結リストデータ構造は、SPDLに関する公知情報を利用すれば誰でも作成可能である。
【0059】
図16は、PICTBDYエレメントに対して可能なサブエレメントを示す。1番目の可能なサブエレメントはデータ構造360に格納されたPROLOGUE(プロローグ)である。プロローグを表現するには2つのタグが必要であるので、ASN.1タグフィールドは68Hであり、追加ASN.1タグポインタはA0Hタグ368を指す。PICTBDYエレメントに対する他のサブエレメントは、サブエレメント連結リスト370内のSTRCTID、データ構造380内のPICTURE、データ構造382内のTKNSEQN(トークンシーケンス)、及び再び出現するデータ構造384内のSTRCTIDである。
【0060】
図16から分かるように、PICTBDYエレメントの下のSTRCTIDサブエレメントは2つの異なったバイナリ表現を持つことができる、すなわち、1つ目はデータ構造370による A0 6E 41 であり、2つ目はデータ構造384による A1 6E 41 である。これらの異なったバイナリ表現は、変換されるべき文書に出現するSTRCTIDクリアテキストタグの特殊な情報(SPDL規格の前の草案で外部宣言とも呼ばれたもの)に依存する。様々なSTRCTIDサブエレメントの用法のより完全な説明は、フローチャートに関連して述べる。
【0061】
図17は及び図18はPROLOGUEエレメントのためのサブエレメント連結リストを示す。図17に示したデータ構造396の最後のフィールドから出る線は、図18に示したデータ構造398を指す。図17及び図18は、SPDLに関する公知情報を用いて作成されたが、PROLOGUEエレメントの下には非常に多数のサブエレメントが出現可能であるので、サブエレメント連結リストの完全な図ではなく、データ構造408で終わっている。しかし、必要ならば、SPDL関連情報の公知資料を用いて完全なPROLOGUEサブエレメント連結リストデータ構造を作成できる。
【0062】
図19は、SPDLクリアテキスト文書がバイナリへ変換される時に利用される長さ制御スタック420を示す。最初に処理されるエレメントは、スタックのボトムにあって、通常、SPDLタグである。クリアテキストタグは、第1カラムすなわちエレメントネームに出現する。スタックの第2カラムはASN.1タグ値で、これはクリアテキストエレメントネームのバイナリ表現である。スタックの第3カラムはバッファカウント(count)で、バッファポインタにより指示されるバッファ422内の現在のバイト数を示す。追加タグフラグは、長さ制御スタックに記憶されているタグがサブエレメント連結リストデータ構造からの追加ASN.1タグであることを示す。この情報は、後のサブエレメントに対し追加ASN.1タグが存在するときに、それがクリアテキストエレメントのバイナリ表現に使用されるべきか判定するため該後のサブエレメントを処理する時に利用される。
【0063】
さて、図20乃至図21に示したフローチャートを参照し、本発明の動作を説明する。図20において、プロセスはステップ500から始まり、ステップ502で構造パーサーを呼び出す。文法解析(parsing)が行なわれるが、これは公知の普通の文法解析メカニズムによってなされるので、その説明は簡略化のため省略する。図20には3つの異なったプロセスがあり、これらを処理されているクリアテキストタグのタイプに応じて呼び出すことができる。処理されているタグがコメント(comment)タグであってコメントの始まりならば、ステップ506で図21に示されているコメント(comment)プロセッサが呼び出される。変換されるタグがトークンシーケンス開始(begin)タグならば、フローはステップ508からステップ510へ進み、ステップ510で図22に示されているトークンシーケンスプロセッサを呼び出す。処理すべき他の有効なタグがあれば、フローはステップ512からステップ514へ進み、図27に示されているタグ(tag)プロセッサを呼び出す。ステップ512で処理すべき有効なタグがないと判定したときには、プロセスはステップ516で終了しエラーを表示する。
【0064】
図20には、処理の正常終了で終わるステップが含まれていないことに注意されたい。本発明の全体プロセスは図30で終了する。図30はSPDL終了ルーチンを示しているが、これについては後述する。また、ステップ506,510,514は様々なプロセッサに言及するが、図に示したものは1つのプロセスを実行するためのフローチャートである。したがって、それらプロセスを実行する独立の物理プロセッサを持つ必要はなく、言及したプロセッサは概念的な機能要素である。
【0065】
図21に示されるコメントプロセッサは、コメントタグの処理を扱う。図21において、ステップ522はコメントタグの最後まで入力データがスキップされることを示す。したがって、コメント情報は実際にはクリアテキストからバイナリへ変換されない。コメントはSPDL文書の実際の処理に必要でないからである。しかし、コメント内の情報を保存したいときには、コメントプロセッサがその役割の実行を終了した後に図27に示したタグプロセッサにコメントタグを処理させることによって、コメント情報をスキップしないでバイナリに変換することも可能である。ステップ524からフローは図20のプロセスへ戻り、次の構造エレメントの文法解析のためにステップ502で構造パーサーが再度呼び出される。
【0066】
図20において、ステップ508とステップ510により図22に示されたトークンシーケンスプロセッサが呼び出される。トークンシーケンスは文書のコンテントを含む構造エレメントである。図22において、ステップ552が図23に示された長さ制御スタックセットアップルーチン(後述)を呼び出す。次にステップ554で、トークンシーケンス構造エレメント内に含まれているコンテントを文法解析するコンテントパーサー(content parser)が呼び出される。この文法解析も普通の文法解析メカニズムにより遂行されるので、その説明は簡略化のため省略する。
【0067】
ステップ556では、トークンシーケンスの終わりが検出されたか判定する。検出されていなければ、ステップ564で該トークンシーケンスを調べ、それが有効であるか判定する。有効でなければ、ステップ566でエラーコードが返される。該トークンシーケンスが有効ならば、ステップ568で該トークンシーケンスをバイナリ表現へ変換する。そしてステップ570で、そのバイナリ表現を長さ制御スタックに利用されるバッファに格納する。ステップ570からフローはステップ554へ戻る。トークンシーケンス終了タグが検出されたとステップ556で判定したときには、ステップ558で入力ポインタを、該トークンシーケンス終了タグの次のエレメントを指すように設定する。このポインタは、クリアテキスト入力ファイルの次に処理すべきエレメントを指示する。次にステップ560で、図26に示された終了タグルーチンを呼び出す。このルーチンはトークンシーケンスエレメントの終了タグを処理するために用いられる。そして、ステップ562でフローは図20へ戻る。
【0068】
図23、図24及び図25は”長さ制御スタックセットアップ(set−up)ルーチン”を示す。このルーチンは、1つの新しいクリアテキストタグが変換されようとするたびに、図19に示した長さ制御スタックをセットアップするために利用される。この長さ制御スタックセットアップルーチンにおいて、Current−Tagはエレメントテーブルを調べるために利用され、Tag−Read−Inはサブエレメント連結リストを調べるために利用され、Previous−Tagは処理されるタグの親エレメント(Tag−Read−In)を格納するために用される。
【0069】
長さ制御スタックセットアップルーチンが呼び出された後、図23のステップ602で、変換しようとする新しいエレメント(Tag−Read−In)が、処理されたばかりのエレメント(Current−Tag)により指し示されるサブエレメント連結リストに見つかるか判定する。見つからないときには、変換しようとする該新エレメントは処理されたばかりのエレメントの適切なサブエレメントでないので、ステップ604でエラーが表示される。該新エレメントが適切なエレメントであるときには、ステップ606でPrevious−Tag=Current−Tagに設定する。そしてステップ608で、Current−Tagをたった今読み込まれたタグ(Tag−Read−In)と等しい内容に設定する。
【0070】
ステップ610で、Current−Tagを格納しているサブエレメント連結リストの追加ASN.1タグポインタがヌルを指すか判定する。該ポインタがヌルを指すか否かによって、異なる処理が実行される。該タグがヌルを指さないときには、フローは図24に示されるプロセスAAへ進む。該タグがヌルを指すときには、図24に示される各ステップと図25の上部分は実行されず、フローは図25に示されるCCへ進む。
【0071】
該追加ASN.1タグポインタがヌルを指さない場合、該ポインタにより指される追加ASN.1タグが存在するので、フローは図24に示されるプロセスAAへ進む。
【0072】
図24において、ステップ620で長さ制御スタックのトップエントリーの追加タグフラグがyesであるか判定する。yesでなければ、図24のステップ622〜ステップ636を省くことができるので、フローは図25に示されるプロセスBBへ進む。
【0073】
長さ制御スタックのトップにある追加タグフラグがyesでないときには、フローはステップ622へ進み、ここで長さ制御スタックのトップエントリーのASN.1タグが追加ASN.1タグポインタに指されるタグと等しいか調べられる。等しければ、該追加ASN.1タグに対し実行すべき処理はないので、サブエレメント連結リストのトップエントリーに格納されているASN.1タグ(1つ又は複数)を処理するため、フローは図25に示されるプロセスCCへ進む。長さ制御スタックのトップにあるASN.1タグが該サブエレメント連結リストデータ構造の追加ASN.1タグポインタにより指される追加ASN.1タグと等しくなければ、該追加ASN.1タグを処理する必要があるので、フローはステップ624へ進む。
【0074】
ステップ624で、スタックのトップのバッファカウントを下のエントリーのバッファカウントに加える。ステップ626で、スタックのトップにあるASN.1タグ値のバイト数を下のエントリーのバッファカウントに加える。ステップ628で、スタックのトップのバッファカウントのASN.1 BER長さエンコーディングのバイト数を、下のエントリーのバッファカウントに加える。ステップ630で、スタックのトップのASN.1タグ値を下のエントリーのバッファへ追加(アペンド)する。ステップ632で、スタックのトップのバッファを下のエントリーのバッファへ追加し、ステップ636で長さ制御スタックのトップエントリーをポップして捨てる。
【0075】
図25において、ステップ640で長さ制御スタックのトップに新しいエントリーを追加する。ステップ643で、この新しいエントリーのために1つのバッファを割り当て、スタックのトップエントリーのバッファポインタを該新バッファを指すように設定する。ステップ644で、追加ASN.1タグポインタにより指される追加ASN.1タグをスタックのトップに入れる。次に、ステップ646で、Previous−Tag(処理されるサブエレメントのエレメントのクリアテキストSPDLネーム)を長さ制御スタックのトップエントリーのエレメントネームフィールドに書き込む。ステップ648でスタックのトップエントリーのバッファカウントを0に設定し、ステップ650でスタックのトップエントリーの追加タグフラグをyesに設定する。
【0076】
図23及び図24のCC及びステップ650の次に、ステップ652でサブエレメントのASN.1タグの処理を始める。ステップ652に初めて来た時は、処理されるべきサブエレメントのASN.1タグがあるであろうから、フローはステップ654へ進む(長さ制御スタックのトップに1つのエントリーを追加する)。ステップ656でサブエレメント連結リストよりASN.1タグを取得する。ステップ658で、該ASN.1タグをスタックのトップエントリーに入れる。ステップ660で、スタックのトップエントリーのバッファを割り当て、スタックのトップエントリーのポインタを当該バッファを指すように設定する。ステップ662で、Current−Tagをスタックのトップエントリーのエレメントネームに入れる。ステップ664でスタックのトップエントリーのバッファカウントを0に設定し、ステップ666で、現在処理されているタグは追加タグではなくサブエレメント連結リストの第1フィールドに格納されているタグであるので、スタックのトップエントリーの追加タグフラグをnoに設定する。ステップ666よりフローはステップ652に戻り、サブエレメント連結リストのトップフィールドのASN.1タグの全部が処理されるまでステップ652〜666のループが実行される。これらASN.1タグ全部が処理されると、フローは呼び出したプロセスへ戻る。
【0077】
図26は、クリアテキスト終了タグに達した時に長さ制御スタックの処理及び調整をするために用いられる”終了タグルーチン”を示す。開始すると、ステップ708でスタックのトップにあるエレメントネームが終了タグであるか判定する。終了タグでなければ、エラーがあるのでエラーメッセージが出される。終了タグであれば、フローはステップ710へ進む。
【0078】
ステップ708でスタックのトップにあるエレメントネームが終了タグであると判定した場合、ステップ710で長さ制御スタックのトップエントリーのバッファカウントを、長さ制御スタックのトップエントリーより1つ下のバッファカウントエントリーへ加える。ステップ712で、ASN.1タグのバイト数を下のエントリーのバッファカウントへ加える。次にステップ716で、スタックのトップエントリーのバッファの長さに関する長さ情報を表現するのに必要なバイト数を下のエントリーに加える。次にステップ718で、ASN.1タグを下のエントリーのバッファに追加する。次にステップ720において、スタックのトップのバッファカウントの長さが下のエントリーのバッファへ加えられる。そして、ステップ724で、スタックのトップエントリーのバッファの内容が下のエントリーのバッファに追加される。ステップ726で長さ制御スタックよりトップエントリーをポップする。ステップ728で、長さ制御スタックのトップにあるエレメントネームが終了タグであるか判定する。終了タグであるならば、フローはステップ710へ戻って当該終了タグのための処理を繰り返す。終了タグでなければ、フローはステップ730へ進み、Current−Tagは長さ制御スタックのトップにあるエレメントネームと同じに設定される。そして、フローは呼び出したプロセスに戻る。
【0079】
図27は”タグプロセッサ”により実行されるプロセスを説明するフローチャートを含んでいる。このプロセスは図20のステップ514により呼び出される。このプロセスは、コメントタグ及びトークンシーケンスタグ以外の全てのタグの処理のために用いられる。ステップ750で、処理されるクリアテキストタグが!DOCTYPEであるか調べる。!DOCTYPEであるときには、図28に示された”!DOCTYPEプロセッサ”がステップ752により呼び出される。ステップ756でSPDL開始コマンドがあるか判定する。あるならば、図29に示される”SPDL開始ルーチン”がステップ758により呼び出される。ステップ762でSPDL終了タグがあるか判定する。あるならば、フローはステップ764へ進み図30に示される”SPDL終了ルーチン”を呼び出す。つぎにステップ768で、処理されるエレメントが終了タグであるか判定する。終了タグならば、フローはステップ774へ進み、その終了タグネームが長さ制御スタックのトップにあるエレメントネームであるか判定する。そうでないときには、スタックのトップのエレメントはたった今終了したエレメントに対応しなければならないのであるから、ステップ776でエラーメッセージが表示されプロセスは終了する。終了タグがスタックのトップにあるならば、フローはステップ778へ進み、図26に示される”終了タグルーチン”を呼び出す。
【0080】
タグが終了タグでないとステップ768で判定したときには、ステップ770で図31に示される”開始タグルーチン”を呼び出す。これらルーチンのどれかが図27で呼び出された後、フローは図27に戻り、続いてステップ754,760,772又は780によって呼び出したプロセスへ戻される。
【0081】
図28は、図27のステップ752から呼び出される”!DOCTYPEプロセッサ”によって実行されるプロセスのフローチャートを示す。図28において、ステップ782でクリアテキスト!DOCTYPEエレメントの次のストリングを、スペースのようなセパレータを無視して取得する。ステップ784で、当該ストリングを大文字に変換した後、それが”SPDL”であるか調べる。”SPDL”でないときには、SPDLの後に”!DOCTYPE”エレメントが続かなければならないので、エラーがある。”SPDL”であるときには、ステップ788で入力ファイルのポインタを当該”!DOCTYPE”の次を指すように設定する。次に、ステップ790で、カレント(current)エレメント=!DOCTYPEタグに設定する。なお、最初のエレメントが!DOCTYPEである場合には長さ制御ルーチンは呼び出されない。
【0082】
図29は、図27のステップ758により呼び出される”SPDL開始ルーチン”を示す。このルーチンはSPDL開始タグを処理する。まず、ステップ802で、SPDLエレメントに対する1つのエントリーをスタックに生成するため、図23に示される”長さ制御スタックセットアップルーチン”を呼び出す。次に、ステップ804で、長さ制御スタックのトップエレメントのASN.1タグとして28Hを書き込む。これは外部エレメントであるASN.1タグ UNIVERSAL 8 に対応する。これはSPDLのために必要なタグである。次に、長さ制御スタックのトップエントリーのバッファに7エレメントが書き込まれようとしているので、スタックのトップエレメントのバッファカウントエントリーは7に設定される。次にステップ808は、16進表現の 06 05 28 CF (これはテキスト表現の”Object Identifier ISO/IEC (1) STANDARD (0)10180 0”に相当する)を、長さ制御スタックのトップエントリーのバッファに書き込む。最後にステップ810でフローは図27へ戻る。
【0083】
図30は、図27のステップ764により呼び出される”SPDL終了ルーチン”により実行されるプロセスのフローチャートを示す。図30において、ステップ822で、長さ制御スタックのトップにあるエレメントネームが”SPDL”であるか判定する。”SPDL”でないときには、スタックのトップにあるエレメントは終了エレメントでなければならないのであるから、エラーがある。したがって、ステップ824でエラーメッセージが表示される。”SPDL”であるときには、ステップ826で、このSPDLエレメントのASN.1タグ(=28H)が出力ファイルに書き込まれる。この出力ファイルは、バイナリフォーマットに変換された最終文書を格納する。次にステップ828で、ASN.1のベーシックエンコーディング規則(Basic Encoding Rules)に従って、長さ制御スタックのトップエントリーのバッファカウントを長さ値(length value)に変換し、この情報を出力ファイルに書く。最後に、ステップ830で、長さ制御スタックのトップエントリーより指されたバッファの情報が出力バッファに書かれる。したがって、ファイルの全情報が変換され所望の出力ファイルへ書き込まれたので、ステップ832で当該プロセスは終了となる。
【0084】
図31乃至図33は”開始タグルーチン”を示す。このルーチンは!DOCTYPE、SPDL、コメント、トークンシーケンス以外の一般的なクリアテキストタグが変換される時に必ず実行される。図31において、ステップ954で新たに処理しようとするエレメントが、処理されたばかりのエレメントのサブエレメント連結リスト中に見つかるか判定する。見つからない時には、この新しいエレメントは前エレメントの適切なサブエレメントではないので、ステップ956でエラーメッセージが出される。該エレメントが適切なエレメントであるときには、フローはステップ958へ進み、該クリアテキストタグが”STRCTID”であるか判定する。そうであるならば、ステップ960で図34に示される”STRCTIDプロセッサ”が呼び出される。”STRCTID”でないときには、フローはステップ958からステップ964へ進み、図23に示される”長さ制御スタックセットアップルーチン”を呼び出す。
【0085】
次に、ステップ966は処理されているエレメントがアトリビュートを持っているか判定する。持っているならば、フローは図32に示されるプロセスAへ進む。アトリビュートがないときには、フローはステップ968へ進み、エレメント宣言が空であるか判定する。空エレメント宣言は、開始タグと終了タグとの間にデータがない時に出現する。この場合、その終了タグは省かれなければならない。
【0086】
エレメント宣言が空であるときには、フローはステップ970へ進み、終了タグパラメータ=開始タグとして、図26に示される”終了タグルーチン”を呼び出す。エレメントタグが空でないときには、ステップ974で、エレメントのための何等かのデータ(すなわち、エレメントの開始タグに続くデータ)があるか判定する。データがなければ、ステップ976でフローは呼び出したプロセスへ戻る。
【0087】
ステップ978で、データをバイナリフォーマットへエンコードする必要があるか判定する。必要があれば、フローはステップ980へ進み、データをバイナリへ変換する。バイナリへエンコードする必要が常にあるかも知れない。しかし、ある種のデータがエンコード/変換される必要がない場合やSPDL規格が変わる場合に備えて、ステップ978が入れられている。
【0088】
次にステップ982で、データを長さ制御スタックのトップのバッファへ入れる。ステップ984で、長さ制御スタックのトップエントリーのバッファ中のバイト数をカウントし、該バイト数を長さ制御スタックのバッファカウントに書き込む。そして、ステップ986でフローは呼び出したプロセスに戻る。
【0089】
図32は、アトリビュートがあると判定される時に図31により呼び出されるプロセスAを示す。図32おいて、ステップ1000はアトリビュートネームとアトリビュート値を取得する。ステップ1002は、そのアトリビュートネームが、エレメントテーブルの現在エレメント位置により指される連結リスト中にあるか判定する。存在しないときには、アトリビュートは適切なサブエレメントではないので、ステップ1004はプロセスを終わらせてエラーメッセージを表示する。
【0090】
次にステップ1006で、アトリビュートネームが”notation”であるか判定する。そうならば、図23に示される長さ制御スタックセットアップルーチンが呼び出され、フローは図33に示されるプロセスCへ進む。アトリビュートネームが”notation”であるときには、このアトリビュートは開始タグと終了タグの間のデータタイプを指定する。例えば、オブジェクトアイデンティファイア(Object Identifier)が”n1.n2.n3....”とエンコードされたとき(n1,n2,n3...はクリアテキストエンコーディングでは10進表現である)、バイナリエンコーディング(BER)は別のエンコーディングスキームを用いる。したがって、n1.n2.n3...はバイナリフォーマットへ変換されなければならない。
【0091】
アトリビュートネームが”notation”でないときには、フローはステップ1010へ進み、図10に示したような一時的アトリビュートバッファデータ構造からなる一時的アトリビュートバッファ連結リストの最後に、一つの一時的アトリビュートバッファデータ構造を挿入する。次にステップ1012で、アトリビュート値をクリアテキストからバイナリへ変換する必要があるか判定する。例えば、クリアテキストのアトリビュートがCONTREPで、その値が”ISO/IEC”であると、この値は 06 06 28 CF 44 00 02 00 と変換される。これは1バイトずつの変換ではなく、アトリビュート全体が調べられ、バイナリの等価な値へ変換されるもので、各テキスト文字を個別に変換するものではない。
【0092】
アトリビュート値を変換する必要があるときには、ステップ1014でアトリビュート値をバイナリへ変換する。次にステップ1016で、アトリビュート値及びアトリビュートネームを、新しく生成された一時的アトリビュートバッファデータ構造(ステップ1010により生成された)に格納する。次にステップ1018で、ほかに処理すべきアトリビュートがあるか判定する。あるときには、フローは図32の上部に示されるプロセスAへ進む。そうでなければ、図35に示される”アトリビュート終了ルーチン”がステップ1020で呼び出され、そしてフローは図31に示されるプロセスBへ戻る。
【0093】
図33において、ステップ1030では、処理されているエレメントの開始タグと終了タグの間のデータを取得し、入力情報のポインタを、該終了タグの後のエレメントを指すように設定する。ステップ1032でアトリビュート値が”OBJID”であるか判定する。そうであるならば、フローはステップ1034へ進み、長さ制御スタックのトップにある値を06H(これはASN.1オブジェクトアイデンティファィアである)に設定する。つぎに、ステップ1036で、ステップ1030において得られたデータを、バイナリエンコーディングに変換し、フローは図33に示されるプロセスDへ進む。ステップ1038で、アトリビュート値が”ENVNM”であるか判定する。そうならば、フローはステップ1040へ進み、長さ制御スタックのトップにあるタグ値を43H(これはASN.1アプリケーション3である)に設定する。そして、フローはプロセスDへ進む。
【0094】
ステップ1042で、アトリビュート値が”PUBID”であるか判定する。そうでなければ、値”PUBID”が期待されるとのエラーのメッセージであるから、ステップ1044でエラーを表示する。ステップ1046において、パブリックアイデンティファイア(public identifier)が対応するオブジェクトアイデンティファィアを持つか判定される。持っていれば、フローはステップ1034へ進む。持っていなければ、ステップ1048で長さ制御スタックのトップにあるタグ値をASN.1アプリケーション1(これはバイナリで42Hと表わされる)に設定する。
【0095】
次にステップ1050で、ステップ1030において得られたデータを、長さ制御スタックのトップエントリーのバッファにコピーする。ステップ1052で、バッファバイトサイズをカウントし、このカウント値を長さ制御スタックのトップエントリーのバッファカウントエントリーに入れる。次にステップ1054で、図26の”終了タグルーチン”を適当な終了タグに関して2度呼び出す。このルーチンが2度呼び出されるのは、長さ制御スタックルーチンが2回呼び出される(図31のステップ964と図32のステップ1008)ことに対応するためである。そして、ステップ1056で、フローは呼び出したプロセスへ戻る。
【0096】
図34は、図31のステップ960で呼び出される”STRCTIDプロセッサ”を示す。図示のプロセスは、クリアテキストタグ”STRCTID”を処理するために用いられる。STRCTIDエレメントに対するバイナリ表現は、変換されるべきファイル中の前に出現するエレメントによって変わることがあるので、STRCTIDエレメントのための特殊なルーチンがある。例えば、図16はPICTBDYエレメントのためのサブエレメント連結リストデータ構造を示している。図16において、データ構造370及びデータ構造384は共にSTRCTIDサブエレメントのためのものである。図34に示したフローチャートは、図16に示したSTRCTIDエレメントのどれが処理中に用いられるか判断するために利用される。
【0097】
図34において、ステップ1080で変換中のエレメントからSTRCTIDデータを取得する。ステップ1080で取得されるSTRCTIDデータの例は、ピクチャー、ページセット、トークンシーケンス、Pictbdy、プロローグである。STRCTIDデータは、どのタイプの情報が外部リソース中に含まれているかを示す。この情報は、図16のSTRCTIDに対しどのASN.1タグが用いられるかの判断を助けるために利用される。
【0098】
次に、ステップ1082で、ピクチャー/ページセットスタックのトップエントリーにより指示されたデータ構造の外部宣言ポインタにより指された連結リスト中のSTRCTIDを探す(図9参照)。図9に示したデータ構造は、変換すべき文書の実際の処理(変換プロセスではない)の間に生成される。図9に示したデータ構造の生成及び処理は、特許査定された米国特許出願第07/876,251号(1992年4月30日受理、”Method and System to Handle Inclusion of External Files Into a Document Processing Language”に詳細に述べられている
【0099】
次にステップ1084で、図9に示した構造ID連結リストデータ構造のいずれかの中の構造IDが、変換されるべきSTRCTIDクリアテキストエレメントに対応するか判定する。対応しないときは、エラーがあるので、ステップ1086でプロセスを終了させる。対応するときには、ステップ1088で該エレメントの構造タイプを対応する構造ID連結リストデータ構造から取得する。構造タイプが得られると、ステップ1090でカレント(current)エレメントのサブエレメント連結リストをトレースし、STRCTID連結リストデータ構造中に見つかった構造タイプを見つける。例えば、図9に示した連結リスト中の構造タイプがピクチャーであると判定された場合、該ピクチャーに対応するSTRCTIDを見つけるべくサブエレメント連結リストリストがトレースされる。
【0100】
構造タイプがサブエレメント連結リスト中に見つからないときには、フローはステップ1092からステップ1094へ進みプロセスを終了させる。構造タイプが見つかったときには、ステップ1096でサブエレメント連結リストのトレースを、STRCTIDが見つかるまで続ける。したがって、ステップ1090では構造エレメントを確定し、そしてステップ1096で該構造エレメントの後の最初のSTRCTIDを求める。
【0101】
次にステップ1098で、図23に示したステップ606からの”長さ制御スタックセットアップルーチン”を呼び出す。次にステップ1100で、フローは呼び出したプロセスへ戻る。
【0102】
図35は”アトリビュート終了ルーチン”を示す。このルーチンは、図31及び図32に示したプロセスで始まったアトリビュートの変換処理を終了させるために用いられる。図35において、ステップ1120で一時的アトリビュートバッファ連結リストがカレント(current)エレメントのためのサブエレメント連結リストのアトリビュートと同じ順序であるか判定する。同じ順序でないときには、ステップ1122で一時的アトリビュートバッファ連結リストを、サブエレメント連結リストのアトリビュートと同じ順序を持つように並べ替える。同じ順序のときには、順序を並べ替える必要がないので、フローはステップ1120から直ちにステップ1124へ進み、一時的アトリビュートバッファデータ構造中のアトリビュート全部が処理されたか判定する。ステップ1124が初めて呼び出される時には、アトリビュートの全部は処理されていないので、フローはステップ1128へ進み一時的アトリビュートバッファ連結リストデータ構造中の最初のアトリビュートのアトリビュートネームを取得する。ステップ1130で、図23に示された”長さ制御スタックセットアップルーチン”を呼び出す。ステップ1132で、バイナリのアトリビュート値を長さ制御スタックのトップエントリーのバッファに入れる。ステップ1134で、バッファのバイトサイズをカウントし、そのサイズを長さ制御スタックのトップエントリーのバッファカウントに書き込む。ステップ1136は図26に示された”終了タグルーチン”を呼び出し、フローはステップ1124へループバックする。アトリビュート全部が処理されると、フローは呼び出したプロセスへ戻る。そうでなければ、ステップ1128〜1136が繰り返される。
【0103】
図36は、本発明のプロセスを実行するために利用できるワークステーション1200の構成を示す。ワークステーション1200はCPU1202、RAM1204、ROM1206、キーボード1210及びマウス1214と接続された入力コントローラ1208を含む。印刷エンジンインターフェイス1216が印刷エンジン1218に接続され、印刷エンジン1218は該インターフェイス1216によって伝送される画像データのビデオ制御信号を受信する。ワークステーション1200はさらに、ハードディスク1224及びフロッピーディスク1226と接続されたデスクコントローラ1222、ネットワーク1230(例えばEthernet(登録商標)ネットワーク)に接続するための通信コントローラ1228、I/Oコントローラ1232を含む。I/Oコントローラ1232は、例えばSCSIバスにより外部のハードディスク1236と接続され、例えばRS−232ケーブルによってプリンタ1234と接続される。ワークステーション1200は、CRT1240と接続されるディスプレイコントローラ1238も含む。システムバス1220はワークステーション内部の各要素を接続する。
【0104】
本発明のプロセスは、図36に示した記憶装置中のどれに格納してもよい。さらに、本発明のプロセスの実行中に、生成されるデータ及び処理に利用されるデータは図36に示した記憶装置中のどれに格納してもよい。CPU1202は本発明のプロセスの実行をするために利用できる。
【0105】
図37は、本発明の変換プロセスの実行例に用いられる典型的なSPDL文書を示す。行1は!DOCTYPEエレメントを含んでいる。行2はSPDLエレメントを含んでいる。行3はアトリビュート”コンテント表現”を持つピクチャーエレメントを含んでいる。行4はPICTBDYエレメントを含んでおり、行5はそのプロローグを含んでいる。図37に示した文書のこれ以上の説明は、これらエレメントがよく知られたSPDLエレメントであり説明は必要でないので、簡略化のため省略する。
【0106】
図38乃至図61は、図37に示した文書例の処理時の長さ制御スタックを示す。図38において、図37の行2にあるSPDL開始タグが図29に示したフローチャートに従って処理される。図39において、ピクチャー開始エレメントが処理され、スタックは図示のようになる。なお、図38乃至図61において、3つのハイフン(−−−)は何等かのバイトシーケンスを指す。ハイフンを含む正確なバイトシーケンスは、添付図面に含まれかつ明細書中で述べられたフローチャートを使って決定できるが、簡単にするため省略されている。図39において、3つのハイフンは図38のポインタにより指されたものと同じシーケンスの可能性がある。図40乃至図45は、図37の文書例の処理がさらに進んだ時点のスタックを示す。図46、及び文書例の処理中のスタックを示す他の図において、x,y,xy,yy等々の変数はバイト値を表わす。正確なバイト値は、フローチャートを追跡し図37に示した各種パラメータの値を求めることによって決定できる。図46において、Current−TagはPROLOGUEエレメントである。図50は、外部宣言データ構造へのポインタを持つピクチャー/ページセットスタックデータ構造の例と、その外部宣言データ構造を示す。図50において、1302はピクチャー/ページセットスタックを表わし、1304は外部宣言データ構造へのポインタを持つデータ構造を表わし、1306は外部宣言データ構造を表わす。ファイルがクリアテキストからバイナリへ変換中であるとしても、図50に示すデータ構造は、単に1対1変換の実行ではなく、変換される文書の一部を実際に処理するためには必要である。これは構造タイプ(図50において、1306は構造ID MYPICTのピクチャーである)を確認する必要があるからである。図50は本発明の処理に用いられるデータ構造の一例に過ぎないもので、当然、図示されない他のものが用いられてもよいが、簡略にするため省略されている。
【0107】
図51において、Current−TagはPROLOGUEである。図52においては、Tag−Read−InはSTUPPRCであり、Current−TagはSTUPPRCであり、Previous−TagはPROLOGUEである。図57において、Current−TagはPICTBDYである。図58において、Tag−Read−InはSTRCTIDであり、外部宣言データのデータはMYPICT(不図示)である。これは次のSTRCTIDを取り出すために利用される。Current−TagはSTRCTIDであり、Previous−TagはPICTBDYである。処理は図59乃至図61に示すデータ構造を利用して続く。
【0108】
【発明の効果】
以上の説明から理解されるように、本発明によれば、クリアテキスト・エンコーディングからバイナリ・エンコーディングへの変換における課題を解決し、クリアテキスト・エンコーディング文書からバイナリ・エンコーディング文書への変換、より特定的に言えば、クリアテキスト・エンコーディングSPDL文書からバイナリ・エンコーディングSPDL文書への変換を実行するための効果的な方法を実現することができる。
【図面の簡単な説明】
【図1】 バイナリ・エンコーディングに対する固定長フォーマット及び不定長フォーマットのネスティングの一例を示す図である。
【図2】 ISO/IEC 8825 によるエンコーディングの構造を示す図である。
【図3】 ISO/IEC 8825 によるアイデンティファイア・オクテットの構造を示す図である。
【図4】 SPDLエレメント状態遷移ダイヤグラムの部分図である。
【図5】 バイナリエンコードSPDL文書の見本の16進表現を示す図である。
【図6】 図5に示したバイナリ文書のクリアテキスト表現を示す図である。
【図7】 図5に示したバイナリエレメントと図6に示したクリアテキストエレメントとの間の対応を示す図である。
【図8】 クリアテキスト文書をバイナリ文書へ変換するために利用される要素の概念図である。
【図9】 STRCTIDエレメントのバイナリ表現のためにどのバイナリ表現を用いるかを決定するため、SPDL構造プロセッサがSTRCTIDエレメントの処理に利用するデータ構造を示す図である。
【図10】 バイナリ変換された文書中のアトリビュートの順序が適切であることを保証するために利用される一時的アトリビュートバッファデータ構造を示す図である。
【図11】 各クリアテキストタグのための各種パラメータの格納に利用されるエレメントテーブルを示す図である。
【図12】 サブエレメント連結リストデータ構造のフィールドを示す図である。
【図13】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図14】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図15】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図16】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図17】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図18】 図11に示したエレメントテーブルにより指示される、図12に示した構造を持つ典型的なサブエレメント連結リストデータ構造を示す図である。
【図19】 文書の各階層レベルの変換を管理するために利用される長さ制御スタックを示す図である。
【図20】 変換プロセスのために用いられるフローチャートを示す図である。
【図21】 コメントプロセッサに用いられるプロセスを示す図である。
【図22】 トークンシーケンスプロセッサに用いられるプロセスのフローチャートを示す図である。
【図23】 長さ制御スタックを初期化するために用いられる長さ制御スタックセットアップルーチンを示す図である。
【図24】 長さ制御スタックを初期化するために用いられる長さ制御スタックセットアップルーチンを示す図である。
【図25】 長さ制御スタックを初期化するために用いられる長さ制御スタックセットアップルーチンを示す図である。
【図26】 終了タグルーチンのフローチャートを示す図である。
【図27】 タグプロセッサにより利用されるフローチャートを示す図である。
【図28】 DOCTYPEプロセッサにより利用されるフローチャートを示す図である。
【図29】 SPDL開始ルーチンのフローチャートを示す図である。
【図30】 SPDL終了ルーチンのフローチャートを示す図である。
【図31】 開始タグルーチンのフローチャートを示す図である。
【図32】 開始タグルーチンのフローチャートを示す図である。
【図33】 開始タグルーチンのフローチャートを示す図である。
【図34】 STRCTIDプロセッサのフローチャートを示す図である。
【図35】 アトリビュート終了ルーチンのプロセスを示す図である。
【図36】 本発明の典型的なハードウエア構成を示す図である。
【図37】 バイナリへ変換可能な典型的なクリアテキストSPDL文書を示す図である。
【図38】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図39】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図40】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図41】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図42】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図43】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図44】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図45】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図46】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図47】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図48】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図49】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図50】 外部宣言データ構造へのポインタを持つピクチャー/ページセットスタックデータ構造の例と、その外部宣言データ構造を示す図である。
【図51】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図52】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図53】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図54】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図55】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図56】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図57】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図58】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図59】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図60】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【図61】 図37に示した文書がバイナリへ変換される時の長さ制御スタックを示す図である。
【符号の説明】
202 SPDLクリアテキストデータ
204 パーサー
206 クリアテキスト−バイナリトランスレータ
208 SPDL構造プロセッサ
210 バイナリデータ
220 ピクチャー/ページセットスタック
234,226,242,250 連結リストデータ構造
270 一時的アトリビュートバッファデータ構造
280 エレメントテーブル
282 サブエレメント連結リストデータ構造
289 追加ASN.1タグ
310 サブエレメント連結リストデータ構造
320,330 サブエレメント連結リストデータ構造
340,350 サブエレメント連結リストデータ構造
360,370,380,382,384 サブエレメント連結リストデータ構造
368,378,381,383,385 追加ASN.1タグ
386,388,390,392,394,396 サブエレメント連結リストデータ構造
387,389,391,393,394,396 追加ASN.1タグ
398,400,402,404,406,408 サブエレメント連結リストデータ構造
399,401,403,405,407,409 追加ASN.1タグ
420 長さ制御スタック
422 バッファ
1200 ワークステーション
1202 CPU
1204 RAM
1206 ROM
1208 入力インターフェイス
1210 キーボード
1214 マウス
1216 印刷エンジンインターフェイス
1218 印刷エンジン
1220 システムバス
1222 ディスクコントローラ
1224 ハードディスク
1226 フロッピードライブ
1228 通信インターフェイス
1230 ネットワーク
1232 I/Oコントローラ
1234 プリンタ
1236 ハードディスク
1238 ディスプレイコントローラ
1240 CRT

Claims (6)

  1. データ処理装置により、クリアテキストエンコードの標準ページ記述言語文書であるSPDLクリアテキストデータをバイナリエンコードの標準ページ記述言語であるバイナリデータに変換する文書フォーマット変換方法であって、
    データ処理装置は、プロセスを実行するCPU、プロセスの実行中に生成されるデータ及び処理に利用されるデータを一時的に格納するメモリを有し、
    前記CPUが、
    SPDLクリアテキストデータをメモリに入力するステップと、
    入力されたSPDLクリアテキストデータのエレメントのタグが開始タグである場合は、そのタグのバイナリエンコードの記述に追加の部分が存在するか否かを判定するステップと、
    追加の部分が存在すると判定された場合に、スタックのトップエントリーに記憶されているバイナリエンコードの記述が追加の部分であるか否かを判定するステップと、
    スタックのトップエントリーに記憶されているバイナリエンコードの記述が追加の部分であると判定された場合に、その追加の部分が、入力されたエレメントのタグにおける追加の部分と同じであるか否か判定するステップと、
    同じでないと判定された場合に、スタックのトップエントリーに記憶されているタグのバイナリエンコードの記述に基づいて、バイナリデータを作成してトップエントリーをポップし、次に、入力されたエレメントのタグについて、追加の部分を入れたエントリーをスタックに追加し、さらにバイナリエンコードの記述で常に出現する必要がある部分を入れたエントリーをスタックに追加するステップと、
    同じであると判定された場合に、入力されたタグに対するバイナリエンコードの記述で常に出現する必要がある部分を入れたエントリーのみをスタックに追加するステップと、
    入力されたSPDLクリアテキストデータのエレメントのタグが終了タグである場合は、
    スタックのトップエントリーに記憶されているタグのバイナリエンコードの記述に基づいて、バイナリデータを作成してトップエントリーをポップするステップと、
    を実行することを特徴とする文書フォーマット変換方法。
  2. 請求項1記載の文書フォーマット変換方法において、スタックのトップエントリーに記憶されているバイナリエンコードの記述が追加の部分であるか否かを判定するステップでは、該追加の部分を含むか表示するフラグを調べることを特徴とする文書フォーマット変換方法。
  3. 請求項1記載の文書フォーマット変換方法において、少なくとも2つの異なるフィールドを持つデータ構造によって、前記変換のステップのそれぞれにより、クリアテキストエンコードで記述されたタグをバイナリコードの記述へ変換するために用いられる変換情報を格納し、該少なくとも2つの異なるフィールドの中の1つが、該対応エレメントのバイナリエンコード記述中に常に出現する必要がある部分を格納するために用いられ、該少なくとも2つの異なるフィールドのもう1つがバイナリコード記述中の追加の部分を格納するために用いられる、ことを特徴とする文書フォーマット変換方法。
  4. 請求項3記載の文書フォーマット変換方法において、前記データ構造は連結リストデータ構造であることを特徴とするフォーマット変換方法。
  5. 請求項1記載の文書フォーマット変換方法において、入力されたエレメントのタグが複数のバイナリエンコード記述を持つ場合、スタックのトップエントリーのエレメントに対する正しいサブエレメントである1つを選ぶことにより、入力されたエレメントのタグを、その該複数のバイナリエンコード記述中の1つへ変換することを特徴とする文書フォーマット変換方法。
  6. 請求項5記載の文書フォーマット変換方法において、スタックのトップエントリーのエレメントに対するサブエレメント連結リストをトレースし、該サブエレメント連結リストにおいて、入力されたエレメントのタグに関する構造タイプの後に出現するクリアテキストエンコード記述を選ぶことによって複数のバイナリエンコード記述中の該1つを選ぶことを特徴とする文書フォーマット変換方法。
JP09471895A 1994-06-13 1995-04-20 文書フォーマット変換方法 Expired - Fee Related JP4098838B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/261184 1994-06-13
US08/261,184 US5504891A (en) 1991-10-17 1994-06-13 Method and apparatus for format conversion of a hierarchically structured page description language document

Publications (2)

Publication Number Publication Date
JPH07334496A JPH07334496A (ja) 1995-12-22
JP4098838B2 true JP4098838B2 (ja) 2008-06-11

Family

ID=22992241

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09471895A Expired - Fee Related JP4098838B2 (ja) 1994-06-13 1995-04-20 文書フォーマット変換方法

Country Status (1)

Country Link
JP (1) JP4098838B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7325396B2 (ja) * 2020-12-25 2023-08-14 株式会社日立製作所 データファイル暗号化送受信システム及びデータファイル暗号化送受信方法

Also Published As

Publication number Publication date
JPH07334496A (ja) 1995-12-22

Similar Documents

Publication Publication Date Title
US5504891A (en) Method and apparatus for format conversion of a hierarchically structured page description language document
US5506985A (en) Method and apparatus for format conversion of a hierarchically structured page description language document
EP0349457B1 (en) Dynamic redefinition of a shell structure
US6859810B2 (en) Declarative specification and engine for non-isomorphic data mapping
US7873663B2 (en) Methods and apparatus for converting a representation of XML and other markup language data to a data structure format
US7188115B2 (en) Processing fixed-format data in a unicode environment
Lam et al. XML document parsing: Operational and performance characteristics
US7158990B1 (en) Methods and apparatus for data conversion
US7627566B2 (en) Encoding insignificant whitespace of XML data
US20050144556A1 (en) XML schema token extension for XML document compression
EP0268069B1 (en) Method of forming a message file in a computer
US20070016554A1 (en) Hardware accelerated validating parser
US20020029229A1 (en) Systems and methods for data compression
EP1684191A2 (en) Method and system for binary serialization of documents
US20070112810A1 (en) Method for compressing markup languages files, by replacing a long word with a shorter word
US20060271850A1 (en) Method and apparatus for transforming a printer into an XML printer
EP0520708B1 (en) Method and apparatus for converting high level form abstract syntaxes into an intermediate form
US5487165A (en) Standard page description language cleartext structure generator
JP4098838B2 (ja) 文書フォーマット変換方法
RU2294012C2 (ru) Структура данных и способы преобразования потока битов в электронный документ и формирования потока битов из электронного документа на ее основе
JP3560258B2 (ja) フォーマット変換装置
US7596630B2 (en) Method, system and computer program product for parsing an encoding
WO2008107802A2 (en) Method and device for processing documents on the basis of enriched schemas and corresponding decoding method and device
AU2003277250A1 (en) Hardware accelerated validating parser
CN117041391A (zh) 一种以太网通讯报文协议的通用解析处理方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20041109

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050111

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20050301

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20050902

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080212

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080314

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110321

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120321

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees