JP4688816B2 - 効果的な省スペースxmlパーシング - Google Patents
効果的な省スペースxmlパーシング Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
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
<u:ElementTag id=""TestValue">
<InnerTag>SampleValue</InnerTag>
<AnotherTag>AnotherValue</AnotherTag>
</u:ElementTag>
上の例において、InnerTagおよびAnotherTagは複数のピアである。InnerTagおよびAnotherTagは、同様に両方とも、u:ElementTagの子供たちである。プロセスは、判断ブロック420へ進む。
Claims (48)
- 複数のマークアップ言語記述を分けるための方法であって、
文字列パーサが、アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成する段階と、
前記文字列パーサが、前記入力文字列のシンタックスを検証する段階と、
前記文字列パーサが、複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成する段階と、
前記文字列パーサが、要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出する段階と、
前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放する段階と
を備え、
前記複数の連結リストノード構造および前記連結リスト属性構造を解放する段階において、前記文字列パーサは、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
方法。 - 前記複数の連結リストノード構造の中の前記複数のポインタは、タグ名称、名称空間、予約位置、次タグ、親タグ、ピア要素、および終了タグへの1つ以上のポインタを含む
請求項1に記載の方法。 - 前記連結リスト属性構造の中の前記複数のポインタは、属性名称、属性値、接頭辞名称、および次属性への1つ以上のポインタを含む
請求項1または2に記載の方法。 - 前記予約位置への前記ポインタは、開始タグのために次の閉括弧へのポインタおよび終了タグのために開括弧へのポインタを含む
請求項2に記載の方法。 - 前記入力文字列を複数の連結リストノード構造に変形する段階は、
前記文字列パーサが、XML文字列である前記入力文字列、および、前記XML文字列中の要素である前記複数の要素に含まれるタグの開始を示す文字である区切り文字として開括弧文字を受け取る段階と、
前記文字列パーサが、前記開括弧の区切り文字を用いて、前記入力文字列を解析して、前記複数の要素に含まれるタグの開始を表す複数のトークンのリストを得る段階と、
前記文字列パーサが、前記複数のトークンの連結リストを返す段階と、
前記文字列パーサが、1つの連結リストノード構造を提供するために前記連結リストのそれぞれのトークンを解析する段階と
を有する請求項1から4のいずれかに記載の方法。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記文字列パーサが、前記トークンがスラッシュ("/")で始まるかどうかを判断する段階と、
前記トークンが前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の開始タグ領域をセットし、前記トークンが前記スラッシュで始まる場合に、前記文字列パーサが前記開始タグ領域を消去する段階と、
スペース文字が前記トークンの中で見つかった場合に、前記文字列パーサが、前記トークンを一番目の部分および二番目の部分に分けるために、前記区切り文字として前記スペース文字を用いて前記トークンを解析する段階と、
前記スペース文字が前記トークンの中で見つかった場合には、
前記文字列パーサが、前記トークンの前記一番目の部分の中の一番目の文字から前記トークンの前記一番目の部分の中のコロンに先立つ文字にわたる長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタを前記トークンの前記一番目の部分の中の一番目の文字にセットし、前記コロンの右の文字から前記トークンの前記一番目の部分の最後の文字にわたる長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの前記一番目の部分の中の前記コロンの右の文字にセットして、
前記スペース文字が前記トークンの中で見つからなかった場合には、
前記文字列パーサが、前記トークンの長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの中の前記複数の文字にセットし、ゼロの長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタをnullポインタとしてセットする、段階と、
前記文字列パーサが、前記連結リストノード構造の中の次領域ポインタが前記次のトークンの先頭を指し示すようにセットする段階と
を含む請求項5に記載の方法。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記トークンが開始タグの場合に、前記文字列パーサが、前記連結リストノード構造の中の予約ポインタが前記トークンの最後の閉括弧を指し示すようにセットし、前記トークンが終了タグの場合に、前記文字列パーサが、前記予約ポインタが前記トークンの先頭の開括弧を指し示すようにセットする段階
をさらに含む請求項6に記載の方法。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記文字列パーサが、前記トークンの前記二番目の部分の一番目の文字が前記スラッシュで始まっているかどうかを判断する段階と、
前記トークンの前記二番目の部分が前記スラッシュで始まっている場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域をセットし、前記トークンの前記二番目の部分が前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域を消去する段階と
をさらに含む請求項6または7に記載の方法。 - 前記入力文字列のシンタックスを検証する段階は、
前記文字列パーサが、スタックを初期化する段階と、
前記文字列パーサが、前記入力文字列のための前記連結リストノード構造を受け取る段階と、
前記文字列パーサが、受け取った前記連結リストノード構造が開始タグおよび終了タグのいずれを表すかを判断する段階と、
前記連結リストノード構造が現在の開始タグを表す場合には、前記文字列パーサが、前記連結リストノード構造の中の親領域を前記スタックの上部の前記開始タグへのポインタで満たし、前記現在の開始タグを前記スタックに置き、前記連結リストノード構造が現在の終了タグを表す場合には、前記文字列パーサが、前記スタックの前記上部の前記開始タグをポップオフし、前記連結リストノード構造の中のピア領域を前記現在の終了タグの次領域ポインタへのポインタで満たして、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合するかどうかを判断する段階と、
前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合しない場合に、前記文字列パーサが前記入力文字列を無効であるとし、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合する場合に、前記文字列パーサが、前記入力文字列を有効であるとするとともに前記連結リストノード構造の終了タグを前記現在の終了タグで満たす段階と、
前記入力文字列が有効であり、かつ、前記連結リストノード構造が前記入力文字列のための最後の連結リストノード構造でない場合に、前記スタックの前記初期化を除き、前記文字列パーサが、前記入力文字列からの前記次の連結リストノード構造を用いて、上記プロセスを繰り返す段階と
を有する請求項1から8のいずれかに記載の方法。 - 前記連結リスト属性構造を前記メモリに作成する段階は、
前記文字列パーサが、開始タグのための連結リストノード構造を受け取る段階と、
前記文字列パーサが、前記連結リストノード構造の中の予約ポインタを用いて、開括弧文字と前記予約ポインタとの間の文字で属性文字列が表されるよう、前記開括弧文字が前記入力文字列の中で見つかるまで前記予約ポインタの位置をデクリメントする段階と、
前記文字列パーサが、前記属性文字列の一番目の部分および前記属性文字列の二番目の部分を提供するために、区切り文字としてスペース文字を用いて前記属性文字列を解析する段階と、
前記文字列パーサが、前記属性文字列の前記一番目の部分を廃棄する段階と、
前記文字列パーサが、前記区切り文字として等号を用いて、前記属性文字列の前記二番目の部分を解析する段階と、
前記文字列パーサが、前記連結リスト属性構造の中の属性値ポインタを前記属性文字列の前記二番目の部分の前記等号の後の一番目の文字へセットして、属性値長を、前記属性文字列の前記二番目の部分の前記一番目の文字から前記属性文字列の前記二番目の部分の最後にわたる長さにする段階と、
前記文字列パーサが、前記区切り文字としてコロンを用いて、前記属性文字列の前記一番目の部分を解析する段階と、
前記文字列パーサが、前記連結リスト属性構造の中の次属性領域が前記入力文字列の中の前記次の属性を指し示すようにセットする段階と
を有し、
前記区切り文字としてコロンを用いて前記属性文字列の前記一番目の部分を解析する段階は、
前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の接頭辞名称ポインタを前記属性文字列の前記一番目の部分の中の一番目の文字へセットして、接頭辞名称の長さを、前記属性文字列の前記一番目の部分の中の前記一番目の文字から前記属性文字列の前記一番目の部分の中の前記コロンに先立つ文字にわたる長さにし、前記連結リスト属性構造の中の属性名称ポインタを前記属性文字列の前記一番目の部分の中の前記コロンの後の一番目の文字へセットして、属性名称の長さを、前記属性文字列の前記一番目の部分の中の前記コロンの後の前記一番目の文字から前記属性文字列の前記一番目の部分の最後の文字にわたる長さにする段階と、
前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つからなかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の前記接頭辞名称ポインタをnullポインタとしてセットして、前記接頭辞名称の長さをゼロにし、前記文字列パーサが、前記連結リスト属性構造の中の前記属性名称ポインタを前記属性文字列の前記一番目の部分の前記一番目の文字としてセットして、前記属性名称の長さを前記属性文字列の前記一番目の部分の長さにする段階と
を含む請求項1から9のいずれかに記載の方法。 - 前記要素内容を抽出する段階は、
前記文字列パーサが、対応する開始タグおよび終了タグのための前記複数の連結リストノード構造を受け取る段階と、
前記文字列パーサが、前記複数の連結リストノード構造の前記開始および終了タグの複数の予約ポインタを使用して、前記開始タグの前記予約ポインタおよび前記終了タグの前記予約ポインタの間の文字列を前記要素内容として決定する段階と
を有する請求項1から10のいずれかに記載の方法。 - 前記入力文字列は、XML(拡張可能マークアップ言語)入力文字列を含む
請求項1から11のいずれかに記載の方法。 - 前記入力文字列のシンタックスを検証する段階において、前記文字列パーサは、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
請求項1から8のいずれかに記載の方法。 - 前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
請求項1から9、13のいずれかに記載の方法。 - 前記連結リスト属性構造をメモリに作成する段階は、
前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する段階と、
前記文字列パーサが、前記連結リスト属性構造を前記アプリケーションに返却する段階と
を有する請求項14に記載の方法。 - 前記要素内容を抽出する段階において、
前記文字列パーサは、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
請求項1から10、13から15のいずれかに記載の方法。 - 前記要素内容を抽出する段階は、
前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する段階と、
前記文字列パーサが、前記要素内容を前記アプリケーションに返却する段階と
を有する請求項16に記載の方法。 - 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、
前記要素内容を抽出する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記要素内容を抽出する
請求項1から9、13から17のいずれかに記載の方法。 - 複数のマークアップ言語記述を分けるための方法をコンピュータに実行させるためのプログラムであって、
前記複数のマークアップ言語記述を分けるための方法は、
文字列パーサが、アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成する段階と、
前記文字列パーサが、前記入力文字列のシンタックスを検証する段階と、
前記文字列パーサが、複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成する段階と、
前記文字列パーサが、要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出する段階と、
前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放する段階と
を備え、
前記複数の連結リストノード構造および前記連結リスト属性構造を解放させる段階において、前記文字列パーサは、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
プログラム。 - 前記複数の連結リストノード構造の中の前記複数のポインタは、タグ名称、名称空間、予約位置、次タグ、親タグ、ピア要素、および終了タグへの1つ以上のポインタを含む請求項19に記載のプログラム。
- 前記複数の連結リスト属性構造の中の前記複数のポインタは、属性名称、属性値、接頭辞名称、および次属性への1つ以上のポインタを含む
請求項19または20に記載のプログラム。 - 前記予約位置への前記ポインタは、開始タグのために次の閉括弧へのポインタおよび終了タグのために開括弧へのポインタを含む
請求項20に記載のプログラム。 - 前記入力文字列を複数の連結リストノード構造に変形する段階は、
前記文字列パーサが、XML文字列である前記入力文字列、および、前記XML文字列中の要素である前記複数の要素に含まれるタグの開始を示す文字である区切り文字として開括弧文字を受け取る段階と、
前記文字列パーサが、前記開括弧の区切り文字を用いて、前記入力文字列を解析して、前記複数の要素に含まれるタグの開始を表す複数のトークンのリストを得る段階と、
前記文字列パーサが、前記複数のトークンの連結リストを返す段階と、
前記文字列パーサが、1つの連結リストノード構造を提供するために前記連結リストのそれぞれのトークンを解析する段階と
を有する請求項19から22のいずれかに記載のプログラム。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記文字列パーサが、前記トークンがスラッシュ("/")で始まるかどうかを判断する段階と、
前記トークンが前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の開始タグ領域をセットし、および前記トークンが前記スラッシュで始まる場合に、前記文字列パーサが前記開始タグ領域を消去する段階と、
スペース文字が前記トークンの中で見つかった場合に、前記文字列パーサが、前記トークンを一番目の部分および二番目の部分に分けるために、前記区切り文字として前記スペース文字を用いて前記トークンを解析する段階と
前記スペース文字が前記トークンの中で見つかった場合には、
前記文字列パーサが、前記トークンの前記一番目の部分の中の一番目の文字から前記トークンの前記一番目の部分の中のコロンに先立つ文字にわたる長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタを前記トークンの前記一番目の部分の中の一番目の文字にセットし、前記コロンの右の文字から前記トークンの前記一番目の部分の最後の文字にわたる長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの前記一番目の部分の中の前記コロンの右の文字にセットして、
前記スペース文字が前記トークンの中で見つからなかった場合には、
前記文字列パーサが、前記トークンの長さのタグ名称のために、前記連結リストノード構造の中のタグ名称ポインタを前記トークンの中の前記複数の文字にセットし、ゼロの長さの名称空間のために、前記連結リストノード構造の中の名称空間ポインタをnullポインタとしてセットする、段階と、
前記文字列パーサが、前記連結リストノード構造の中の次領域ポインタが前記次のトークンの先頭を指し示すようにセットする段階と
を含む請求項23に記載のプログラム。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記トークンが開始タグの場合に、前記文字列パーサが、前記連結リストノード構造の中の予約ポインタが前記トークンの最後の閉括弧を指し示すようにセットし、前記トークンが終了タグの場合に、前記文字列パーサが、前記予約ポインタが前記トークンの先頭の開括弧を指し示すようにセットする段階
をさらに含む請求項24に記載のプログラム。 - 前記1つの連結リストノード構造を提供するために前記連結リストの中のそれぞれのトークンを解析する段階は、
前記文字列パーサが、前記トークンの前記二番目の部分の一番目の文字が前記スラッシュで始まっているかどうかを判断する段階と、
前記トークンの前記二番目の部分が前記スラッシュで始まっている場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域をセットし、前記トークンの前記二番目の部分が前記スラッシュで始まっていない場合に、前記文字列パーサが前記連結リストノード構造の中の空タグ領域を消去する段階と
をさらに含む請求項24または25に記載のプログラム。 - 前記入力文字列のシンタックスを検証する段階は、
前記文字列パーサが、スタックを初期化する段階と、
前記文字列パーサが、前記入力文字列のための前記連結リストノード構造を受け取る段階と、
前記文字列パーサが、受け取った前記連結リストノード構造が開始タグおよび終了タグのいずれ表すかを判断する段階と
前記連結リストノード構造が現在の開始タグを表す場合には、前記文字列パーサが、前記連結リストノード構造の中の親領域を前記スタックの上部の前記開始タグへのポインタで満たし、前記現在の開始タグを前記スタックに置き、前記連結リストノード構造が現在の終了タグを表す場合には、前記文字列パーサが、前記スタックの前記上部の前記開始タグをポップオフし、前記連結リストノード構造の中のピア領域を前記現在の終了タグの次領域ポインタへのポインタで満たして、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合するかどうかを判断する段階と、
前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合しない場合に、前記文字列パーサが前記入力文字列を無効であるとし、前記現在の終了タグが前記スタックからポップオフされる前記開始タグと適合する場合に、前記文字列パーサが、前記入力文字列を有効であるとするとともに前記連結リストノード構造の終了タグを前記現在の終了タグで満たす段階と、
前記入力文字列が有効であり、かつ、前記連結リストノード構造が前記入力文字列のための最後の連結リストノード構造でない場合に、前記スタックの前記初期化を除き、前記文字列パーサが、前記入力文字列からの前記次の連結リストノード構造を用いて、上記プロセスを繰り返す段階と
を有する請求項19から26のいずれかに記載のプログラム。 - 前記連結リスト属性構造を前記メモリに作成する段階は、
前記文字列パーサが、開始タグのための連結リストノード構造を受け取る段階と、
前記文字列パーサが、前記連結リストノード構造の中の予約ポインタを用いて、開括弧文字と前記予約ポインタとの間の文字で属性文字列が表されるよう、前記開括弧文字が前記入力文字列の中で見つかるまで、前記予約ポインタの位置をデクリメントする段階と、
前記文字列パーサが、前記属性文字列の一番目の部分および前記属性文字列の二番目の部分を提供するために、区切り文字としてスペース文字を用いて前記属性文字列を解析する段階と、
前記文字列パーサが、前記属性文字列の前記一番目の部分を廃棄する段階と、
前記文字列パーサが、前記区切り文字として等号を用いて、前記属性文字列の前記二番目の部分を解析する段階と、
前記文字列パーサが、前記連結リスト属性構造の中の属性値ポインタを前記属性文字列の前記二番目の部分の前記等号の後の一番目の文字へセットして、属性値長を、前記属性文字列の前記二番目の部分の前記一番目の文字から前記属性文字列の前記二番目の部分の最後にわたる長さにする段階と、
前記文字列パーサが、前記区切り文字としてコロンを用いて、前記属性文字列の前記一番目の部分を解析する段階と、
前記文字列パーサが、前記連結リスト属性構造の中の次属性領域が前記入力文字列の中の前記次の属性を指し示すようにセットする段階と
を有し、
前記区切り文字としてコロンを用いて前記属性文字列の前記一番目の部分を解析する段階は、
前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の接頭辞名称ポインタを前記属性文字列の前記一番目の部分の中の一番目の文字へセットして、接頭辞名称の長さを、前記属性文字列の前記一番目の部分の中の前記一番目の文字から前記属性文字列の前記一番目の部分の中の前記コロンに先立つ文字にわたる長さにし、前記連結リスト属性構造の中の属性名称ポインタを前記属性文字列の前記一番目の部分の中の前記コロンの後の一番目の文字へセットして、属性名称の長さを、前記属性文字列の前記一番目の部分の中の前記コロンの後の前記一番目の文字から前記属性文字列の前記一番目の部分の最後の文字にわたる長さにする段階と、
前記属性文字列の前記一番目の部分の中に前記コロンの文字が見つからなかった場合に、前記文字列パーサが、前記連結リスト属性構造の中の前記接頭辞名称ポインタをnullポインタとしてセットして、前記接頭辞名称の長さをゼロにし、前記文字列パーサが、前記連結リスト属性構造の中の前記属性名称ポインタを前記属性文字列の前記一番目の部分の前記一番目の文字としてセットして、前記属性名称の長さを前記属性文字列の前記一番目の部分の長さにする段階と
を含む請求項19から27のいずれかに記載のプログラム。 - 前記要素内容を抽出する段階は、
前記文字列パーサが、対応する開始タグおよび終了タグのための前記複数の連結リストノード構造を受け取る段階と、
前記文字列パーサが、前記複数の連結リストノード構造の前記開始および終了タグの複数の予約ポインタを使用して、前記開始タグの前記予約ポインタおよび前記終了タグの前記予約ポインタの間の文字列を前記要素内容として決定する段階と
を有する請求項19から28のいずれかに記載のプログラム。 - 前記入力文字列は、XML(拡張可能マークアップ言語)入力文字列を含む
請求項19から28のいずれかに記載のプログラム。 - 前記入力文字列のシンタックスを検証する段階において、前記文字列パーサは、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
請求項19から26のいずれかに記載のプログラム。 - 前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
請求項19から27、31のいずれかに記載のプログラム。 - 前記連結リスト属性構造をメモリに作成する段階は、
前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する段階と、
前記文字列パーサが、前記連結リスト属性構造を前記アプリケーションに返却する段階と
を有する請求項32に記載のプログラム。 - 前記要素内容を抽出する段階において、
前記文字列パーサは、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
請求項19から28、31から33のいずれかに記載のプログラム。 - 前記要素内容を抽出する段階は、
前記文字列パーサが、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する段階と、
前記文字列パーサが、前記要素内容を前記アプリケーションに返却する段階と
を有する請求項34に記載のプログラム。 - 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
前記連結リスト属性構造をメモリに作成する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、
前記要素内容を抽出する段階において、前記文字列パーサは、前記予約位置のポインタを用いて前記要素内容を抽出する
請求項19から27、31から35のいずれかに記載のプログラム。 - 複数のマークアップ言語記述を分けるためのシステムであって、
プロセッサに接続されたメモリと、
前記プロセッサ上で動作するゼロコピー文字列パーサ、および、前記ゼロコピー文字列パーサに結合され、アプリケーションからの入力文字列を、前記入力文字列をメモリに前記コピーすることなく解析するために前記ゼロコピー文字列パーサと対話するロジックパーサとを有する文字列パーサと
を備え、
前記文字列パーサは、
前記アプリケーションからの入力文字列を、前記入力文字列に含まれる複数の要素のそれぞれの内に要素内容および複数の属性を表す文字列の位置を定義する前記入力文字列の内部の位置への複数のポインタを含む複数の連結リストノード構造に変形してメモリに作成し、
前記入力文字列のシンタックスを検証し、
複数の属性を有する前記複数の連結リストノード構造から、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記複数の属性を表す文字列の位置への複数のポインタを含む連結リスト属性構造を前記メモリに作成し、
要素内容を有する前記複数の連結リストノード構造から、前記アプリケーションに返却されるべき、前記複数の連結リストノード構造に含まれる前記複数のポインタが指す位置によって定義される前記要素内容を抽出し、
前記文字列パーサが、前記複数の連結リストノード構造および前記連結リスト属性構造を前記メモリから解放し、
前記文字列パーサは、前記複数の連結リストノード構造および前記連結リスト属性構造を解放する場合に、前記入力文字列が前記メモリにコピーされなくてはならないことを防ぐべく、前記連結リスト属性構造の作成および前記要素内容の抽出をした後に、前記複数の連結リストノード構造および前記連結リスト属性構造内の前記複数のポインタを維持したまま、前記複数の連結リストノード構造および前記連結リスト属性構造を削除する
システム。 - 前記ゼロコピー文字列パーサは、シングルパスパーサである
請求項37に記載のシステム。 - 前記ロジックパーサは、XML(拡張可能マークアップ言語)文字列を解析するために要求されるロジックを有する
請求項37または38に記載のシステム。 - 前記入力文字列は、前記入力文字列に関連する長さを有し、
前記ロジックパーサは、前記ゼロコピー文字列パーサが前記入力文字列を1つ以上の連結リストノード構造に解析することを可能にするために、区切り文字を前記ゼロコピー文字列パーサに提供する
請求項37から39のいずれかに記載のシステム。 - 前記1つ以上の連結リストノード構造は、前記ゼロコピー文字列パーサがさらに複数の連結リスト属性構造を作成するために複数のポインタを用いて前記入力文字列を解析することを可能にするために、前記入力文字列への複数のポインタを有し、
前記複数の連結リスト属性構造は、前記入力文字列の中で見つかる1つ以上の属性への付加的な複数のポインタを含む
請求項40に記載のシステム。 - 前記1つ以上の連結リストノード構造は、前記ゼロコピー文字列パーサが前記入力文字列に含まれる要素の中の要素内容を抽出するために前記入力文字列をさらに解析することを可能にするために、前記入力文字列への複数の予約ポインタを備える
請求項40または41に記載のシステム。 - 前記文字列パーサは、前記入力文字列のシンタックスを検証する場合に、前記複数の連結リストノード構造を用いて、前記入力文字列のシンタックスを検証する
請求項37に記載のシステム。 - 前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記複数の連結リストノード構造の中の前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成する
請求項37または43に記載のシステム。 - 前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記連結リスト属性構造を前記メモリに作成し、前記連結リスト属性構造を前記アプリケーションに返却する
請求項44に記載のシステム。 - 前記文字列パーサは、前記要素内容を抽出する場合に、前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出する
請求項37、43から45のいずれかに記載のシステム。 - 前記文字列パーサは、前記要素内容を抽出する場合に、前記アプリケーションから受け取った前記複数の連結リストノード構造に含まれる前記複数のポインタを用いて、前記要素内容を抽出し、前記要素内容を前記アプリケーションに返却する
請求項46に記載のシステム。 - 前記複数の連結リストノード構造に含まれる前記複数のポインタは、開始タグのための次の閉括弧へのポインタと、終了タグのための開括弧へのポインタとを示す予約位置のポインタを含んでおり、
前記文字列パーサは、前記連結リスト属性構造をメモリに作成する場合に、前記予約位置のポインタを用いて前記連結リスト属性構造を前記メモリに作成し、前記要素内容を抽出する場合に、前記予約位置のポインタを用いて前記要素内容を抽出する
請求項37、43から47のいずれかに記載のシステム。
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)
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)
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)
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 |
-
2003
- 2003-12-18 US US10/741,299 patent/US20050138542A1/en not_active Abandoned
-
2004
- 2004-12-01 JP JP2006543885A patent/JP4688816B2/ja not_active Expired - Fee Related
- 2004-12-01 WO PCT/US2004/040277 patent/WO2005064461A1/en not_active Application Discontinuation
- 2004-12-01 EP EP04812725A patent/EP1695211A1/en not_active Withdrawn
- 2004-12-01 CN CNB2004800359841A patent/CN100444117C/zh not_active Expired - Fee Related
Patent Citations (4)
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 |