[go: up one dir, main page]

JP5325920B2 - エンコーダコンパイラ、プログラムおよび通信機器 - Google Patents

エンコーダコンパイラ、プログラムおよび通信機器 Download PDF

Info

Publication number
JP5325920B2
JP5325920B2 JP2011070193A JP2011070193A JP5325920B2 JP 5325920 B2 JP5325920 B2 JP 5325920B2 JP 2011070193 A JP2011070193 A JP 2011070193A JP 2011070193 A JP2011070193 A JP 2011070193A JP 5325920 B2 JP5325920 B2 JP 5325920B2
Authority
JP
Japan
Prior art keywords
exi
event
encoder
code
xml
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
JP2011070193A
Other languages
English (en)
Other versions
JP2012203819A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011070193A priority Critical patent/JP5325920B2/ja
Priority to US13/235,834 priority patent/US8892991B2/en
Publication of JP2012203819A publication Critical patent/JP2012203819A/ja
Application granted granted Critical
Publication of JP5325920B2 publication Critical patent/JP5325920B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/221Parsing markup language streams

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Document Processing Apparatus (AREA)
  • Devices For Executing Special Programs (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Description

本発明の実施形態は、EXI(Efficient XML(Extensible Markup Language) Interchange)エンコーダを生成するためのエンコーダコンパイラおよびプログラム、ならびにEXIエンコーダを搭載した通信機器に関する。
従来、ASN.1 の有限状態機械による解釈によりデコーダプログラムを生成するデコーダが知られている。
これと類似した方法で、EXI エンコーダを生成することが考えられる。EXIエンコーダとは、XML文書を効率的にやりとりするため、テキストのXML文書をEXIの仕様にしたがってバイナリ化するエンコーダである。
そのようなEXI エンコーダの利用にあたり、エンコーダにより生成するビット列を、XML 文書の要素と正しく対応づけるには、元となるXML 文書の全ての項目についてエンコードを行う準備を事前に整えておく必要があり、コード量が増加する問題がある。このようなEXIエンコーダを、資源が制約されている組み込み機器に搭載するには、不向きである。
特開10-240652号公報
本発明の一側面は、EXIストリームを低負荷の処理で生成することが可能なEXIエンコーダを生成することを目的とする。
本発明の一態様としてのエンコーダコンパイラは、EXI(Efficient XML(Extensible Markup Language) Interchange)ストリームを生成するためのEXIエンコーダを生成するエンコーダコンパイラであって、第1読み込み手段と、第2読み込み手段と、パーサと、第3読み込み手段と、コードコンポーザとを備える。
前記第1読み込み手段は、XMLスキーマで定義された文書構造における特定箇所と、変数の名前とを互いに対応づけた対応情報を読み込む。
前記第2読み込み手段は、少なくともタグ名を有する複数のタグと、前記特定箇所に配置された置換文字列とを含む教師XML文書を読み込む。
前記パーサは、前記教師XML文書を、それぞれ前記タグ名および前記置換文字列を含む複数の要素のうちの1つを指定したイベントの列に変換する。
前記第3読み込み手段は、前記イベントの遷移と、EXIイベントコードとの関係を定義したEXI文法書を読み込む。
前記コードコンポーザは、
(A)前記イベントの列を順番に処理して、前記イベントを処理するごとに前記EXI文法書に応じてEXIイベントコードを生成し、
(B)処理するイベントが前記置換文字列を指定するイベントであるときは、前記置換文字列が配置された箇所に対応する前記変数の値を取得する関数を生成し、
(C)前記イベントの列の処理順序に応じて、生成したEXIイベントコードの出力命令コードおよび前記関数の値の出力命令コードを配置することによりEXIエンコーダを生成する。
本発明の実施形態に係るエンコーダコンパイラの構成を示す図である。 EXIエンコーダの生成までの全体の流れを示すフローチャートである。 専用EXIエンコーダが実行されることで、EXI ストリームが出力される様子を示す図である。 EXIエンコーダの構成例を示す図である。 教師XML文書と、HEAD 部・BODY 部・TAIL 部の関係を示す図である。 エンコーダコンパイラの動作を説明するフローチャートである。 エンコーダコンパイラにおけるSAXイベントの処理部分のフローチャートである。 エンコーダコンパイラにおけるBODY 部処理の流れを示したフローチャートである。 BODY部に対応するエンコード関数の構成例を示す。 本発明の実施形態により生成した専用EXIエンコーダを組み込んだ通信機器の構成例を示す。
以下、図面を参照しながら、本発明の実施形態を説明する。なお明細書の末尾にサンプルデータとして節A.1〜A.6を載せてある。適宜、これらを参照する。
図1に、本発明の実施形態に係るエンコーダコンパイラ(エンコーダ生成器)の構成を示す。図2に、EXIエンコーダの生成までの全体の流れを示す。
このエンコーダコンパイラ11は、EXIストリームを生成するためのEXIエンコーダを生成するためのものである。EXIエンコーダは、たとえば資源の限られたスマートメータ等の通信機器に搭載される。このEXIエンコーダを搭載した通信機器では、EXIエンコーダを実行するだけで、XML文書およびXMLスキーマを介することなく、EXIストリームを生成できる。
従来では、通信機器が、EXIストリームを生成するには、相手に送りたい値を書き込んだXML文書を作成し、XML文書をXMLスキーマに基づいて解釈することで、EXIストリームを生成する必要があった。しかしながら、このような処理は、資源の限られた機器(たとえばスマートメータ)には負荷が大きかった。なお、EXIストリームは、相手機器に送られた後は、相手機器で、XMLスキーマに基づきXML文書に復元される。
本実施形態は、この問題を解決するもので、相手に送りたい値(本実施形態では構造体の各要素の値)に基づきEXIエンコーダを実行するだけで、この値を組み込んだEXIストリームを生成できるようにし、このようなEXIエンコーダを(以下、専用EXIエンコーダ)を生成する手段を提案する。これにより資源の制約が厳しい機器において、正規のXML に対応するEXI ストリームを少ない負荷で生成できる。
図1に示されるように、本エンコーダコンパイラ11は、特定のXMLスキーマから生成したEXI文法木と、当該特定のXMLスキーマに準拠したXML文書である教師XML文書と、スキーマ−構造体対応情報と、エンコーダコードテンプレートとを入力とし、EXIエンコーダ(専用EXIエンコーダ)を出力する。エンコーダコンパイラ11は、スキーマ−構造体対応情報を読み込む第1読み込み手段と、教師XML文書を読み込む第2読み込み手段と、EXI文法木を読み込む第3読み込み手段とを含む。第1〜第3読み込み手段の読み込み先は、同じまたは異なる記憶装置である。読み込みは、ネットワークを介して行っても良い。
XML スキーマは、専用EXI エンコーダが出力するEXI ストリームの文書構造を規定するXML スキーマである。教師XML文書の文書構造を規定するXMLスキーマでもある。
節A.5 に、本説明で用いるXML スキーマの例を示す。このスキーマ例は、参考文献1(John Schneider and Takuki Kamiya. Efficient XML Interchange (EXI) Format 1.0. W3C Candidate Recommendation, December 2009. http://www.w3.org/TR/exi/)より引用したものである。
図2に示すように、XML スキーマはスキーマ分析モジュールによりEXI 文法木に変換され、EXI文法木がエンコーダコンパイラ11に与えられる。なお、EXI 文法木については、参考文献1 の8.5 Schema-informed Grammars などを参照されたい。EXI文法木は、参考文献1の付録H に説明される文法を、木構造として表現したデータである。節A.6 に、本説明で用いるEXI 文法の例を示す(参考文献1 より引用)。orderに対する文法(「Complete grammar for element <order>」)と、productに対する文法(「Complete grammar for element <product>」)が示される。各文法内でさらに細かく文法が規定されている。<order>に対する文法のTerm_product 0,0、 Term_product 0,1、<product>に対する文法におけるUse_color0等は、文法名である。
EXI文法は、LeftHandSide, Terminal, NonTerminal,EventCode(イベントコード) の4 つから構成される。LeftHandSide の状態の時、Terminal のイベントが発生したら、EventCode を出力し、NonTerminal の状態に移行する。後述のように本実施形態では、XML文書の解釈モデルとしてSAX(Simple API for XML -- http://www.saxproject.org/ ) を想定し、SAXイベントからEXIイベントを生成する。
たとえばorderの開始イベントSE(“order”)が読まれて<order>に対する文法が選択される(この状態をTerm_orderと表記する)。この状態で、次に、SE(“product”)のイベントが来たら、イベントコードとして0(1ビットのゼロ)を出力し、Term_product 1,0に遷移するとともに、productに対する文法が選択される(この状態をTerm_productと表記する)。同様にして、イベントが来るごとに、処理を継続し、EEイベントが来たら、productに対する文法から、orderに対する文法の上記の状態Term_product 1,0に戻り、また同様にして、処理が継続される。なおEXIのイベントコードは1つまたは複数の可変ビット幅非負整数の組によって表現される。個々のイベント番号は、その組み合わせを表現するのに必要十分なビット幅の非負整数により表現される。具体的には、ある文法のイベント番号が7までであれば3ビット、8以上15以下であれば4ビット、等である。また、ピリオドで結合された複数のイベントコード「1.0」「2.1」「2.4.1」などは階層的なイベントコードとなっており、その階層分だけ (個々の階層における必要十分なビット幅の) 可変ビット幅非負整数をならべることにより表現する。なお節A.6の例では、EEイベントは、タグ名の指定がないが、これは現在の文法が指示するタグの終了を確定的に意味する。
教師XML文書は、専用EXI エンコーダの出力内容を規定するものである。XML スキーマが文書に許されている形式を規定するものであるのに対し、教師XML文書は、より具体的にどういった文書を出力するのかを規定するものである。
本実施形態において、出力に含まれる値のうち、変化しない定数などの部分(タグ名や、属性値や本文が定数の場合(なお、節A.1の例では属性値や本文が定数の場合は存在しない))は、教師XML文書に、直接記入する。一方、変化する値 (温度センサにおける温度観測値+時間、もしくは製品の型番、数量、価格など) は、ポインタとして機能する置換文字列(識別子)を記述する。
置換文字列は、たとえば、開始タグおよび終了タグ間に囲まれた本文の箇所や、タグの属性の値の箇所に、記述される。節A.1 に、教師XML文書の例を示す。@SKU@, @COLOR@,@QUANITTY@,@PRICE@が、それぞれ置換文字列(識別子)に相当する。
スキーマ-構造体対応情報は、XML スキーマならびに教師XML文書のどの部分に、入力となる構造体の要素を対応づけるかを定義する。スキーマ-構造体対応情報は、具体的に、以下の要素から成る。また、節A.2 に、本説明で用いるスキーマ-構造体対応情報の例を示す。なお要素が1つのときは、構造体を用いなくてもよく、この場合は変数を定義すればよい。また本実施形態において構造体の各要素のことをそれぞれ変数と称することもある。
対象タグ:「構造体」に対応するタグの絶対パス(省略・ワイルドカードなしのXPath で表記される)。つまり文書構造において構造体が配置される範囲の指定。
構造体の定義:入力となる「構造体」の定義(C 言語の定義などを利用)。構造体の名前と、構造体の各要素の名前およびその型とを含む。struct productが構造体の名称である。
変換関数:構造体の各要素の値を、教師XML文書の該当箇所に、どのような型で表記するかを定める関数。構造体の要素の型と、教師XML文書の該当箇所とが同じ型を有する場合は、変換は不要であり、構造体の要素の値のみを取得する関数を用いればよい。
節A.2の例では、sku, color, quantity, priceが構造体の名称で、w_char*, int, floatが、構造体の型に相当する。
置換文字列方式では、@SKU@のように教師XML文書と同じ文字列(識別子)が、構造体の要素の名前に対応づけて、記載されている。「wchar2utf8」は、w_char型を、XMLスキーマが使用するutf8型に変換する関数を示している。たとえば、「w_char* sku -> wchar2utf8」は、w_char型の構造体要素skuの値を、utf8型に変換する関数を示している。
このように、本発明の実施形態のエンコーダコンパイラ11は、特定のXML スキーマにもとづく教師XML文書の特定箇所(置換文字列が配置された箇所)に、指定した構造体の要素の値を、指定の型で書き込んだ形のEXI ストリームを生成するための専用EXI エンコーダを生成する。EXIストリームは、EXIイベント列とも称される。
上述のように、専用EXI エンコーダは、通信機器に搭載され、通信機器で1つまたは複数の構造体を入力とし、専用EXIエンコーダが実行されることで、EXI ストリームが出力される。この様子を図3に示す。EXIストリームは、EXIイベントコードと値とのシーケンスである。
通信機器で生成されたEXIストリームは、相手機器に送信される。EXI ストリームは、相手機器でXMLスキーマ(より詳細にはXMLスキーマから生成したEXI文法木)に基づき、デコードすることにより、教師XML文書の特定部分に構造体を格納したXML 文書が得られる。ただし、BODY部(例:節A.1におけるproductタグで囲まれた部分。詳細は後述)は、複数繰り返し可能である(後述する図5参照)。この場合は、教師XML文書のBODY部が繰り返された状態でのXML文書が変換されたEXIストリームが送られる。BODY部が複数繰り返される場合のXML文書の例を、節A.4に示す。
図1に示すように、エンコーダコンパイラ11は、SAXパーサ12と、コードコンポーザ13とを備えている。
SAXパーサ12は、教師XML文書を、SAXイベント列に変換する。
SAXパーサ12は、教師XML文書の先頭から解析をはじめ、文書の開始、要素の開始、属性、要素の終了、文書の終了、などを表すSAXイベント列を生成する。SAXイベントの種類として、タグ開始イベント(属性情報を含む)、タグ終了イベント、文字列イベントなどがある。
たとえば、タグ開始イベントは、タグの開始を示し、当該タグのタグ名を指定し、またタグに含まれる属性の名前と値を指定する。このSAXイベントはEXIイベントにおけるSE(“product”) AT(“color”) などに対応する。タグ終了イベントは、現在のタグの終了を示す。EXIにおけるEEに対応する。文字列イベントは、文字列を指定する。EXIにおけるCHに対応する。SAXについては広く知られているため、これ以上詳細な説明を省略する。また、以後説明の簡単さのため、与えられたSAXイベントを以上のように対応するEXIイベントにより表記する。
SAXパーサ12により生成されたSAXイベント列は、コードコンポーザ13に入力される。本実施形態ではSAXイベントに変換する例を示しているが、本実施形態は、これに限定されず、XML文書をイベント列に変換できるのであれば、どのような方法を用いても良い。
教師XML文書を変換したSAXイベント列は内部的に、(1)〜(3)の3つの部分に分けることができる。
(1)スキーマ-構造体対応情報が指定するタグの直前(本例では<product>の直前)までのSAXイベント列
(2)当該指定するタグの1 つまたは複数の繰り返しからなるSAXイベント列
(3)当該指定するタグが終了した直後(本例では</product>の直後>から文書の末尾までのSAXイベント列から成る。
節A.2の例ではスキーマ−構造対応情報は、「/order/product」を指定しており、したがって、orderタグの下位のproductタグを指定している。
本説明では、上述(1)のイベント列をHEAD 部、(2)のイベント列をBODY 部、(3)のイベント列をTAIL 部と呼ぶ。教師XML文書と、HEAD 部・BODY 部・TAIL 部の関係を図5に示す。また、節A.3 に、HEAD 部・BODY 部・TAIL 部の例を示す。これは、節A.1 で示した教師XML文書と、節A.2 に示したスキーマ-構造体対応情報から決定されたものである。
コードコンポーザ13は、SAX イベント列を先頭から順番にEXIイベントに変換し、これをEXI 文法木に基づき処理して、イベントを処理するごとに、対応するEXIストリームを生成する出力命令コードを生成する。処理するイベントが、置換文字列を指定するイベントに合致するときは、置換文字列が配置された箇所に対応する構造体の要素の値を取得し変換する関数(型変換が不要なときは、変換は行わなくてよい)を生成する。そして、イベントの列の処理順序に応じてEXIイベントコードの出力命令コードと、当該関数の値の出力命令コードとを配置(組み合わせる)ことで、専用EXIエンコーダを生成する。以下、コードコンポーザ13についてさらに詳しく説明する。
コードコンポーザ13は、処理の間、内包する文法分析用の有限状態機械のスタック(これは、XPath のフルパス、あるいはXML タグの包含関係に対応する) の状態を把握しつつ、処理を行う。
なおHEAD部と、TAIL部には、変動する要素(すなわち置換文字列)が含まれない場合、それぞれ、固定のEXIイベント列が得られる。一方、BODY部では、変動する要素(置換文字列)が含まれるため、通信機器側で構造体の値をEXIストリームに挿入できるようにする必要がある。なお、HEAD部とTAIL部に変動要素が含まれる場合は、本発明で開示するBODY部と同様のアルゴリズムにより動的なEXIイベント列を出力する命令コードを生成できる。
コードコンポーザ13は、イベントの列の処理に応じてられるEXIイベントの列と、個々の処理ステップの時点でのスタック状態を手掛かりに、「専用EXI エンコーダ」を生成する。
この際、エンコーダコードテンプレートを使用する。エンコーダコードテンプレートは、先ほど示したwchar2utf8といった変換関数や、プログラム(命令コード)を記述するのに必要なコードテンプレートを格納している。
たとえば、HEAD部のSAXイベント列から生成されたEXIストリームを書き出す命令コードを、HEAD部出力関数であるencode_Head()の中に記述する。encode_Head()の内部に、HEAD部から生成されたEXIイベント列のビットを記述しておき、encode_Head()を実行することで、HEAD部に対応するEXIイベント列が通信機器で出力される。
また、TAIL部のSAXイベント列から生成されたEXIストリームを書き出す命令コードを、TAIL部出力関数であるencode_Tail()を用いて記述する。encode_Tail()の内部に、Tail部から生成されたEXIイベント列のビットを記述しておき、encode_Tail()を実行することで、Tail部に対応するEXIイベント列が、通信機器で出力される。
同様にボディ部に対しては、BODY部出力関数であるencode_Body()を用いて、BODY部から生成されたEXIストリームを書き出す命令コードを記述する。この際、通信機器側で読み出される構造体の値については、その値を読み込んで(通信機器の内部記憶部等から)、wchar2utf8関数等で、スキーマで定義された形式に符号化して、書き出されるようにする必要がある。たとえば、構造体メンバ(仮にorder->skuとする)については、wchar2utf8(&(order->sku))といったような命令コード(関数)を挿入しておく。(これは構造体orderのskuメンバのアドレスをwchar2utf8関数に渡すことを意味する。)この場合、専用EXIエンコーダを実行する通信機器では、encode_Body()を実行した際、EXIイベント列を順次読み出して書き出すが、途中でwchar2utf8(&(order->sku))を読み出すと、これを実行して、skuに対応する値を読み出して、utf8型に変換して、書き出す。続くEXIイベントが存在すれば、そのEXIイベントを書き出していく。BODY部出力関数の詳細な構成方法は、後述する。
なおここに示した関数の記載形式はあくまで一例であり、本実施形態はこれらの例に限定されるものではない。
これらのencode_Head()、encode_Body()、encode_Tail()を順番に実行するように記述したプログラムの構成例を図4に示す。必要ならば、構造体(sku, colorなど)の定義ファイルをさらに追加記述してもよい。encode_Head()、encode_Body()、およびencode_Tail()の実行結果をつなげることで、出力となるEXIストリームが得られ、通信機器は、これを相手機器に送信する。
コードコンポーザ13は、これら定義ファイルおよびプログラムを含むような専用EXIエンコーダを生成する。通信機器ではこの専用EXIエンコーダを実行することで、自動的に、メモリ内に存在する構造体の値をもとに、取得した構造体の値を組み込んだEXIストリームを生成できる。
図6 はエンコーダコンパイラ11の動作を説明するフローチャートである。
エンコーダコンパイラ11は、教師XML文書をSAXパーサ12によりSAX イベント列に変換する(S11)。またエンコーダコンパイラ11は、専用EXIエンコーダを初期化する(S12)。
HEAD 部に対応するイベントリストHEvent およびTAIL 部に対応するイベントリストTEventを初期化する(S13)。これらのリストは、それぞれHEAD部およびTAIL部から得られたEXI イベントのビット列を格納するためのものである。
なお、これらのリストのビットは、定数として扱われ、出力となる専用EXI エンコーダのプログラムには、上述したように、これらのビットを出力する関数encode_Head()、encode_Tail()が記述されることとなる。
エンコーダコンパイラ11は、SAXイベント列を先頭から処理し、SAX イベントの処理に伴い、文法のスタックを構築する。このスタックはフルパス表記したXPath に相当し、上記スキーマ-構造体対応情報に記述された「対象タグ」(節A.2の例では「product」タグ)に合致した際に、BODY 部の処理を開始する(S17)。
BODY 部の処理を開始する前のSAX イベントは、HEAD 部として処理される(S14のfalse)。HEAD 部の処理は、「EXI エンコーダ::処理ステップ」(後述) を一つ行い(S15)、その結果をイベントリストHEventに格納する(S16)。この処理を、EXI エンコーダの文法スタックが「対象タグ」に合致するまで続ける。
文法スタックが「対象タグ」に合致したら、その文法スタックが継続している間、「BODY 部処理」により、SAX イベントが処理される(S17)。この処理については複雑になるので後述する。
BODY 部処理終了時に、TAIL 部に対応する可能性のある文法(状態) を得ることができる。この文法を記憶し、文書終了まで、残り部分(TAIL 部分) のSAXイベント列を、EXI イベント列に変換し、イベントリストTEventに格納する(S18、S19、S20)。なお、TAIL部に存在する文法が複数存在するときはそれぞれについてTEventを作成するものとする。
終了処理(S21)では、HEAD 部の定数(HEventリストのデータ)、BODY 部のエンコーダ辞書(後述)、TAIL 部の定数(TEventリストのデータ) を用いて、専用EXI エンコーダを生成する。
図7 は、エンコーダコンパイラ11におけるSAXイベントの処理部分(「EXI エンコーダ::処理ステップ」)のフローチャートを示す。
本発明の実施形態においては、教師XML文書の内容に応じて、EXI のエンコード方法を切り替えることが特徴の一つであり、そのためにSAX イベント1 つごとに処理を行う。
エンコーダコンパイラ11は、文法構造に基づく状態機械のスタックを管理する必要があり、本フローチャートは、この様子を明示したものである。
一つひとつのイベントの処理については、参考文献1 の第6 章(Encoding EXI Streams) など、公知の内容に基づく。
SAXイベントを一つ取り出すごとに(S51)、EXI文法木によりSAXイベント(対応するEXIイベント)を処理し、EXIストリームの一部分 (イベントコードおよび値の列) を生成する(S52)。
EXIイベントがタグ終了に該当するときは(S53のtrue)、状態遷移スタックをポップ(pop)する(S54)。
EXIイベントがタグ開始に該当するときは(S55のtrue)、開始イベントに対応する状態機械を初期化し、状態機械スタックにプッシュ(push)する(S56)。
タグ終了およびタグ開始のいずれにも該当しないときは、状態機械スタックに対しては何も行うことなく、本フローを終了する。たとえばATイベント、CHイベントに相当するイベントがこの場合に該当する。
図8 は、エンコーダコンパイラ11におけるBODY 部処理(図6のS17)の流れを示したフローチャートである。
BODY 部は、教師XML文書 からひとつ与えられるが、これを再帰的に複数回処理することにより可能性のある文法を発見し、それぞれの文法に対応するサブエンコーダを生成する。つまり節A.1の例ではBODY部が1つ存在するが、実際に通信機器が送信したい内容が節A.4のときは、複数回、BODY部に対するエンコード処理を繰り返す必要がある。繰り返しのたびに同じ文法を使うとは限らないため、可能性のあるそれぞれの文法に対応するBODY部用のエンコーダ(サブエンコーダ)を生成する。
たとえば節A.6の例では、1回目はTerm_product 0,0が用いられるが、2回目以降は、Term_product 1,0が用いられる。このため以下の処理では、節A.6および節A.1の例の場合は、図9に示すように、1回目用のエンコーダ(Term_product 0,0対応関数)と、2回目以降用に適用するエンコーダ(Term_product 0,1対応関数)とを含むBODY部エンコーダ関数が生成される。節A.4の例に則して説明すれば、3つのボディ部の繰り返しのうち、最初のボディ部に対してはTerm_product 0,0対応関数を適用し、残り2つのBODY部に対してはTerm_product 0,1対応関数を適用して、EXIへのエンコードを行うことに相当する。
このように、BODY 部は文法をかえて何度もエンコードしうるため、BODY 部処理開始時点でのSAX ストリーム位置p を記録しておき(S31)、後でストリーム位置をp に復帰させる(S41)。
文法R をキーとする辞書をL[R]と表記する。L[R]は、完成品のエンコーダ(専用EXIエンコーダ)で用いられる、BODY部のサブエンコーダの辞書である。サブエンコーダは、入力となる構造体を、EXI ビット列に変換する機能を含む。
また、終了が確定している(つまり、スキーマによりmaxOccurs(最大回数) が有限であり、かつmaxOccurs回目に出現したタグに対応する) 文法以外は、現在の構造体の次の構造体が入力された際に利用する文法が確定するため、その次の文法の辞書P[R] をあわせて持つ。
全ての文法のうち、BODY 部の開始タグ(たとえば<product>)に対応する文法それぞれを、順にR に代入し、逐次的に以下の処理を行う。
まず、各文法に対して、独立した個別エンコーダを初期化する。ただし、XMLスキーマから生成された文法のうち、R を初期文法として選択するため、ここでは個別エンコーダをE(R)と表記する。
SAX イベント列が、BODY 部タグ終了位置になるまで、以下の処理を継続する(S35のfalse)。
各文法に対するBODY 部の処理は、SAX イベントに「置換文字列」が含まれるかによって分岐する(S36)。置換文字列は、前述したように、教師XML の例における@NAME@ に対応する。置換文字列は、アトリビュート(属性)、あるいはタグで囲まれた本文に対して許される。節A.2 にあるスキーマ-構造体対応情報においては、文字列で記述している例と、相対XPath で記述する例を示している。
もしSAX イベントが置換文字列、つまり構造体に関する情報を含まないのであれば、E(R) によりそのSAX イベントを処理し(S37)、処理の出力をL[R] に追記する(S38)。もしL[R] が存在しなければ、空のリストを初期化し、初期化されたリストに追記する(以下同じ)。
SAX イベントに置換文字列を含む場合も、E(R)を実行するが、これはE(R) が持つ状態を遷移させるためのもので、出力(すなわち置換文字列そのもの)は使わない(S39)。その上で、「置換文字列処理」を行う(S40)。
置換文字列については、本文にある場合(節A.1の例の@QUANTITY@,@PRICE@)と、タグ内のアトリビュート(節A.1の例の@SKU@,@COLOR@)として定義される場合とがある。また、置換方法(構造体のどの要素の値を、どのように変換するか)は、スキーマ-構造体対応情報によって定まる。
この場合、L[R] に、以下のように内容が追記される(S38)。
タグ内のアトリビュートに関しては、現在の文法に基づき生成されたATイベントコード(structurecode)と、スキーマに準拠する型(たとえばスキーマ−構造体対応情報のwchr2utf8の「utf8」)になるように構造体の要素の値を変換する変換関数と、および構造体中の入力となるべき要素を指定する入力要素ポインタ(たとえばスキーマ−構造体対応情報における「sku」)との3 つの組をL[R] に追記する。
一方、XML の本文(タグで囲まれたテキスト文など)については、CHイベントコード、変換関数、入力要素ポインタを、L[R] に登録する(S38)。
変換関数は、スキーマ-構造体対応情報から得られる変換方法に対応する関数である。
節A.2 では、相対XPath方式の例において、w_char 型をutf8 文字列に変換するwchar2utf8 が、構造体要素sku およびcolor に対応している。また、int 型をutf8文字列に変換するint2utf8 が、quantityタグ に囲まれる本文に対応している。また、float 型をutf8 文字列に変換するfloat2utf8 が、priceタグに囲まれた本文に、対応している。
これらの関数は、入力としてC 言語など、エンコーダを記述する言語に基づく型を持ち、出力としてスキーマで許された型をもつことが条件である。その中で実装として単純な変換のみで構成してもよいし、変換関数中で処理(例えばローカルタイムからGMT への変換など) を実施しても良い。
これらの処理を、SAX イベントがBODY 部タグ終了位置になるまで、繰り返す(S35)。なお、SAX イベントがBODY 部タグ終了位置になれば(S35のtrue)、この文法についての処理を終了し、E(R) が現在位置している文法をP[R] に記録し(S33)、SAX ストリーム位置をp に復帰し(S41)、次の文法に処理を移す(S33)。
最終的にBODY 部開始タグに対する処理を全て終えたら、L[R] およびP[R] を、コードコンポーザ13は得る。対応するすべての文法の個数分だけ、L[R] およびP[R]のペアが同数得られることとなる。
ここで、終了処理(図6のS21)においては、L[R] とP[R] から以下のようなコード結合処理が行われる。
まず、BODY部処理の開始位置の文法を初期文法とし、これを内部状態R とする初期化コードを生成する。その上で、以下の処理を実施する命令コード(図9の例の各関数の内容に相当する)を、エンコーダに格納する。
1. スキーマ-構造体対応情報にて定義される構造体を入力として、L[R]の内容(リスト)を得る。
2. リストの先頭から順番に以下の処理を行う。
(a) もし処理対象が定数(たとえばイベントコードのビット)のみであったら、定数を出力する。
(b) もし処理対象が入力要素ポインタ(構造体を示す)とその変換関数の組であれば、そのポインタが示す値を変換関数に渡し、変換関数の出力をそのまま出力する。
(c) もしリストが終了したら、処理を終了する。
この処理の前に、イベントリストHEventの内容の出力を行う命令コード、後ろにイベントリスTEvent の内容の出力を行う命令コードを組み合わせることで、エンコーダは完成である。
以上のエンコーダコンパイラ11により、特定のXML スキーマによって与えられる文法に対し、教師XML文書による効率的な専用EXIエンコーダを簡便に生成できる。この結果、同一のXML スキーマであっても搭載機器種別毎に利用機能が異なるケースなどにおいて、機器種別毎に最適化したエンコーダを簡便に作成できる。また、個別の搭載機器のID なども含めて教師XML を記載することもでき、機器ひとつひとつに最適化されたエンコーダを生成できる。
また、スマートメータなど、資源の制約が厳しい機器において、正規のXML に対応するEXI ストリームを生成できる。
図10に、本実施形態により生成した専用EXIエンコーダを組み込んだ通信機器の構成例を示す。
本実施形態で生成した専用EXIエンコーダは、スマートメータ等の資源の厳しい通信機器に組み込まれる。
通信機器101は、相手機器との間で効率的なXML文書のやりとりを行うため、相手機器(図示せず)に、送信したいXML文書の内容がエンコードされたEXIストリームを送信する。エンコーダ実行部であるCPU102が、記憶部103内の専用EXIエンコーダをメモリ104に展開して実行する。これにより、図3に示したように、構造体の値が挿入されたEXIストリーム(EXIイベント列)が生成される。つまり、XML文書およびXMLスキーマを用いることなく、低負荷な処理で、EXIストリームが生成できる。通信部105は、このEXIストリームを相手機器に、ネットワークを介して送信する。必要に応じて、暗号化や認証を行っても良い。
なお、以上に説明した実施形態におけるエンコーダコンパイラ11は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、エンコーダコンパイラ11におけるSAXパーサ12およびコードコンポーザ13は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、エンコーダコンパイラ11は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD−ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。
A サンプルデータ
A.1 教師XML文書の例
<?xml>
<order>
<product sku="@SKU@" color="@COLOR@">
<quantity>@QUANTITY@</quantity>
<price>@PRICE@</price>
</product>
</order>

A.2 スキーマ-構造体対応情報
置換文字列方式によるもの:
/order/product => struct product {
w_char* sku -> wchar2utf8 | @SKU@;
w_char* color -> wchar2utf8 | @COLOR@;
int quantity -> int2string | @QUANTITY@;
float price -> float2string | @PRICE@;
};
相対XPath 方式によるもの
/order/product => struct product {
w_char* sku -> wchar2utf8 | @sku;
w_char* color -> wchar2utf8 | @color;
int quantity -> int2utf8 | quantity/text();
float price -> float2utf8 | price/text();
};

A.3 教師XML文書の分割例
A.3.1 HEAD 部
<?xml>
<order>

A.3.2 BODY 部
<product sku="@SKU@" color="@COLOR@">
<quantity>@QUANTITY@</quantity>
<price>@PRICE@</price>
</product>

A.3.3 END 部
</order>

A.4 想定するXML文書の具体例
<?xml>
<order>
<product sku="1JB339" color="white">
<quantity>40</quantity>
<price>339.50</price>
</product>
<product sku="1JB340" color="black">
<quantity>25</quantity>
<price>155.0</price>
</product>
<product sku="1JB341" color="green">
<quantity>30</quantity>
<price>183.95</price>
</product>
</order>

A.5 XMLスキーマの例(参考文献1より引用)
<xs:element name="product">
<xs:complexType>
<xs:sequence maxOccurs="2">
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:integer" />
<xs:element name="price" type="xs:float" />
</xs:sequence>
<xs:attribute name="sku" type="xs:string" use="required" />
<xs:attribute name="color" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>

<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element ref="product" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>


A.6 EXI 文法の例(参考文献1より引用)
Complete grammar for element <product>
Event Code
Use_color0 :
AT("color") [schema-typed value] Use_color1 0
AT("sku") [schema-typed value] Use_sku1 1
EE 2.0
AT(xsi:type) Use_color0 2.1
AT(xsi:nil) Use_color0 2.2
AT (*) Use_color0 2.3
AT("color") [untyped value] Use_color1 2.4.0
AT("sku") [untyped value] Use_sku1 2.4.1
AT (*) [untyped value] Use_color0 2.4.2
SE(*) Use_sku1_copied 2.5
CH [untyped value] Use_sku1_copied 2.6

Use_color1 :
AT("sku") [schema-typed value] Use_sku1 0
EE 1.0
AT (*) Use_color1 1.1
AT("sku") [untyped value] Use_sku1 1.2.0
AT (*) [untyped value] Use_color1 1.2.1
SE(*) Use_sku1_copied 1.3
CH [untyped value] Use_sku1_copied 1.4

Use_sku1 :
SE("description") Term_description0,1 0
SE("quantity") Term_quantity0,1 1
EE 2.0
AT (*) Use_sku1 2.1
AT (*) [untyped value] Use_sku1 2.2.0
SE(*) Use_sku1_copied 2.3
CH [untyped value] Use_sku1_copied 2.4

Use_sku1_copied :
SE("description") Term_description0,1 0
SE("quantity") Term_quantity0,1 1
EE 2.0
SE(*) Use_sku1_copied 2.1
CH [untyped value] Use_sku1_copied 2.2


Term_description0,1 :
SE("quantity") Term_quantity0,1 0
EE 1
SE(*) Term_description0,1 2.0
CH [untyped value] Term_description0,1 2.1

Term_quantity0,1 :
SE("price") Term_price0,1 0
EE 1
SE(*) Term_quantity0,1 2.0
CH [untyped value] Term_quantity0,1 2.1

Term_price0,1 :
SE("description") Term_description1,1 0
SE("quantity") Term_quantity1,1 1
EE 2
SE(*) Term_price0,1 3.0
CH [untyped value] Term_price0,1 3.1

Term_description1,1 :
SE("quantity") Term_quantity1,1 0
EE 1
SE(*) Term_description1,1 2.0
CH [untyped value] Term_description1,1 2.1

Term_quantity1,1 :
SE("price") Term_price1,1 0
EE 1
SE(*) Term_quantity1,1 2.0
CH [untyped value] Term_quantity1,1 2.1

Term_price1,1 :
EE 0
SE(*) Term_price1,1 1.0
CH [untyped value] Term_price1,1 1.1

Complete grammar for element <order>
Event Code
Term_product 0,0 :
SE("product") Term_product 1,0 0
EE 1.0
AT(xsi:type) Term_product 0,0 1.1
AT(xsi:nil) Term_product 0,0 1.2
AT (*) Term_product 0,0 1.3
AT (*) [untyped value] Term_product 0,0 1.4.0
SE(*) Term_product 0,0_copied 1.5
CH [untyped value] Term_product 0,0_copied 1.6

Term_product 0,0_copied :
SE("product") Term_product 1,0 0
EE 1.0
SE(*) Term_product 0,0_copied 1.1
CH [untyped value] Term_product 0,0_copied 1.2

Term_product 1,0 :
SE("product") Term_product 1,0 0
EE 1
SE(*) Term_product 1,0 2.0
CH [untyped value] Term_product 1,0 2.1

Claims (8)

  1. EXI(Efficient XML(Extensible Markup Language) Interchange)ストリームを生成するためのEXIエンコーダを生成するコンピュータであって、
    XMLスキーマで定義された文書構造における特定箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込み手段と、
    少なくともタグ名を有する複数のタグと、前記特定箇所に配置された置換文字列とを含む教師XML文書を読み込む第2読み込み手段と、
    前記教師XML文書を、前記タグ名および前記置換文字列を含む複数の要素のうちの1つを指定したイベントの列に変換するパーサと、
    前記イベントの遷移と、EXIイベントコードとの関係を定義したEXI文法書を読み込む第3読み込み手段と、
    (A)前記イベントの列を順番に処理して、前記イベントを処理するごとに前記EXI文法書に応じてEXIイベントコードを生成し、
    (B)処理するイベントが前記置換文字列を指定するイベントであるときは、前記置換文字列が配置された箇所に対応する前記変数の値を取得する関数を生成し、
    (C)前記イベントの列の処理順序に応じて、生成したEXIイベントコードの出力命令コードおよび前記関数の値の出力命令コードを配置することによりEXIエンコーダを生成する、
    コードコンポーザと、
    を備えたコンピュータ
  2. 前記関数は、さらに、取得した変数の値を前記XMLスキーマに準拠した形式へ変換する
    ことを特徴とする請求項1に記載のコンピュータ
  3. 前記置換文字列は、前記タグに囲まれた箇所に記載されている
    ことを特徴とする請求項1または2に記載のコンピュータ
  4. 前記教師XML文書における前記タグは属性を有し、
    前記置換文字列は、前記属性の値として、記載されている、
    ことを特徴とする請求項1ないし2のいずれか一項に記載のコンピュータ
  5. 前記パーサは、SAXパーサであり、
    前記イベントは、SAXイベントである、
    ことを特徴とする請求項1ないし4のいずれか一項に記載のコンピュータ
  6. 前記変数は、構造体の要素である
    ことを特徴とする請求項1ないし5のいずれか一項に記載のコンピュータ
  7. 前記対応情報は、前記特定箇所が含まれる前記教師XML文書の範囲を、タグ名を用いて指定し、
    前記コードコンポーザは、前記イベントの列を、前記範囲に対応するボディ部、前記ボディ部より前のヘッド部、および前記ボディ部より後のテイル部に分けて処理を行い、各処理でそれぞれ得られた出力命令コードを結合することにより、前記EXIエンコーダを生成する
    ことを特徴とする請求項1ないし5のいずれか一項に記載のコンピュータ
  8. EXI(Efficient XML(Extensible Markup Language) Interchange)ストリームを生成するためのEXIエンコーダを生成するコンピュータに実行させるためのプログラムであって、
    所定のXMLスキーマで定義された文書構造における特定箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込みステップと、
    少なくともタグ名を有する複数のタグと、前記特定箇所に配置された置換文字列とを含む教師XML文書を読み込む第2読み込みステップと、
    前記教師XML文書を、それぞれ前記タグ名および前記置換文字列を含む複数の要素のうちの1つを指定したイベントの列に変換するステップと、
    前記イベントの遷移と、EXIイベントコードとの関係を定義したEXI文法書を読み込む第3読み込みステップと、
    前記イベントの列を順番に処理して、前記イベントを処理するごとに前記EXI文法書に応じてEXIイベントコードを生成するステップと、
    処理するイベントが前記置換文字列を指定するイベントであるときは、前記置換文字列が配置された箇所に対応する前記変数の値を取得する関数を生成するステップと、
    前記イベントの列の処理順序に応じて、生成したEXIイベントコードの出力命令コードおよび前記取得関数の値の出力命令コードを配置することによりEXIエンコーダを生成するステップと
    をコンピュータに実行させるためのプログラム。
JP2011070193A 2011-03-28 2011-03-28 エンコーダコンパイラ、プログラムおよび通信機器 Expired - Fee Related JP5325920B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011070193A JP5325920B2 (ja) 2011-03-28 2011-03-28 エンコーダコンパイラ、プログラムおよび通信機器
US13/235,834 US8892991B2 (en) 2011-03-28 2011-09-19 Encoder compiler, computer readable medium, and communication device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011070193A JP5325920B2 (ja) 2011-03-28 2011-03-28 エンコーダコンパイラ、プログラムおよび通信機器

Publications (2)

Publication Number Publication Date
JP2012203819A JP2012203819A (ja) 2012-10-22
JP5325920B2 true JP5325920B2 (ja) 2013-10-23

Family

ID=46928974

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011070193A Expired - Fee Related JP5325920B2 (ja) 2011-03-28 2011-03-28 エンコーダコンパイラ、プログラムおよび通信機器

Country Status (2)

Country Link
US (1) US8892991B2 (ja)
JP (1) JP5325920B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5166565B2 (ja) * 2011-03-28 2013-03-21 株式会社東芝 Exiエンコーダおよびプログラム
US10019418B2 (en) * 2012-07-20 2018-07-10 Fujitsu Limited Efficient XML interchange profile stream decoding
JP2014086048A (ja) 2012-10-26 2014-05-12 Toshiba Corp 検証装置、検査方法およびプログラム
DE102014219090A1 (de) * 2014-09-22 2016-03-24 Siemens Aktiengesellschaft Gerät mit Kommunikationsschnittstelle und Verfahren zur Steuerung eines Datenbankzugriffs
US10282400B2 (en) * 2015-03-05 2019-05-07 Fujitsu Limited Grammar generation for simple datatypes
US10311137B2 (en) * 2015-03-05 2019-06-04 Fujitsu Limited Grammar generation for augmented datatypes for efficient extensible markup language interchange
US10210142B1 (en) * 2017-11-29 2019-02-19 Adobe Inc. Inserting linked text fragments in a document
CN108228805B (zh) * 2017-12-29 2021-04-06 北京安云世纪科技有限公司 一种用于对显示数据进行处理的方法、设备及移动终端
CN109857384A (zh) * 2018-11-21 2019-06-07 江苏方天电力技术有限公司 一种热工指标在线计算的编码方法
CN115190184B (zh) * 2022-06-14 2023-06-23 深圳市圣麾科技有限公司 一种二进制消息信元编辑方法、系统及存储介质
CN119471097B (zh) * 2024-10-16 2025-12-16 中国直升机设计研究所 一种直升机航电系统原位检测设备设计和应用方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2996296B2 (ja) 1997-02-26 1999-12-27 日本電気株式会社 メッセージ復号化装置及び有限状態機械生成装置
US6772413B2 (en) 1999-12-21 2004-08-03 Datapower Technology, Inc. Method and apparatus of data exchange using runtime code generator and translator
JP2004086642A (ja) * 2002-08-28 2004-03-18 Hitachi Ltd Xml変換装置及びそのプログラムの記録媒体
JP2004234405A (ja) * 2003-01-31 2004-08-19 Fujitsu Ltd プロトコル符号化/復号化装置
JP4898405B2 (ja) * 2006-12-01 2012-03-14 キヤノン株式会社 文書データ処理方法、文書データ作成装置、及び文書データ処理装置
JP2009059215A (ja) * 2007-08-31 2009-03-19 Canon Inc 構造化文書処理装置、構造化文書処理方法
US8543898B2 (en) * 2007-11-09 2013-09-24 Oracle International Corporation Techniques for more efficient generation of XML events from XML data sources
US8291392B2 (en) * 2008-09-30 2012-10-16 Intel Corporation Dynamic specialization of XML parsing
JP5409090B2 (ja) * 2009-04-13 2014-02-05 キヤノン株式会社 情報処理装置、情報処理方法、プログラム及び記憶媒体
FR2945363B1 (fr) * 2009-05-05 2014-11-14 Canon Kk Procede et dispositif de codage d'un document structure
JP2010267092A (ja) * 2009-05-14 2010-11-25 Canon Inc 情報処理装置、情報処理方法

Also Published As

Publication number Publication date
US8892991B2 (en) 2014-11-18
JP2012203819A (ja) 2012-10-22
US20120254724A1 (en) 2012-10-04

Similar Documents

Publication Publication Date Title
JP5325920B2 (ja) エンコーダコンパイラ、プログラムおよび通信機器
US20030115548A1 (en) Generating class library to represent messages described in a structured language schema
US8601368B2 (en) Processing method and device for the coding of a document of hierarchized data
US8849726B2 (en) Information processing apparatus and control method for the same
US20090138529A1 (en) Method and device for coding and decoding information
US20090254882A1 (en) Methods and devices for iterative binary coding and decoding of xml type documents
JP5142638B2 (ja) 文書変換装置、文書変換方法
JP5325921B2 (ja) デコーダコンパイラ、プログラムおよび通信機器
US9560401B2 (en) Method of transmitting at least one content representative of a service, from a server to a terminal, and associated device and computer program product
US8788934B2 (en) EXI encoder and computer readable medium
US20100049727A1 (en) Compressing xml documents using statistical trees generated from those documents
US8250465B2 (en) Encoding/decoding apparatus, method and computer program
JP2005332146A (ja) 動的コンテンツ作成プログラムの生成装置、動的コンテンツ作成プログラムを生成するためのプログラム、及び動的コンテンツ作成プログラムの生成方法
CN114721713B (zh) 基于注解的数据处理方法、计算机设备以及可读存储介质
JP5206675B2 (ja) 構造化文書変換装置
KR101165201B1 (ko) 컨텐츠 제공 시스템의 변환서버
JP4313698B2 (ja) 電子文書処理装置、電子文書処理方法および電子文書処理プログラム
Lucarz et al. Automatic synthesis of parsers and validation of bitstreams within the MPEG reconfigurable video coding framework
JP2007219579A (ja) ドキュメント変換装置、およびプログラム
WO2008107802A2 (en) Method and device for processing documents on the basis of enriched schemas and corresponding decoding method and device
JP2009251688A (ja) 構造化データ処理装置、方法及びプログラム
CN116976285A (zh) 组件说明文档生成方法、装置、设备及存储介质
KR100660057B1 (ko) 패스트 인포셋을 이용한 이진 엑스엠엘 저장 방법 및 복원방법
JP2009048654A (ja) ドキュメント変換装置、およびプログラム
Fitzpatrick XML in the VO: VOTables

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130412

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130611

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: 20130628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130722

R151 Written notification of patent or utility model registration

Ref document number: 5325920

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees