JP4688816B2 - 効果的な省スペースxmlパーシング - Google Patents

効果的な省スペースxmlパーシング Download PDF

Info

Publication number
JP4688816B2
JP4688816B2 JP2006543885A JP2006543885A JP4688816B2 JP 4688816 B2 JP4688816 B2 JP 4688816B2 JP 2006543885 A JP2006543885 A JP 2006543885A JP 2006543885 A JP2006543885 A JP 2006543885A JP 4688816 B2 JP4688816 B2 JP 4688816B2
Authority
JP
Japan
Prior art keywords
string
linked list
attribute
character
parser
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
JP2006543885A
Other languages
English (en)
Other versions
JP2007514239A (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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2007514239A publication Critical patent/JP2007514239A/ja
Application granted granted Critical
Publication of JP4688816B2 publication Critical patent/JP4688816B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、広くインターネット技術に関する。より具体的には、本発明は、XML(拡張可能マークアップ言語)パーシングのためのシステムおよび方法に関する。
拡張ワイヤレスPC(パーソナルコンピュータ)、ディジタルホーム、およびディジタルオフィスの複数の先駆けは、全てXML(拡張可能マークアップ言語)を活用する複数の標準プロトコルに基づく。複数の伝統的なXMLパーサは、複雑であり、複数の組み込み型デバイスにそれほど適していない。多くのデバイスベンダは、XMLパーシングの複雑さおよびオーバーヘッドのため、これら複数の標準プロトコルを彼らの複数のデバイスの中に実装することの困難さを有している。例えば、現在のパーサは、DOM(ドキュメントオブジェクトモデル)およびSAX(Simple API(アプリケーションプログラミングインターフェース) for XML)の2つのカテゴリに分類される。
複数のDOMパーサは、XML文字列を解析し、複数のXML要素のまとまりを返すことで動作する。それぞれの要素は、XMLドキュメントの中の特定の要素に関する情報を有する。これを可能にするには、情報の全ては、返される構造にコピーされなければならない。これは、多くのメモリオーバーヘッドをもたらす。
複数のSAXパーサは、設計において、とてもよりシンプルである。それらは、複数のステートレスフォワードパーサである。つまり、パーサを用いるアプリケーションは、状態を維持するために、ロジックを有さなければならず、アプリケーションに渡される任意のデータは、アプリケーションのメモリバッファにコピーされなければならない。SAXパーサは、DOMパーサよりもとてもシンプルな設計であるが、SAXパーサは、それでも多くのメモリオーバーヘッドを要求する。
したがって、必要とされることは、多くのメモリオーバーヘッドを要求しないXMLを解析するためのシステムおよび方法である。同様に必要とされることは、設計においてシンプルであり、その上、省スペースを要求するXMLを解析するためのシステムおよび方法である。さらに必要とされることは、設計においてシンプルであり、少しのオーバーヘッド要求し、それにより複数のデバイスベンダがXMLパーシングを彼らの複数のデバイスに組み込むことを可能にするXMLを解析するためのシステムおよび方法である。
米国特許第6763499号明細書 米国特許出願公開第2005/0165724号明細書 米国特許第6362901号明細書 米国特許第7313785号明細書 米国特許第6581063号明細書 "XML Parser for Java" ORACLE9I XML API REFERENCE-XDK AND ORACLE XML DB, 2002 GENADY BERYOZKIN: "Pay Less for Strings or How Strings Work" 21 February 2001, TECHNION-ISRAEL INSTITUTE OF TECHNOLOGY "Package oracle.xml.parser.v2" ORACLE9I SUPPLIED JAVA PACKAGES REFERENCE, 2002
ここに盛り込まれ、明細書の部分を構成する添付の複数の図面は、本発明の複数の実施形態を説明し、その説明と共に、さらに本発明の複数の原理を説明し、ならびに当業者が本発明を生産するおよび使用することを可能にすることに役立つ。複数の図面で、同様の複数の参照番号は、同一の、機能上同様な、および/または構造上同様な複数の要素を広く示す。要素が最初に現れる図面は、対応する参照番号内の左端の(複数の)桁により示される。
本発明の一実施形態に従って複数のXML文字列を解析するための一例のシステムを説明するブロック図である。
本発明の一実施形態に従って複数のXML文字列を解析するための一例の方法を説明するフロー図である。
本発明の一実施形態に係る一例の連結リストノード構造を説明する。
本発明の一実施形態に係る一例の連結リスト属性構造を説明する。
一例のXML文字列を説明する。
本発明の一実施形態に従ってソースXMLをトークン化するための方法を説明する一例のフロー図である。
本発明の一実施形態に従って連結リストノード構造を生成するための一例の方法を説明するフロー図である。 本発明の一実施形態に従って連結リストノード構造を生成するための一例の方法を説明するフロー図である。
本発明の一実施形態に係る図3Aに図示される一例のXML文字列のための一例の連結リストノード構造を説明する。
本発明の一実施形態に従ってXML文字列が有効かどうかを判断する一例の方法を説明するフロー図である。
本発明の一実施形態に従って連結リストノード構造から複数の属性構造の連結リストを作成する一例の方法を説明するフロー図である。 本発明の一実施形態に従って連結リストノード構造から複数の属性構造の連結リストを作成する一例の方法を説明するフロー図である。
図3Aの一例のXML文字列のための本発明の一実施形態に係る一例の連結リスト属性構造を説明する。
本発明の一実施形態に従って開始および終了連結リストノード構造からデータを得るための一例の方法を説明するフロー図である。
本発明の一実施形態に従って図3Aの一例のXML文字列から抽出されるデータを説明する。
発明の詳細な説明
本発明は、ここで特定の複数のアプリケーションのための説明に役立つ複数の実施形態への参照を伴い説明されるが、本発明がそれに制限されないことは、理解されるべきである。ここで提供される複数の内容が入手可能な当業者は、その範囲内の付加的な複数の修正、複数の応用、および複数の実施形態および本発明の複数の実施形態が非常に役立つ付加的な複数の領域を認識するだろう。
本発明の明細書中の"1つの実施形態"、"一実施形態"または"他の実施形態"への参照は、実施形態に関連して説明される特定の特徴、構造または特性は、本発明の少なくとも1つの実施形態に含まれることを意味する。したがって、明細書を通してさまざまな場所に現れる複数のフレーズの複数の出現"1つの実施形態において"または"一実施形態において"は、必ずしも同じ実施形態を参照している全てではない。
本発明の複数の実施形態は、大量のメモリオーバーヘッドを要求しないXMLを解析するためのシステムおよび方法に向けられる。本発明は、複数のゼロメモリコピーをを用いることでこれを果たし、これにより、省スペースでとても効果的なパーサを生み出す。本発明の複数の実施形態は、XMLに関して説明されるが、複数のマークアップ言語の他の複数のタイプも同様に応用可能である。
図1は、XMLを解析するためのシステム100を説明する一例のブロック図である。システム100は、ゼロコピー文字列パーサモジュール102およびパーサロジックモジュール104を備える。ゼロコピー文字列パーサモジュール102は、パーサロジックモジュール104に結合される。
ゼロコピー文字列パーサモジュール102は、任意のデータをコピーすることなく複数のXML文字列を解析することに対して責任がある。ゼロコピー文字列パーサモジュール102は、シングルパスパーサであり、したがって、アプリケーションから受信される入力文字列は一度だけ読み込まれる。
図1に示されるように、パーサロジックモジュール104は、ゼロコピー文字列パーサモジュール102の上部に構築される。パーサロジックモジュール104は、XML実体を解析するために要求されるロジックを備える。したがって、パーサロジックモジュール104は、XML文字列をメモリにコピーせざる得ないことなく、複数のXML文字列を解析するために、ゼロコピー文字列パーサモジュール102と対話する。
ゼロコピー文字列パーサモジュール102は、解析すべき入力文字列および入力文字列の長さをアプリケーションから受信する。パーシングロジックモジュール104は、ゼロコピー文字列パーサモジュール102に、解析するための区切り文字を提供し、それにより、ゼロコピー文字列パーサモジュール102が文字列をトークン化することを可能にする。それぞれのトークンは、ソースXML文字列(すなわち入力文字列)へのインデックスを有し、その値、および値の長さを表す特性を表す。文字列が一旦トークン化されると、複数の連結リストノード構造は、複数のトークンを用いて構築され、複数の連結リスト属性構造は、複数の連結リストノード構造を用いて構築される。複数のノードおよび属性構造は、ソースXML文字列への複数のポインタを有する。複数の連結リストノードおよび属性構造は、ソースXML文字列に関連する複数のポインタを維持する間、メモリから解放される。複数の構造を削除しながら複数のポインタを維持することは、XML文字列がコピーされなくてはならないことを防ぎ、これにより、メモリオーバーヘッドを最小にする。
文字列のトークン化の後、ゼロコピー文字列パーサモジュール102は、それぞれのトークンをパーシングロジックモジュール104へ複数の連結リストノード構造を作成するために送る。パーシングロジックモジュール104は、複数のトークンを受信すると、トークンの長さおよび区切り文字と共に、ゼロコピー文字列パーサモジュール102へ、1回に1つのトークンを返す。ゼロコピー文字列パーサモジュール102は、その後、連結リストノード構造のための複数のポインタを得るために、その区切り文字を用いてトークンを解析するこのプロセスは、全てのトークンが適切に解析されるまで続く。複数の連結リストノード構造が一旦作成されると、複数の連結リストノード構造は、XML文字列に含まれる複数の属性への複数のポインタを提供するための複数の連結リスト属性構造を作成するために使用される。同様に、XML文字列内のデータは、複数のポインタを用いて、複数の連結リストノード構造から抽出される。
XML文字列を解析するために、少なくとも5つの区切り文字が使用される。複数の区切り文字は、開括弧"<"、スペース" "、コロン":"、等号"="、および閉括弧">"を含むが、これに制限されない。ロジックパーサモジュール104は、複数のトークンを解析し、それぞれのトークンを解析するために、ゼロコピー文字列パーサモジュール102へ適切な区切り文字を提供する。複数のXML文字列を解析するプロセスは、これから図2Aを参照して説明される。
図2Aは、本発明の一実施形態に従って複数のXML文字列を解析するための一例の方法を説明するフロー図200である。本発明は、フロー図200に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、ブロック202で始まり、直ちにブロック204へ進む。
ブロック204では、アプリケーションからゼロコピー文字列パーサモジュール102への入力であるXML文字列が、複数の連結リストノード構造に変形される。XML文字列内のそれぞれの要素は、開始タグのための1つのノード構造およびエンドタグのための1つのノード構造の2つのノード構造に変形される。
図2Bは、本発明の一実施形態に係る一例のノード構造220を説明する。ノード構造220は、名称領域222、名称長領域224,名称空間領域226、名称空間長領域228、開始タグ領域230、空タグ領域232、予約領域234、次領域236、親領域238、ピア領域240、および終了タグ領域242を備える。
名称領域222は、要素タグの名称を表す。名称長領域224は、要素タグの名称の長さを表す。名称空間領域226は、要素タグに関連する任意の接頭辞の名称を表す。名称空間長領域228は、要素タグに関連する任意の接頭辞の長さを表す。
開始タグ領域230は、セットされた場合、要素タグが開始タグであることを示すフラグを表す。開始タグ領域230が消去された場合、タグは終了タグである。空タグ領域232は、セットされた場合、要素タグが空タグであることを示すフラグを表す。空タグは、それ自身のそばにあるタグである。言い換えれば、空タグは、どの内容をも囲まない。空タグは、閉括弧(すなわち、">")の代わりに、スラッシュおよび閉括弧(すなわち、"/>")で終わる。
予約領域234は、タグが開始タグの場合、次の閉括弧(すなわち、">")の位置を表す。予約領域234は、タグが終了タグの場合、最初の開括弧(すなわち、"<")の位置を表す。次領域236は、次のノード構造へのポインタを表す。
親領域238は、親要素の開要素へのポインタを表す。親要素は、ネスト化された要素を囲む要素である。ピア領域240は、ピア要素の開要素へのポインタを表す。ピア要素は、別の要素と同一の場所に配置される要素である。言い換えれば、複数のピア要素は、同じレベルである。例えば、同じ親要素を有する複数の子要素は複数のピア要素である。終了タグ領域242は、要素タグの閉要素へのポインタを表す。
図2のブロック204に戻って、ノード構造220内の特定の複数の領域は、最初に満たされる。これら複数の領域は、名称領域222、名称長領域224、名称空間領域226、名称空間長領域228、開始タグ領域230、空タグ領域232、予約領域234、および次領域236を含む。名称、名称空間、予約、および次は、ソースXML文字列への複数のポインタである。XML文字列から連結リストノード構造を決定する方法は、図3B−図3Dを参照して以下においてさらに説明される。
ブロック206において、XML入力文字列のシンタックスは、入力文字列が有効かどうかを判断するために検証される。これは、それぞれの要素が正しく開けられるおよび閉じられるかどうかを検証することで果たされる。複数のXMLドキュメントのための制約は、それらが適格であることである。特定の複数のルールは、XMLドキュメントが適格かどうかを判断する。1つのこのようなルールは、全ての開始タグは終了タグを有し、終了タグは、開始タグと同じ名称、同じ名称空間等を含まなければならないことである。例えば、<A:ElementTag>と名付けられた開始タグは、</A:ElementTag>と名付けられた終了タグで終わらなければならない。同様に、全てのタグは完全にネスト化されなければならない。例えば、1つは、<ElementTag> … <InnerTag> … </InnerTag> … </ElementTag>を有し、<ElementTag> … <InnerTag> … </ElementTag> … </InnerTag>ではない。
XML文字列が検証されている間、連結リストノード構造の残りの複数の領域が満たされる。これら複数の領域は、親領域238、ピア領域240および終了タグ領域242を含む。XML文字列のシンタックスを検証するための方法は、図4を参照して以下で説明される。
ブロック208において、複数の属性構造の連結リストは、連結リストノード構造から作成される。一例の連結リスト属性構造250は、図2Cで説明される。連結リスト属性構造250は、属性名称領域252、属性名称長領域254、属性値領域260、接頭辞名称領域256、接頭辞名称長領域258、属性値長領域262、および次属性領域264を備える。
属性名称領域252は、属性の名称を表す。属性名称長領域254は、属性名称の長さを表す。接頭辞名称領域256は、接頭辞の名称を表す。接頭辞名称長領域258は、接頭辞名称の長さを表す。属性値領域260は、属性の値を表す。属性値長領域262は、属性値の長さを表す。次属性領域264は、幾つか存在する場合、次の属性へのポインタを表す。連結リスト属性構造を作成するための方法は、図5Aおよび図5Bを参照して、以下で説明される。
図2Aに戻って、ブロック210において、与えられるノード構造からのデータセグメントが得られる。1つの実施形態では、与えられる要素のデータは、単純な文字列である。1つの実施形態では、与えられる要素のデータは、XMLサブツリーである。データセグメントの決定は、図6Aを参照して、以下に説明される。
ブロック212において、複数のノード構造連結リストおよび複数の属性構造連結リストは、消去または解放され、元のXML文字列への複数のポインタのみを残す。
連結リストノード構造および連結リスト属性構造を作成するための複数の方法を説明するに先立って、これら複数の方法を説明する時に参照される一例のXML文字列が説明される。図3Aは、一例のXML文字列302を説明する。XML文字列302は、"u:ElementTag"と名付けられた開始タグ304、"id"と名付けられた属性306、"TestValue"と名付けられた属性値308、"InnerTag"と名付けられた開始タグ310、"SampleValue"と名付けられたテキストデータ312、"InnerTag"と名付けられた終了タグ314、および"u:ElementTag"と名付けられた終了タグ316を備える。それぞれの開始タグ304および310は、適合している終了タグ316および314をそれぞれ有する。したがって、それぞれの開始タグは、開括弧"<"により識別され、各終了タグは、スラッシュが続く開括弧"</"により識別される。
図3Bは、本発明の一実施形態に従ってソースXMLをトークン化するための方法を説明する一例のフロー図320である。本発明は、フロー図320に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、ブロック322で始まり、プロセスは、直ちに、ブロック324へ進む。
ブロック324において、アプリケーションからのXML文字列およびパーシングロジック104からの開括弧("<")区切り文字は、ゼロコピー文字列パーサモジュール102への入力である。ゼロコピー文字列パーサモジュール102は、複数のトークンのリストを得るために、開括弧区切り文字を用いてXML文字列を解析する(ブロック326)。複数のトークンのリストは、XML入力文字列内のそれぞれのタグの開始を表す。図3Aからの一例のXML文字列302を用いて、以下の複数のトークンのリストが返される。(1)u:ElementTag;(2)InnerTag;(3)/InnerTag;および(4)/u:ElementTagそれぞれのトークンは、ソースXML文字列へのインデックスを代表し、その値、および値の長さを表す特性を表す。
ブロック328において、複数のトークンのリストは、パーサロジックモジュール104へ返される。複数のトークンのリストからのそれぞれのトークンは、別個の連結リストノード構造を作成するために使用され、それは、図3Cおよび図3Dを参照してさらに説明される。
図3Cおよび図3Dは、本発明の一実施形態に従って連結リストノード構造を生成するための一例の方法を説明するフロー図204である。本発明は、フロー図204に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、図3Cのブロック330で始まり、プロセスは、直ちにブロック332へ進む。
ブロック332において、トークンおよびスペース区切り文字(すなわち、" ")は、パーサロジックモジュール104からゼロコピー文字列パーサモジュール102への入力である。
ブロック334において、トークンは、構造のためのタグ名称を識別するために、スペース(すなわち、" ")区切り文字を用いて解析される。例えば、トークンu:ElementTag id="TestValue"を用いて、ゼロコピー文字列パーサモジュール102は、スペース区切り文字を用いて解析し、トークンの2つの部分をパーサロジックモジュール104に返す。すなわち、一番目の部分は、u:ElementTagであり、二番目の部分は、id="TestValue"である。トークンの一番目の部分、u:ElementTagは、常にタグ名称を備える。トークンの二番目の部分、id="TestValue"は、(複数の)属性を備える。スペースを含まない複数のトークンに対して、ゼロコピー文字列パーサモジュール102は、トークンをそのままで返す。この場合、返されるトークンは、一番目のトークンなので、それは、タグ名称を備える。
ブロック336において、パーサロジックモジュール104は、タグ名称を備える一番目の部分をコロン文字(すなわち、":")区切り文字と共にゼロコピー文字列パーサ102へ送る。コロン区切り文字は、タグのローカル名称から名称空間を抽出するために使用される。
判断ブロック338において、タグ名称を備えるトークンの一番目の文字が"/"で始まるかが判断される。タグ名称を備えるトークンの一番目の文字が"/"で始まる場合、タグは、終了タグである。この場合、開始タグは、消去され(ブロック340)、一番目の開括弧("<")は、予約ポインタとしてセットされる(342)。プロセスは、その後ブロック348へ進む。
判断ブロック338に戻り、タグ名称を備えるトークンの一番目の文字が"/"で始まらない場合、タグは、開始タグである。この場合、開始タグは、セットされ(ブロック344)、次の閉括弧(">")の位置は、予約ポインタとしてセットされる(ブロック346)。プロセスは、その後ブロック348へ進む。
ブロック348において、タグ名称を備えるトークンは、コロン区切り文字を用いて解析される。
図3Dの判断ブロック350において、タグ名称を備えるトークン内でコロン区切り文字が見つかるかが判断される。トークン内にコロン区切り文字が見つかる場合、コロンの左の全ての文字は、名称空間としてセットされ、コロンの右の全ての文字は、要素のローカル名称またはタグ名称としてセットされる(ブロック352)。例えば、解析された場合、開始タグu:ElementTagは、"u"を名称空間接頭辞としておよび"ElementTag"をローカルタグ名称として示す。トークン内にコロン区切り文字が見つからない場合、トークン内の全ての文字は、タグ名称を表す(ブロック354)。
ブロック356において、タグ名称の長さおよび、存在する場合、名称空間の長さが決定される。
ブロック358において、タグ名称および名称空間は、存在する場合、パーサロジックモジュール104に返される。ブロック360において、トークンの二番目の部分は、ゼロコピー文字列パーサ102へ渡される。
判断ブロック362において、トークンの二番目の部分の一番目の文字が"/"かどうかが判断される。一番目のトークンの二番目の部分の一番目の文字が"/"であると判断される場合、タグは、空タグであり、プロセスは、ブロック364へ進む。
ブロック364において、空タグ領域232は、セットされる。プロセスは、その後ブロック368へ進む。
判断ブロック362へ戻って、一番目のトークンの二番目の部分の一番目の文字が"/"でないと判断される場合、プロセスは、ブロック366へ進む。
ブロック366において、空タグ領域232は、消去され、プロセスは、ブロック368へ進む。
ブロック368において、次領域236は、次のタグの開始へのポインタとしてセットされる。例えば、一例のXML文字列302において、開始タグu:ElementTagのための次領域236は、InnerTagへのポインタである。
図3Eは、図3Aに示される一例のXML文字列302のための本発明の一実施形態に係る複数の一例の連結リストノード構造を説明する。XML文字列302内のそれぞれの開始タグおよび終了タグのための連結リストノード構造が示される。複数の連結リストノード構造の複数の領域からの複数の矢印は、実際のXML文字列への複数のポインタを示す。
一番目の連結リストノード構造370は、開始タグu:ElementTagを代表する。タグ名称は、ElementTagである。ElementTagは、名称長領域224に示されるように、長さにおいて10文字である。名称空間接頭辞は、uであり、名称空間長領域228に示されるように、長さにおいて1文字である。開始タグは、セットされる。空タグは消去される。予約領域234は、開始タグu:ElementTagの閉括弧を指し示す。次領域236は、InnerTagである次のタグを指し示す。終了タグ領域242は、/u:ElementTagであるu:ElementTagの終了タグを指し示す。
二番目の連結リストノード構造372は、開始タグInnerTagを代表する。タグ名称は、InnerTagである。InnerTagは、領域224に示されるように、長さにおいて8文字である。InnerTagは、名称空間を有さない(それは、InnerTag内のコロン文字の欠如によりしめされる)。したがって、名称空間長は、領域228に示されるようにゼロ(0)である。開始タグは、セットされる。空タグは、消去される。予約領域234は、開始タグInnerTagの閉括弧を指し示す。次領域236は、/InnerTagである次のタグを指し示す。InnerTagの親は、u:ElementTagである。終了タグ領域242は、/InnerTagであるInnerTagの終了タグを指し示す。
三番目の連結リストノード構造374は、終了タグ/InnerTagを代表する。タグ名称は、InnerTagであり、長さは8文字である。前に示したように、InnerTagは、名称空間を有さず、したがって、名称空間長はゼロである。開始タグは、消去される。空タグは、消去される。予約領域234は、終了タグ/InnerTagの開括弧を指し示す。次領域236は、/u:ElementTagである次のタグを指し示す。ノード構造374は、終了タグを表すので、残りの複数の領域238、240、および242は、空である。
四番目の連結リストノード構造376は、終了タグ/u:ElementTagを代表する。タグ名称は、ElementTagであり、長さは10文字である。名称空間は、uであり、長さは1文字である。開始タグは、消去される。空タグは、消去される。予約領域234は、終了タグu:ElementTagの開括弧を指し示す。ノード構造376は、終了タグを表し、XML文字列302内の最後のタグなので、次領域236、親領域238、ピア領域240および終了タグ領域242は、空である。
図4は、本発明の一実施形態に従ってXML文字列が有効かどうかを判断するための方法を説明する一例のフロー図206である。本発明は、フロー図206に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、ブロック402で始まり、プロセスは、直ちにブロック404へ進む。
ブロック404において、スタックは、初期化される。これは、スタックを消去することで果たされる。
ブロック406において、連結リストノード構造は、受け取られる。判断ブロック408において、連結リストノード構造が開始タグを表すかどうかが判断される。連結リストノード構造が開始タグを表すと判断される場合、プロセスは、判断ブロック410へ進む。
判断ブロック410において、開始タグがすでにスタック内に存在するかどうかが判断される。開始タグがスタック内にすでに存在する場合、親領域238は、スタックの上部の現在のアイテムへのポインタで満たされる(ブロック412)。例えば、図3A内のXML文字列302を用いて、ElementTagは、InnerTagの親である。これは、図3Eの連結リストノード構造372においても同様に示される。プロセスは、その後ブロック414へ進む。
ブロック410へ戻り、開始タグはスタック内に存在しないと判断される場合(すなわち、スタックは、空である)、プロセスは、ブロック414へ進む。
ブロック414において、現在の連結リストノード構造の開始タグは、スタック上に置かれる。プロセスは、次の連結リンクノード構造を受信するために、ブロック406へ戻る。
ブロック408へ戻り、連結リストノード構造が終了タグであると判断される場合、プロセスは、ブロック416へ進む。ブロック416において、スタックの上部の開始タグは、スタックからポップオフされる。
ブロック418において、ポップされた開始タグのピア領域240は、現在の終了タグの次領域ポインタ236で満たされる。次のXML構造は、ピアを説明する。
<u:ElementTag id=""TestValue">
<InnerTag>SampleValue</InnerTag>
<AnotherTag>AnotherValue</AnotherTag>
</u:ElementTag>
上の例において、InnerTagおよびAnotherTagは複数のピアである。InnerTagおよびAnotherTagは、同様に両方とも、u:ElementTagの子供たちである。プロセスは、判断ブロック420へ進む。
判断ブロック420において、ポップオフされた開始タグが現在の終了タグに適合するかどうかが判断される。ポップオフされた開始タグが現在の終了タグと適合する場合、XML文字列は、有効な文字列であるとみなされる(ブロック422)。言い換えれば、XML文字列のシンタックスは、この時点では、正しい。終了タグ領域242は、現在の終了タグで満たされる(ブロック424)。
判断ブロック426において、現在の連結リストノード構造が現在のXML文字列のための最後の構造かどうかが判断される。現在の連結リストノード構造が現在のXML文字列のための最後の構造ではないと判断される場合、プロセスは、次の連結リストノード構造を受信するためにブロック406へ戻る。
判断ブロック426へ戻り、現在の連結リストノード構造が現在のXML文字列のための最後の構造であると判断される場合、プロセスはブロック430へ進み、プロセスは終了する。
判断ブロック420へ戻り、ポップオフされた開始タグが現在の終了タグに適合しないと判断される場合、XML文字列は無効な文字列とみなされる(ブロック428)。プロセスは、ブロック430へ進み、プロセスは、直ちに終了する。
アプリケーションが与えられる要素内に含まれる複数の属性へのアクセスを望む場合、アプリケーションは、ゼロコピー文字列パーサ102に連結リストノード構造を与えてよい。ゼロコピー文字列パーサ102は、複数の属性を解析するために、要素の複数の予約ポインタを使用する。ゼロコピー文字列パーサ102は、複数の属性構造の連結リストを返し、複数の値の長さを表す複数の特性と同様に属性名および属性値を表すために、これは、元の文字列への複数のポインタを有する。属性解析がアプリケーションにより要求されないので、複数の属性を解析するためにこの方法を使用することは、大多数のケースにとって、より少ないオーバーヘッドをもたらす。同様に、複数の属性が解析される場合、メモリコピーが無く、これは、旧来の複数の解析方法と比べて、より高い性能およびより少ないリソースの使用をもたらす。
図5Aおよび図5Bは、本発明の一実施形態に従って連結リストノード構造から複数の属性構造の連結リストを作成するための一例の方法を説明するフロー図208である。本発明は、フロー図208に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、図5Aのブロック502で始まり、プロセスは、直ちにブロック504へ進む。
ブロック504において、開始タグのための連結リストノードは、ゼロコピー文字列パーサ102への入力である。
ブロック506において、連結リストノード構造からの予約ポインタの位置を用いて、予約ポインタは、XML文字列内に開括弧が見つかるまで、減らされる。開括弧文字から予約ポインタの間の情報は、属性文字列を定義する。
ブロック508において、属性文字列は、スペース文字を用いて複数のトークンへ解析される。前に示されたように、一番目のトークンは、タグ名称である。残りのトークンまたは複数のトークンは、幾らかでもあれば、実際の複数の属性である。ブロック510において、一番目のトークンは、属性ではないので廃棄される。
ブロック512において、残りのトークンまたは複数のトークンは、属性名称を属性値から分離させるために、等号文字を用いて解析される。属性名称は、等号の左の複数の文字の全てに等しく、また、属性値は、等号の右の複数の文字の全てに等しい(ブロック514)。
ブロック516において、属性名称は、存在するならば接頭辞を得るために、コロン記号(すなわち、":")を用いて解析される。図5Bの判断ブロック518において、属性名称内にコロン文字が見つかるかどうかが判断される。コロン文字が見つかる場合、コロンの左の全ては、接頭辞名称としてセットされ、コロンの右の全ては、属性名称としてセットされる(ブロック520)。属性名称内にコロン文字が存在しないと判断される場合、ブロック522において、全体のトークンが属性名称としてセットされる。
ブロック524において、属性名称、属性値、および接頭辞名称の長さが決定される。接頭辞名称が存在しない場合、接頭辞名称の長さは、ゼロにセットされる。
ブロック526において、XML文字列内に別の属性が存在する場合、次属性領域264は、次の属性へのポインタとしてセットされる。
図5Cは、図3Aの一例のXML文字列302のための本発明の一実施形態に係る一例の連結リスト属性構造530を説明する。図5Cに示されるように、唯一の属性、すなわち、id="TestValue"は、XML文字列302に含まれる。連結リスト属性構造530内の複数のポインタは、XML文字列302内の位置を指し示す複数の矢印を用いて示される。残りの複数の領域254,258,および262は、それぞれ、属性名称、接頭辞名称、および属性値の長さを示す。XML文字列302は、1つの属性のみを有するので、次属性領域264は、XML文字列302内の位置へのポインタを含まない。
アプリケーションが要素内に含まれるデータへのアクセスを望む場合、一つの実施形態では、アプリケーションは、開始連結リストノード構造をゼロコピー文字列パーサモジュール102へ与える。開始連結リストノード構造内の複数のポインタを用いて、ゼロコピー文字列パーサモジュール102は、終了タグを配置する。他の実施形態では、アプリケーションは、開始および終了連結リストノード構造をゼロコピー文字列パーサモジュール102へ与える。ゼロコピー文字列パーサモジュール102は、データセグメントを決定するために、パーサ102に渡される複数の構造のための開始および終了タグの複数の予約ポインタを使用し、データセグメントをアプリケーションへ返す。
図6Aは、本発明の一実施形態に従って開始および終了連結リストノード構造からデータセグメントを得るための一例の方法を説明するフロー図210である。本発明は、フロー図210に関し、ここで説明される実施形態に制限されない。それどころか、当業者には、ここで提供される複数の内容を読んだ後、他の複数の機能フロー図が本発明の範囲内であることは、明白である。プロセスは、ブロック602で始まり、プロセスは、直ちにブロック604へ進む。
ブロック604において、対応する開始および終了タグのための両方の連結リストノード構造が受け取られる。
ブロック606において、開始および終了タグの複数の予約ポインタを用いて、データセグメントは、決定される。開始タグのための予約ポインタは、閉括弧を指し示し、終了タグのための予約ポインタは、開括弧を指し示す。したがって、データセグメントは、これら2つの予約ポインタの間の全てである。図6Bは、本発明の一実施形態に従って図3Aの一例のXML文字列から抽出されるデータを説明する。InnerTagの開始タグのための予約ポインタ610は、InnerTagの閉括弧を指し示しており、さらに、/InnerTagの終了タグのための予約ポインタ612は、/InnerTagの開または開始括弧を指し示している。したがって、SampleValue614は、複数の予約ポインタ610および612それぞれの間に位置するので、データセグメントである。
ブロック608において、データセグメントは、アプリケーションへ返される。
本発明の複数の実施形態の特定の複数の側面は、ハードウェア、ソフトウェア、またはその組み合わせを用いて実装され、1つ以上のコンピュータシステムまたは他の複数のプロセッシングシステム内に実装される。実際、1つの実施形態において、複数の方法は、複数の携帯できるまたは固定されたコンピュータ、複数のパーソナルディジタルアシスタント(PDA)、複数のセットトップボックス、複数の携帯電話および複数のページャ、ならびにそれぞれがプロセッサ、プロセッサにより読み込み可能な記憶媒体(揮発性および不揮発性メモリおよび/または複数の記憶要素を含む)、少なくとも1つの入力デバイス、および1つ以上の出力デバイスを備える他の複数の電子デバイスなどの複数のプログラム可能マシン上で実行している複数のプログラムで実装される説明された複数の機能を実行するためにおよび出力情報を生成するために、プログラムコードは、入力デバイスを用いて入力されるデータに適用される。出力情報は、1つ以上の出力デバイスに適用される。当業者であれば、本発明の複数の実施形態は、複数のマルチプロセッサシステム、複数のミニコンピュータ、複数のメインフレームコンピュータ、および同様なものを含むさまざまなコンピュータシステム構成で実行されることを理解するだろう。本発明の複数の実施形態は、同様に、複数の分散コンピューティング環境で実行され、複数のタスクは、コミュニケーションネットワークを介してリンクされる複数のリモートプロセッシングデバイスにより実行される。
それぞれのプログラムは、プロセッシングシステムと通信するために、高水準手続き型またはオブジェクト指向プログラミング言語で実装される。しかしながら、所望されれば、複数のプログラムは、アセンブリまたは機械言語で実装される。どんな場合でも、言語は、コンパイルまたは解釈される。
複数のプログラム命令は、複数の命令でプログラムされる汎用または特定用途プロセッシングシステムにここで説明された複数の方法を実行させるために使用される。あるいは、複数の方法は、複数の方法を実行するためのハードウェアロジックを備える特定の複数のハードウェアコンポーネントにより、または複数のプログラムされたコンピュータコンポーネントおよび複数のカスタムハードウェアコンポーネントの任意の組み合わせにより実行される。ここで説明される複数の方法は、プロセッサシステムまたは他の電子デバイスが本複数の方法を実行するようにプログラムするために使用される複数の命令がそこに記憶される機械可読媒体を含むコンピュータプログラム製品として提供される。ここで用いられる用語"機械可読媒体"または"機械アクセス可能媒体"は、機械による実行のために複数の命令の列を記憶またはエンコードでき、機械にここで説明される複数の方法の任意の一つを実行させる任意の媒体を含む。複数の用語"機械可読媒体"および"機械アクセス可能媒体"は、それ故に、複数の半導体メモリ、複数の光学および磁気ディスク、およびデータ信号をエンコードする搬送波を含むが、制限はされない。その上、どのような形(例えば、プログラム、プロシージャ、プロセス、アプリケーション、モジュール、ロジック等)にせよ、動作を起こすまたは結果をもたらすように技術的にソフトウェアについて言及することは、一般的である。このような複数の表現は、単に、プロセッサに行為を遂行させるまたは結果を生成させるプロセッシングシステムによるソフトウェアの実行を述べる簡単な方法である。
上記において、本発明のさまざまな実施形態が説明されたが、それらは、ほんの例として示され、制限ではないことは、理解されるべきである。添付の複数の請求項に定義される本発明の精神および範囲から逸脱することなく、形式および詳細のさまざまな変更がそこになされることは、当業者には理解されるだろう。したがって、本発明の広さおよび範囲は、上記において説明された例の複数の実施形態のいずれかにより制限されるべきではなく、複数の請求項およびそれらの複数の均等物に従って定義されるべきである。

Claims (48)

  1. 複数のマークアップ言語記述を分けるための方法であって、
    文字列パーサが、アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成する段階と、
    前記文字列パーサが、前記入力文字列のシンタックスを検証する段階と、
    前記文字列パーサが、複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成する段階と、
    前記文字列パーサが、要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出する段階と、
    前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放する段階と
    を備え、
    前記複数の連結リストノード構造および前記連結リスト属性構造を解放する段階において、前記文字列パーサは、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
    方法。
  2. 前記複数の連結リストノード構造の中の前記複数のポインタは、タグ名称、名称空間、予約位置、次タグ、親タグ、ピア要素、および終了タグへの1つ以上のポインタを含む
    請求項1に記載の方法。
  3. 前記連結リスト属性構造の中の前記複数のポインタは、属性名称、属性値、接頭辞名称、および次属性への1つ以上のポインタを含む
    請求項1または2に記載の方法。
  4. 前記予約位置への前記ポインタは、開始タグのために次の閉括弧へのポインタおよび終了タグのために開括弧へのポインタを含む
    請求項2に記載の方法。
  5. 前記入力文字列を複数の連結リストノード構造に変形する段階は、
    前記文字列パーサが、XML文字列である前記入力文字列、および、前記XML文字列中の要素である前記複数の要素に含まれるタグの開始を示す文字である区切り文字として開括弧文字を受け取る段階と、
    前記文字列パーサが、前記開括弧の区切り文字を用いて、前記入力文字列を解析して、前記複数の要素に含まれるタグの開始を表す複数のトークンのリストを得る段階と、
    前記文字列パーサが、前記複数のトークンの連結リストを返す段階と、
    前記文字列パーサが、1つの連結リストノード構造を提供するために前記連結リストのそれぞれのトークンを解析する段階と
    を有する請求項1から4のいずれかに記載の方法。
  6. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記文字列パーサが、前記トークンがスラッシュ("/")で始まるかどうかを判断する段階と、
    前記トークンが前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の開始タグ領域をセットし、前記トークンが前記スラッシュで始まる場合に、前記文字列パーサが前記開始タグ領域を消去する段階と、
    スペース文字が前記トークンの中で見つかった場合に、前記文字列パーサが、前記トークンを一番目の部分および二番目の部分に分けるために、前記区切り文字として前記スペース文字を用いて前記トークンを解析する段階と、
    前記スペース文字が前記トークンの中で見つかった場合には、
    前記文字列パーサが、前記トークンの前記一番目の部分の中の一番目の文字から前記トークンの前記一番目の部分の中のコロンに先立つ文字にわたる長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタを前記トークンの前記一番目の部分の中の一番目の文字にセットし、前記コロンの右の文字から前記トークンの前記一番目の部分の最後の文字にわたる長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの前記一番目の部分の中の前記コロンの右の文字にセットして、
    前記スペース文字が前記トークンの中で見つからなかった場合には、
    前記文字列パーサが、前記トークンの長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの中の前記複数の文字にセットし、ゼロの長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタをnullポインタとしてセットする、段階と、
    前記文字列パーサが、前記連結リストノード構造の中の次領域ポインタが前記次のトークンの先頭を指し示すようにセットする段階と
    を含む請求項5に記載の方法。
  7. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記トークンが開始タグの場合に、前記文字列パーサが、前記連結リストノード構造の中の予約ポインタが前記トークンの最後の閉括弧を指し示すようにセットし、前記トークンが終了タグの場合に、前記文字列パーサが、前記予約ポインタが前記トークンの先頭の開括弧を指し示すようにセットする段階
    をさらに含む請求項6に記載の方法。
  8. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記文字列パーサが、前記トークンの前記二番目の部分の一番目の文字が前記スラッシュで始まっているかどうかを判断する段階と、
    前記トークンの前記二番目の部分が前記スラッシュで始まっている場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域をセットし、前記トークンの前記二番目の部分が前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域を消去する段階と
    をさらに含む請求項6または7に記載の方法。
  9. 前記入力文字列のシンタックスを検証する段階は、
    前記文字列パーサが、スタックを初期化する段階と、
    前記文字列パーサが、前記入力文字列のための前記連結リストノード構造を受け取る段階と、
    前記文字列パーサが、受け取った前記連結リストノード構造が開始タグおよび終了タグのいずれを表すかを判断する段階と、
    前記連結リストノード構造が現在の開始タグを表す場合には、前記文字列パーサが、前記連結リストノード構造の中の親領域を前記スタックの上部の前記開始タグへのポインタで満たし、前記現在の開始タグを前記スタックに置き、前記連結リストノード構造が現在の終了タグを表す場合には、前記文字列パーサが、前記スタックの前記上部の前記開始タグをポップオフし、前記連結リストノード構造の中のピア領域を前記現在の終了タグの次領域ポインタへのポインタで満たして、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合するかどうかを判断する段階と、
    前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合しない場合に、前記文字列パーサが前記入力文字列を無効であるとし、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合する場合に、前記文字列パーサが、前記入力文字列を有効であるとするとともに前記連結リストノード構造の終了タグを前記現在の終了タグで満たす段階と、
    前記入力文字列が有効であり、かつ、前記連結リストノード構造が前記入力文字列のための最後の連結リストノード構造でない場合に、前記スタックの前記初期化を除き、前記文字列パーサが、前記入力文字列からの前記次の連結リストノード構造を用いて、上記プロセスを繰り返す段階と
    を有する請求項1から8のいずれかに記載の方法。
  10. 前記連結リスト属性構造を前記メモリに作成する段階は、
    前記文字列パーサが、開始タグのための連結リストノード構造を受け取る段階と、
    前記文字列パーサが、前記連結リストノード構造の中の予約ポインタを用いて、開括弧文字と前記予約ポインタとの間の文字で属性文字列が表されるよう、前記開括弧文字が前記入力文字列の中で見つかるまで前記予約ポインタの位置をデクリメントする段階と、
    前記文字列パーサが、前記属性文字列の一番目の部分および前記属性文字列の二番目の部分を提供するために、区切り文字としてスペース文字を用いて前記属性文字列を解析する段階と、
    前記文字列パーサが、前記属性文字列の前記一番目の部分を廃棄する段階と、
    前記文字列パーサが、前記区切り文字として等号を用いて、前記属性文字列の前記二番目の部分を解析する段階と、
    前記文字列パーサが、前記連結リスト属性構造の中の属性値ポインタを前記属性文字列の前記二番目の部分の前記等号の後の一番目の文字へセットして、属性値長を、前記属性文字列の前記二番目の部分の前記一番目の文字から前記属性文字列の前記二番目の部分の最後にわたる長さにする段階と、
    前記文字列パーサが、前記区切り文字としてコロンを用いて、前記属性文字列の前記一番目の部分を解析する段階と、
    前記文字列パーサが、前記連結リスト属性構造の中の次属性領域が前記入力文字列の中の前記次の属性を指し示すようにセットする段階と
    を有し、
    前記区切り文字としてコロンを用いて前記属性文字列の前記一番目の部分を解析する段階は、
    前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の接頭辞名称ポインタを前記属性文字列の前記一番目の部分の中の一番目の文字へセットして、接頭辞名称の長さを、前記属性文字列の前記一番目の部分の中の前記一番目の文字から前記属性文字列の前記一番目の部分の中の前記コロンに先立つ文字にわたる長さにし、前記連結リスト属性構造の中の属性名称ポインタを前記属性文字列の前記一番目の部分の中の前記コロンの後の一番目の文字へセットして、属性名称の長さを、前記属性文字列の前記一番目の部分の中の前記コロンの後の前記一番目の文字から前記属性文字列の前記一番目の部分の最後の文字にわたる長さにする段階と、
    前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つからなかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の前記接頭辞名称ポインタをnullポインタとしてセットして、前記接頭辞名称の長さをゼロにし、前記文字列パーサが、前記連結リスト属性構造の中の前記属性名称ポインタを前記属性文字列の前記一番目の部分の前記一番目の文字としてセットして、前記属性名称の長さを前記属性文字列の前記一番目の部分の長さにする段階と
    を含む請求項1から9のいずれかに記載の方法。
  11. 前記要素内容を抽出する段階は、
    前記文字列パーサが、対応する開始タグおよび終了タグのための前記複数の連結リストノード構造を受け取る段階と、
    前記文字列パーサが、前記複数の連結リストノード構造の前記開始および終了タグの複数の予約ポインタを使用して、前記開始タグの前記予約ポインタおよび前記終了タグの前記予約ポインタの間の文字列を前記要素内容として決定する段階と
    を有する請求項1から10のいずれかに記載の方法。
  12. 前記入力文字列は、XML(拡張可能マークアップ言語)入力文字列を含む
    請求項1から11のいずれかに記載の方法。
  13. 前記入力文字列のシンタックスを検証する段階において、前記文字列パーサは、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
    請求項1から8のいずれかに記載の方法。
  14. 前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
    請求項1から9、13のいずれかに記載の方法。
  15. 前記連結リスト属性構造をメモリに作成する段階は、
    前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する段階と、
    前記文字列パーサが、前記連結リスト属性構造を前記アプリケーションに返却する段階と
    を有する請求項14に記載の方法。
  16. 前記要素内容を抽出する段階において、
    前記文字列パーサは、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
    請求項1から10、13から15のいずれかに記載の方法。
  17. 前記要素内容を抽出する段階は、
    前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する段階と、
    前記文字列パーサが、前記要素内容を前記アプリケーションに返却する段階と
    を有する請求項16に記載の方法。
  18. 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
    前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、
    前記要素内容を抽出する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記要素内容を抽出する
    請求項1から9、13から17のいずれかに記載の方法。
  19. 複数のマークアップ言語記述を分けるための方法をコンピュータに実行させるためのプログラムであって、
    前記複数のマークアップ言語記述を分けるための方法は、
    文字列パーサが、アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成する段階と、
    前記文字列パーサが、前記入力文字列のシンタックスを検証する段階と、
    前記文字列パーサが、複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成する段階と、
    前記文字列パーサが、要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出する段階と、
    前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放する段階と
    を備え、
    前記複数の連結リストノード構造および前記連結リスト属性構造を解放させる段階において、前記文字列パーサは、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
    プログラム。
  20. 前記複数の連結リストノード構造の中の前記複数のポインタは、タグ名称、名称空間、予約位置、次タグ、親タグ、ピア要素、および終了タグへの1つ以上のポインタを含む請求項19に記載のプログラム。
  21. 前記複数の連結リスト属性構造の中の前記複数のポインタは、属性名称、属性値、接頭辞名称、および次属性への1つ以上のポインタを含む
    請求項19または20に記載のプログラム。
  22. 前記予約位置への前記ポインタは、開始タグのために次の閉括弧へのポインタおよび終了タグのために開括弧へのポインタを含む
    請求項20に記載のプログラム。
  23. 前記入力文字列を複数の連結リストノード構造に変形する段階は、
    前記文字列パーサが、XML文字列である前記入力文字列、および、前記XML文字列中の要素である前記複数の要素に含まれるタグの開始を示す文字である区切り文字として開括弧文字を受け取る段階と、
    前記文字列パーサが、前記開括弧の区切り文字を用いて、前記入力文字列を解析して、前記複数の要素に含まれるタグの開始を表す複数のトークンのリストを得る段階と、
    前記文字列パーサが、前記複数のトークンの連結リストを返す段階と、
    前記文字列パーサが、1つの連結リストノード構造を提供するために前記連結リストのそれぞれのトークンを解析する段階と
    を有する請求項19から22のいずれかに記載のプログラム。
  24. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記文字列パーサが、前記トークンがスラッシュ("/")で始まるかどうかを判断する段階と、
    前記トークンが前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の開始タグ領域をセットし、および前記トークンが前記スラッシュで始まる場合に、前記文字列パーサが前記開始タグ領域を消去する段階と、
    スペース文字が前記トークンの中で見つかった場合に、前記文字列パーサが、前記トークンを一番目の部分および二番目の部分に分けるために、前記区切り文字として前記スペース文字を用いて前記トークンを解析する段階と
    前記スペース文字が前記トークンの中で見つかった場合には、
    前記文字列パーサが、前記トークンの前記一番目の部分の中の一番目の文字から前記トークンの前記一番目の部分の中のコロンに先立つ文字にわたる長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタを前記トークンの前記一番目の部分の中の一番目の文字にセットし、前記コロンの右の文字から前記トークンの前記一番目の部分の最後の文字にわたる長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの前記一番目の部分の中の前記コロンの右の文字にセットして、
    前記スペース文字が前記トークンの中で見つからなかった場合には、
    前記文字列パーサが、前記トークンの長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの中の前記複数の文字にセットし、ゼロの長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタをnullポインタとしてセットする、段階と、
    前記文字列パーサが、前記連結リストノード構造の中の次領域ポインタが前記次のトークンの先頭を指し示すようにセットする段階と
    を含む請求項23に記載のプログラム。
  25. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記トークンが開始タグの場合に、前記文字列パーサが、前記連結リストノード構造の中の予約ポインタが前記トークンの最後の閉括弧を指し示すようにセットし、前記トークンが終了タグの場合に、前記文字列パーサが、前記予約ポインタが前記トークンの先頭の開括弧を指し示すようにセットする段階
    をさらに含む請求項24に記載のプログラム。
  26. 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
    前記文字列パーサが、前記トークンの前記二番目の部分の一番目の文字が前記スラッシュで始まっているかどうかを判断する段階と、
    前記トークンの前記二番目の部分が前記スラッシュで始まっている場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域をセットし、前記トークンの前記二番目の部分が前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域を消去する段階と
    をさらに含む請求項24または25に記載のプログラム。
  27. 前記入力文字列のシンタックスを検証する段階は、
    前記文字列パーサが、スタックを初期化する段階と、
    前記文字列パーサが、前記入力文字列のための前記連結リストノード構造を受け取る段階と、
    前記文字列パーサが、受け取った前記連結リストノード構造が開始タグおよび終了タグのいずれ表すかを判断する段階と
    前記連結リストノード構造が現在の開始タグを表す場合には、前記文字列パーサが、前記連結リストノード構造の中の親領域を前記スタックの上部の前記開始タグへのポインタで満たし、前記現在の開始タグを前記スタックに置き、前記連結リストノード構造が現在の終了タグを表す場合には、前記文字列パーサが、前記スタックの前記上部の前記開始タグをポップオフし、前記連結リストノード構造の中のピア領域を前記現在の終了タグの次領域ポインタへのポインタで満たして、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合するかどうかを判断する段階と、
    前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合しない場合に、前記文字列パーサが前記入力文字列を無効であるとし、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合する場合に、前記文字列パーサが、前記入力文字列を有効であるとするとともに前記連結リストノード構造の終了タグを前記現在の終了タグで満たす段階と、
    前記入力文字列が有効であり、かつ、前記連結リストノード構造が前記入力文字列のための最後の連結リストノード構造でない場合に、前記スタックの前記初期化を除き、前記文字列パーサが、前記入力文字列からの前記次の連結リストノード構造を用いて、上記プロセスを繰り返す段階と
    を有する請求項19から26のいずれかに記載のプログラム。
  28. 前記連結リスト属性構造を前記メモリに作成する段階は、
    前記文字列パーサが、開始タグのための連結リストノード構造を受け取る段階と、
    前記文字列パーサが、前記連結リストノード構造の中の予約ポインタを用いて、開括弧文字と前記予約ポインタとの間の文字で属性文字列が表されるよう、前記開括弧文字が前記入力文字列の中で見つかるまで、前記予約ポインタの位置をデクリメントする段階と、
    前記文字列パーサが、前記属性文字列の一番目の部分および前記属性文字列の二番目の部分を提供するために、区切り文字としてスペース文字を用いて前記属性文字列を解析する段階と、
    前記文字列パーサが、前記属性文字列の前記一番目の部分を廃棄する段階と、
    前記文字列パーサが、前記区切り文字として等号を用いて、前記属性文字列の前記二番目の部分を解析する段階と、
    前記文字列パーサが、前記連結リスト属性構造の中の属性値ポインタを前記属性文字列の前記二番目の部分の前記等号の後の一番目の文字へセットして、属性値長を、前記属性文字列の前記二番目の部分の前記一番目の文字から前記属性文字列の前記二番目の部分の最後にわたる長さにする段階と、
    前記文字列パーサが、前記区切り文字としてコロンを用いて、前記属性文字列の前記一番目の部分を解析する段階と、
    前記文字列パーサが、前記連結リスト属性構造の中の次属性領域が前記入力文字列の中の前記次の属性を指し示すようにセットする段階と
    を有し、
    前記区切り文字としてコロンを用いて前記属性文字列の前記一番目の部分を解析する段階は、
    前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の接頭辞名称ポインタを前記属性文字列の前記一番目の部分の中の一番目の文字へセットして、接頭辞名称の長さを、前記属性文字列の前記一番目の部分の中の前記一番目の文字から前記属性文字列の前記一番目の部分の中の前記コロンに先立つ文字にわたる長さにし、前記連結リスト属性構造の中の属性名称ポインタを前記属性文字列の前記一番目の部分の中の前記コロンの後の一番目の文字へセットして、属性名称の長さを、前記属性文字列の前記一番目の部分の中の前記コロンの後の前記一番目の文字から前記属性文字列の前記一番目の部分の最後の文字にわたる長さにする段階と、
    前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つからなかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の前記接頭辞名称ポインタをnullポインタとしてセットして、前記接頭辞名称の長さをゼロにし、前記文字列パーサが、前記連結リスト属性構造の中の前記属性名称ポインタを前記属性文字列の前記一番目の部分の前記一番目の文字としてセットして、前記属性名称の長さを前記属性文字列の前記一番目の部分の長さにする段階と
    を含む請求項19から27のいずれかに記載のプログラム。
  29. 前記要素内容を抽出する段階は、
    前記文字列パーサが、対応する開始タグおよび終了タグのための前記複数の連結リストノード構造を受け取る段階と、
    前記文字列パーサが、前記複数の連結リストノード構造の前記開始および終了タグの複数の予約ポインタを使用して、前記開始タグの前記予約ポインタおよび前記終了タグの前記予約ポインタの間の文字列を前記要素内容として決定する段階と
    を有する請求項19から28のいずれかに記載のプログラム。
  30. 前記入力文字列は、XML(拡張可能マークアップ言語)入力文字列を含む
    請求項19から28のいずれかに記載のプログラム。
  31. 前記入力文字列のシンタックスを検証する段階において、前記文字列パーサは、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
    請求項19から26のいずれかに記載のプログラム。
  32. 前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
    請求項19から27、31のいずれかに記載のプログラム。
  33. 前記連結リスト属性構造をメモリに作成する段階は、
    前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する段階と、
    前記文字列パーサが、前記連結リスト属性構造を前記アプリケーションに返却する段階と
    を有する請求項32に記載のプログラム。
  34. 前記要素内容を抽出する段階において、
    前記文字列パーサは、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
    請求項19から28、31から33のいずれかに記載のプログラム。
  35. 前記要素内容を抽出する段階は、
    前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する段階と、
    前記文字列パーサが、前記要素内容を前記アプリケーションに返却する段階と
    を有する請求項34に記載のプログラム。
  36. 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
    前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、
    前記要素内容を抽出する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記要素内容を抽出する
    請求項19から27、31から35のいずれかに記載のプログラム。
  37. 複数のマークアップ言語記述を分けるためのシステムであって、
    プロセッサに接続されたメモリと、
    前記プロセッサ上で動作するゼロコピー文字列パーサ、および、前記ゼロコピー文字列パーサに結合され、アプリケーションからの入力文字列を、前記入力文字列をメモリに前記コピーすることなく解析するために前記ゼロコピー文字列パーサと対話するロジックパーサとを有する文字列パーサと
    を備え、
    前記文字列パーサは、
    前記アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成し、
    前記入力文字列のシンタックスを検証し、
    複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成し、
    要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出し、
    前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放し、
    前記文字列パーサは、前記複数の連結リストノード構造および前記連結リスト属性構造を解放する場合に、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
    システム。
  38. 前記ゼロコピー文字列パーサは、シングルパスパーサである
    請求項37に記載のシステム。
  39. 前記ロジックパーサは、XML(拡張可能マークアップ言語)文字列を解析するために要求されるロジックを有する
    請求項37または38に記載のシステム。
  40. 前記入力文字列は、前記入力文字列に関連する長さを有し、
    前記ロジックパーサは、前記ゼロコピー文字列パーサが前記入力文字列を1つ以上の連結リストノード構造に解析することを可能にするために、区切り文字を前記ゼロコピー文字列パーサに提供する
    請求項37から39のいずれかに記載のシステム。
  41. 前記1つ以上の連結リストノード構造は、前記ゼロコピー文字列パーサがさらに複数の連結リスト属性構造を作成するために複数のポインタを用いて前記入力文字列を解析することを可能にするために、前記入力文字列への複数のポインタを有し、
    前記複数の連結リスト属性構造は、前記入力文字列の中で見つかる1つ以上の属性への付加的な複数のポインタを含む
    請求項40に記載のシステム。
  42. 前記1つ以上の連結リストノード構造は、前記ゼロコピー文字列パーサが前記入力文字列に含まれる要素の中の要素内容を抽出するために前記入力文字列をさらに解析することを可能にするために、前記入力文字列への複数の予約ポインタを備える
    請求項40または41に記載のシステム。
  43. 前記文字列パーサは、前記入力文字列のシンタックスを検証する場合に、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
    請求項37に記載のシステム。
  44. 前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
    請求項37または43に記載のシステム。
  45. 前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成し、前記連結リスト属性構造を前記アプリケーションに返却する
    請求項44に記載のシステム。
  46. 前記文字列パーサは、前記要素内容を抽出する場合に、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
    請求項37、43から45のいずれかに記載のシステム。
  47. 前記文字列パーサは、前記要素内容を抽出する場合に、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出し、前記要素内容を前記アプリケーションに返却する
    請求項46に記載のシステム。
  48. 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
    前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、前記要素内容を抽出する場合に、前記予約位置のポインタを用いて前記要素内容を抽出する
    請求項37、43から47のいずれかに記載のシステム。
JP2006543885A 2003-12-18 2004-12-01 効果的な省スペースxmlパーシング Expired - Fee Related JP4688816B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/741,299 US20050138542A1 (en) 2003-12-18 2003-12-18 Efficient small footprint XML parsing
US10/741,299 2003-12-18
PCT/US2004/040277 WO2005064461A1 (en) 2003-12-18 2004-12-01 Efficient small footprint xml parsing

Publications (2)

Publication Number Publication Date
JP2007514239A JP2007514239A (ja) 2007-05-31
JP4688816B2 true JP4688816B2 (ja) 2011-05-25

Family

ID=34678108

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006543885A Expired - Fee Related JP4688816B2 (ja) 2003-12-18 2004-12-01 効果的な省スペースxmlパーシング

Country Status (5)

Country Link
US (1) US20050138542A1 (ja)
EP (1) EP1695211A1 (ja)
JP (1) JP4688816B2 (ja)
CN (1) CN100444117C (ja)
WO (1) WO2005064461A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7512592B2 (en) * 2004-07-02 2009-03-31 Tarari, Inc. System and method of XML query processing
US8996991B2 (en) * 2005-02-11 2015-03-31 Fujitsu Limited System and method for displaying an acceptance status
US7500184B2 (en) * 2005-02-11 2009-03-03 Fujitsu Limited Determining an acceptance status during document parsing
US7992081B2 (en) * 2006-04-19 2011-08-02 Oracle International Corporation Streaming validation of XML documents
US20080092037A1 (en) * 2006-10-16 2008-04-17 Oracle International Corporation Validation of XML content in a streaming fashion
US8752045B2 (en) * 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US20080235258A1 (en) 2007-03-23 2008-09-25 Hyen Vui Chung Method and Apparatus for Processing Extensible Markup Language Security Messages Using Delta Parsing Technology
US8005848B2 (en) * 2007-06-28 2011-08-23 Microsoft Corporation Streamlined declarative parsing
US8037096B2 (en) * 2007-06-29 2011-10-11 Microsoft Corporation Memory efficient data processing
JP4898615B2 (ja) * 2007-09-20 2012-03-21 キヤノン株式会社 情報処理装置および符号化方法
US8522136B1 (en) * 2008-03-31 2013-08-27 Sonoa Networks India (PVT) Ltd. Extensible markup language (XML) document validation
CN101976244B (zh) * 2010-09-30 2012-09-05 飞天诚信科技股份有限公司 对xml报文中的节点进行划分及其对其应用的方法
US8984396B2 (en) * 2010-11-01 2015-03-17 Architecture Technology Corporation Identifying and representing changes between extensible markup language (XML) files using symbols with data element indication and direction indication
CN104424334A (zh) * 2013-09-11 2015-03-18 方正信息产业控股有限公司 Xml文档节点的构建方法和装置
US20170132278A1 (en) * 2015-11-09 2017-05-11 Nec Laboratories America, Inc. Systems and Methods for Inferring Landmark Delimiters for Log Analysis

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057143A (ja) * 1998-08-10 2000-02-25 Seiko Epson Corp 文章構造解析方法及び文章構造解析装置並びに文章構造解析処理プログラムを記録した記録媒体
JP2000331021A (ja) * 1999-05-21 2000-11-30 Nec Corp 構造化文書管理システム及び方法並びに記録媒体
JP2003288263A (ja) * 2002-03-28 2003-10-10 Foundation For Nara Institute Of Science & Technology データベース管理装置、データベース管理プログラム及びそのプログラムを記録したコンピュータ、読み取り可能な記録媒体
WO2005006192A1 (ja) * 2003-07-10 2005-01-20 Fujitsu Limited 構造化文書処理方法及び装置並びに記憶媒体

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3724847B2 (ja) * 1995-06-05 2005-12-07 株式会社日立製作所 構造化文書差分抽出方法および装置
GB2333411B (en) * 1998-01-14 2002-07-17 Ibm Document scanning system
US6763499B1 (en) * 1999-07-26 2004-07-13 Microsoft Corporation Methods and apparatus for parsing extensible markup language (XML) data streams
US6581063B1 (en) * 2000-06-15 2003-06-17 International Business Machines Corporation Method and apparatus for maintaining a linked list
US20020099734A1 (en) * 2000-11-29 2002-07-25 Philips Electronics North America Corp. Scalable parser for extensible mark-up language
CA2504491A1 (en) * 2002-10-29 2004-05-13 Lockheed Martin Corporation Hardware accelerated validating parser
CA2418670A1 (en) * 2003-02-11 2004-08-11 Ibm Canada Limited - Ibm Canada Limitee Method and system for generating executable code for formatiing and printing complex data structures
WO2005008473A2 (en) * 2003-07-11 2005-01-27 Computer Associates Think, Inc. System and method for using an xml file to control xml to entity/relationship transformation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057143A (ja) * 1998-08-10 2000-02-25 Seiko Epson Corp 文章構造解析方法及び文章構造解析装置並びに文章構造解析処理プログラムを記録した記録媒体
JP2000331021A (ja) * 1999-05-21 2000-11-30 Nec Corp 構造化文書管理システム及び方法並びに記録媒体
JP2003288263A (ja) * 2002-03-28 2003-10-10 Foundation For Nara Institute Of Science & Technology データベース管理装置、データベース管理プログラム及びそのプログラムを記録したコンピュータ、読み取り可能な記録媒体
WO2005006192A1 (ja) * 2003-07-10 2005-01-20 Fujitsu Limited 構造化文書処理方法及び装置並びに記憶媒体

Also Published As

Publication number Publication date
CN100444117C (zh) 2008-12-17
WO2005064461A1 (en) 2005-07-14
US20050138542A1 (en) 2005-06-23
CN1898644A (zh) 2007-01-17
EP1695211A1 (en) 2006-08-30
JP2007514239A (ja) 2007-05-31

Similar Documents

Publication Publication Date Title
JP4688816B2 (ja) 効果的な省スペースxmlパーシング
US9626345B2 (en) XML streaming transformer (XST)
US7356764B2 (en) System and method for efficient processing of XML documents represented as an event stream
US9026903B1 (en) Abstract syntax tree interpreter for generating a valid HTML document
US6859810B2 (en) Declarative specification and engine for non-isomorphic data mapping
US6658624B1 (en) Method and system for processing documents controlled by active documents with embedded instructions
US8261241B2 (en) Converting format strings to regular expressions
KR101110988B1 (ko) 구조적 데이터 변환을 위한 장치
US8117530B2 (en) Extensible markup language parsing using multiple XML parsers
US8397157B2 (en) Context-free grammar
JP4997777B2 (ja) デリミタを減少させる方法及びシステム
JP2004178602A (ja) 階層構造化データをインポートし、エクスポートする方法及びコンピュータ可読媒体
JP2008052662A (ja) 構造化文書管理システム及びプログラム
US20070234199A1 (en) Apparatus and method for compact representation of XML documents
US20050038816A1 (en) Methods, systems and computer program prodcuts for validation of XML instance documents using JAVA classloaders
US9021348B1 (en) Composition of templates using transclusion that guarantee a valid HTML document
JP5044942B2 (ja) 文書分析において受付状態を決定するシステム及び方法
JP2006323821A (ja) コンパイル済みスキーマに順次アクセスする方法とシステム
US20090083294A1 (en) Efficient xml schema validation mechanism for similar xml documents
JP5044943B2 (ja) データ文書の高速符号化方法及びシステム
JP5789236B2 (ja) 構造化文書分析方法、構造化文書分析プログラム、および構造化文書分析システム
Barabucci et al. Embedding semantic annotations within texts: the FRETTA approach
JP2006221652A (ja) 符号化文書復号方法及びシステム
US20130167004A1 (en) Asynchronous Access to Structured Data
US7418659B2 (en) System and method for declaring a resource within a markup document

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090217

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090602

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090901

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091001

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091008

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091023

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100428

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100511

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100608

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100701

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100730

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20101004

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110215

R150 Certificate of patent or registration of utility model

Ref document number: 4688816

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140225

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees