EXIEfficientXMLInterchangeストリームをデコードするためのEXIデコーダを生成するデコーダコンパイラであって、所定のXMLスキーマで定義されたXML文書構造における箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込み部と、前記XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法と、の関係を定めた複数の文法を含むEXI文法書を読み込む第2読み込み部と、開始文法から前記EXI文法書の各文法を順次辿るように選択する文法選択部と、前記文法を選択するごとに前記XML文書構造上の位置を特定する文法スタックを逐次更新し、更新された文法スタックが、前記対応情報で示される箇所を示すかどうかを判断する更新判定部と、前記更新された文法スタックが前記箇所を示さないとき、選択した文法に対して前記文法スタックが示す位置に対応する前記EXIストリームの値を読み飛ばす、読み飛ばし関数を設定する、読み飛ばし関数設定部と、前記更新された文法スタックが前記箇所を示すとき、前記文法スタックが示す位置に対応する前記EXIストリームの値を読み出して、前記箇所に対応する前記変数に与える、読み出し関数を設定する、読み出し関数設定部と、各前記文法に対しそれぞれ選択された前記読み飛ばし関数および前記読み出し関数を含むEXIデコーダを生成するコードコンポーザと、を備えたデコーダコンパイラ。前記変数は、構造体の要素であることを特徴とする請求項1に記載のデコーダコンパイラ。前記対応情報は、前記XML文書構造において前記箇所に対して定義された型と、前記変数の型との情報を含み、前記読み出し関数は、読み出した値の型を前記変数の型に変換して、前記変数に与えるものであることを特徴とする請求項1または2に記載のデコーダコンパイラ。EXIEfficientXMLInterchangeストリームをデコードするためのEXIデコーダを生成するためのプログラムであって、所定のXMLスキーマで定義されたXML文書構造における箇所と、変数の名前とを互いに対応づけた対応情報を読み込む第1読み込みステップと、前記XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法と、の関係を定めた複数の文法を含むEXI文法書を読み込む第2読み込みステップと、開始文法から前記EXI文法書の各文法を順次辿るように選択する文法選択ステップと、前記文法を選択するごとに前記XML文書構造上の位置を特定する文法スタックを逐次更新し、更新した文法スタックが、前記対応情報で示される箇所を示すかどうかを判断する更新判定ステップと、前記更新された文法スタックが前記箇所を示さないとき、選択した文法に対して前記文法スタックが示す位置に対応する前記EXIストリームの値を読み飛ばす、読み飛ばし関数を設定する、読み飛ばし関数設定ステップと、前記更新された文法スタックが前記箇所を示すとき、前記文法スタックが示す位置に対応する前記EXIストリームの値を読み出して、前記箇所に対応する前記変数に与える、読み出し関数を設定する、読み出し関数設定ステップと、各前記文法に対しそれぞれ選択された前記読み飛ばし関数および前記読み出し関数を含むEXIデコーダを生成するステップと、をコンピュータに実行させるためのプログラム。請求項1ないし4のいずれか一項に従って生成された前記EXIデコーダと、前記EXI文法書を記憶する記憶部と、前記EXIデコーダを実行する実行部と、前記EXIストリームを受信する受信部と、を備え、前記EXIストリームは、複数のEXIイベントコードと、前記EXIイベントコードの全部または一部にそれぞれ関連づけられた値とのシーケンスであり前記実行部は、前記EXIストリームの先頭から順次EXIイベントコードを特定し、前記EXIイベントコードと、事前に選択された文法とに基づき、次に用いる文法を選択し、前記EXIイベントコードに値が関連づけられているとき、前記EXIイベントコードが特定されたときの文法に対応づけられた、前記読み飛ばし関数または前記読み出し関数により、前記値を処理し、前記読み出し関数により取得された前記変数の値を出力することを特徴とする通信機器。本発明の一側面は、所望の情報のみを低負荷で抽出可能なEXIデコーダを生成することを目的とする。本発明の一態様としてのデコーダコンパイラは、EXIEfficientXMLInterchangeストリームをデコードするためのEXIデコーダを生成するデコーダコンパイラであって、第1読み込み部と、第2読み込み部と、文法選択部と、更新判定部と、読み飛ばし関数設定部と、読み出し関数設定部と、コードコンポーザとを備える。前記第1読み込み部は、所定のXMLスキーマで定義されたXML文書構造における箇所と、変数の名前とを互いに対応づけた対応情報を読み込む。前記文法選択部は、前記XML文書構造の各要素を表現するイベントと、EXIイベントコードコードと、次に用いるべき文法と、の関係を定めた複数の文法を含むEXI文法書を読み込む。前記文法選択部は、開始文法から前記EXI文法書の各文法を順次辿るように選択する。前記更新判定部は、前記文法を選択するごとに前記XML文書構造上の位置を特定する文法スタックを逐次更新し、更新された文法スタックが、前記対応情報で示される箇所を示すかどうかを判断する。前記読み飛ばし関数設定部は、前記更新された文法スタックが前記箇所を示さないとき、選択した文法に対して前記文法スタックが示す位置に対応する前記EXIストリームの値を読み飛ばす、読み飛ばし関数を設定する。前記読み出し関数設定部は、前記更新された文法スタックが前記箇所を示すとき、前記文法スタックが示す位置に対応する前記EXIストリームの値を読み出して、前記箇所に対応する前記変数に与える、読み出し関数を設定する。前記コードコンポーザは、各前記文法に対しそれぞれ選択された前記読み飛ばし関数および前記読み出し関数を含むEXIデコーダを生成する。以下、図面を参照しながら、本発明の実施形態について説明する。図1は、本発明の実施形態を説明するための背景知識として、EXIデコーダの内容を説明するための図である。EXIEfficientXMLInterchangeストリームは、元はXML文書から生成されたイベントの列であり、XML文書のタグ開始終了属性などの構造イベントコードと、構造に含まれる値データとが、一列に配置されたイベントストリームである。このようなEXIストリームがEXIデコーダに与えられ、デコードされる。XML文書では、タグは入れ子構造になっている。XMLの特性から、ストリームにおいて、許されるイベントの順序が決定される。EXIデコーダは、これを解釈するための状態機械の形で、構成される。EXIデコーダの処理として、タグが開始されるとそのタグの内部の構文を解釈するための状態機械が生成され、タグの終了とともにその状態機械は終了する。そして、タグの入れ子関係が状態機械のスタックとなり、ストリームの内容に応じてこのスタックを構成する仕組みを備えることにより、EXIデコーダは構成される。通常のEXIデコーダでは、この状態機械における状態遷移から、元となるXML文書を復元する。本発明の実施形態では、特に組込み機器への搭載などの限定的な用途を想定したEXIデコーダを提供する。つまり、自由度の高い構造化文書であるXML文書をそのまま利用復元するのではなく、EXIストリームから、用途に関係ある部分後述する構造体の値のみを出力するEXIデコーダの生成を目的とする。このようなEXIデコーダ専用EXIデコーダを生成するための、デコーダコンパイラデコーダ生成器を、本実施形態では、提案する。図2に、本実施形態で生成される専用EXIデコーダの動作イメージを示す。専用EXIデコーダは、EXIストリームを入力として、一定の構造を持つ構造体を出力する。たとえば図1の例において、内容1、内容2、内容3が定義された構造体をターゲットとしたデコーダは、内容1、内容2、内容3の値のみを出力し、XML文書全体の復元は行わない。つまり、EXIストリームとして入力されたXML文書全体情報のうち、機器が想定する用途に合致しない部分は捨てる。これにより、専用EXIデコーダを利用するアプリケーションは、XMLの自由度を無視して処理を記述でき、また不要な処理に対処するためのコードをデコーダに搭載しなくて良いという効果が得られる。図3に、本実施形態に係るデコーダコンパイラと、それに対する入出力の関係を示す。本デコーダコンパイラ11は、対象XML文書の構造を決定するXMLスキーマから生成したEXI文法木、スキーマと出力構造体とを対応づけるスキーマ-構造体対応情報、デコーダのコードテンプレートコード断片辞書を入力として受ける。EXI文法木は、XMLスキーマがスキーマ分析モジュール31により変換されたものである。デコーダコンパイラ11は、これらの入力に基づき、専用EXIデコーダを生成する。付録A1に、説明のための利用するXML文書を示す。XML文書は、タグ名、属性、属性値、本文など、様々な要素により記述される。本実施形態に係る専用EXIデコーダは、このようなXML文書がエンコードされたEXIストリームを入力としてデコードし、必要な情報のみを抽出する。付録A2に、本説明で用いるXMLスキーマの例を示す。XMLスキーマは、XML文書の許容される構造を定める。このスキーマ例は、参考文献1JohnSchneiderandTakukiKamiyaEfficientXMLInterchangeFormat10W3CCandidateRecommendationDecember2009httpwwww3orgTRexiより引用したものである。付録A1のXML文書は、付録A2のXMLスキーマに準拠している。付録A3に、付録A2のスキーマから生成したEXI文法の例を示す。XML文書構造の各要素を表現するイベントと、EXIイベントコードと、次に用いるべき文法との関係を定めた複数の文法を含む。本実施形態では、XMLのイベントとして、SAXイベントを想定している。XML文書をSAXイベント列に変換するSAXパーサは広く知られているものである。エンコード側の装置では、XML文書をSAXイベント列に変換し、SAXイベント列とEXI文法とからEXIストリームを生成する。EXIストリームはEXIイベントコードと、EXIイベントコードに関連づけられた値とを含むストリームである。エンコード側でどのようにEXIストリームを生成するかは任意でよいが、一例を示すと次のようになる。SAXイベント列の先頭から順番に、EXI文法木における現在の文法から、対応するEXIイベントコードを特定するとともに、SAXイベントが値を指定するときはその値を取得し、さらに次に用いる文法をEXI文法木に基づき特定する。これをSAXイベント列の末尾まで繰り返すことで、EXIイベントコードと値とを含むEXIストリームを得ることができる。付録A4に、スキーマ構造体対応情報の例を示す。スキーマ構造体対応情報の必須構成要素は、以下の通りである。1出力となるべき構造体とその型例では、structproductの部分と、各行の要素宣言の部分にあたる。より詳細に、structproductは構造体の名前、skuなどは要素の名前、wcharなどは型である。2構造体が対応するXMLタグの開始位置を示すXPath。例では、orderproductが、タグ開始位置を示すXPathにあたる。これは、XML文書のの下位のから、対応するまでの範囲が、ひとつの構造体に対応する情報が存在する範囲後述するBODY部であることを意味する。3構造体の要素の箇所を特定するための、上記XPath位置からの相対Path例では、skuやquantitytextが、相対Pathにあたる。前者の例の場合、productタグの属性の値の箇所が、構造体の要素の箇所である。また後者の例の場合、quantityタグで囲まれた本文の箇所が、構造体の要素quantityの箇所である。4XML文書に含まれる値EXIストリームで送られてきた値を、上記1の構造体の各要素に格納するために用いる型変換関数例では、utf2wcharやutf2floatが、型変換関数にあたる。utf2wcharは、上記値の型を、utfからwcharに変換する関数である。utf2floatは、上記値の型を、utfからfloatに変換する関数である。utfは、XMLスキーマで用いることが定められた型である。なお要素が1つのときは、構造体を用いなくてもよく、この場合は変数を定義すればよい。また本実施形態において構造体の各要素のことをそれぞれ変数と称することもある。図4を用いて、EXIストリームを構成するXML文書の内容と、本実施形態により生成される専用EXIデコーダの内部構成との関係について説明する。専用EXIデコーダの処理において、入力となるXML文書EXIストリームは、スキーマ構造体対応情報の開始位置タグの下位のが登場するまで読み飛ばされる。開始位置タグから順に必要な要素のみを読み取り、一つひとつ構造体の形でデコード結果を出力する。そして、それらの要素を、読み終えたらデコード終了となる。より詳細に、XML文書は、図示のように、HEAD部BODY部TAIL部の3つに分けることができる。HEAD部は、スキーマ構造体対応情報の開始位置タグの下位のが登場する直前までの部分である。TAIL部は、当該タグが終了した直後本例ではの直後から文書の末尾までの部分である。BODY部は、開始位置タグから終了タグまでの部分~である。付録A1の例では、BODY部は3回繰り返されている。このようにHEAD部BODY部TAIL部に分ける処理が簡単になる。HEAD部と、TAIL部には、構造体に対応する情報は含まれないため、すべて読み飛ばせばよい。BODY部についてのみ、必要な要素を読み出す処理ができるように、デコード処理を工夫する。この工夫された処理を行うのが、図示のBODY部デコーダ関数である。なお、HEAD部BODY部TAIL部に分けることは本実施形態の必須要件ではなく、これらに分けることなく後述の処理を行っても良い。図5は、本実施形態に係るデコーダコンパイラ11の構成を示す図である。デコーダコンパイラ11は、文法選択部12、更新判定部13、コードコンポーザ14を備える。コードコンポーザ14は、読み飛ばし関数設定部15と、読み出し関数設定部16を備える。デコーダコンパイラ11は、EXI文法木、スキーマ-構造体対応情報、コードテンプレートコード断片辞書を入力として受ける。デコーダコンパイラ11は、スキーマ-構造体対応情報を読み込む第1読み込み手段と、EXI文法木を読み込む第2読み込み手段とを含む。各読み込み手段の読み込み先は、同じまたは異なる記憶装置である。読み込みは、ネットワークを介して行っても良い。文法選択部12は、所定の開始文法から、EXI文法木の各文法を順次辿るように選択する。更新判定部13は、文法選択部12により文法を選択するごとに、XML文書構造上の位置を示す文法スタックを逐次更新する。更新判定部13は、更新した文法スタックが、スキーマ-構造体対応情報で指定される箇所を示すかを判断する。コードコンポーザ14は、更新判定部13の判断結果に応じて、上記選択された文法に対して関数を設定する。上記文法スタックが、スキーマ-構造体対応情報で指定される箇所を示さないとき、読み飛ばし関数設定部15を用いて、選択した文法に対して、文法スタックに示される位置の値を読み飛ばす、読み飛ばし関数を設定する。上記文法スタックが、スキーマ-構造体対応情報で指定される箇所を示すとき、文法スタックに示される位置の値をEXIストリームから読み出して、その値を、当該箇所に対応する構造体要素メンバに与える、読み出し関数を設定する。コードコンポーザ14は、各文法に対しそれぞれ選択された読み飛ばし関数および読み出し関数を含むEXIデコーダを生成する。なお、EXIデコーダには、これらの関数の他、デコードに当然に必要とされる命令コードも含める。たとえば、開始文法を起点に、EXIストリームの先頭から順次EXIイベントを取り出し、EXI文法木と現在の文法に基づき、取り出したEXIイベントに応じて次に用いる文法を選択する命令コード、EXIイベントコードに値が関連づけられているときは、現在の文法に対応づけられた関数読み飛ばし関数または読み出し関数を実行して、取り出したEXIイベントに関連づけられた値を処理する命令コード、読み出し関数の実行により読み出した構造体の値を出力する命令コード等も含む。以下、コードコンポーザ14が行う処理の動作について、さらに詳細に説明する。図6は、本実施形態に係るデコーダコンパイラ11の処理の流れの例を説明したフローチャートである。デコーダコンパイラ11は、文法スタックsと、デコーダ辞書Dを持ち、これらを初期化するS101、S102。デコーダ辞書Dは、EXI文法とイベントコードに基づき、生成する専用EXIデコーダ用のコード断片を格納する辞書である。文法スタックは、文法のスタックであり、各文法解析木がXML文書のどの部分に対応するのかを示す手がかりとなる。具体的には、各文法スタックは、タグや属性などのイベントに対応するが、タグの内容を示すラベルを、各スタックから集めて並べると、XPathによるタグのパス表記に近いものとなる。また、処理済の文法を示す文法セットGsを初期化するS103。入力されたEXI文法には開始文法が必ず一つ含まれ、Gsは開始文法を初期値として持つ。また、開始文法に対応するスタック状態は空である。ここで、到達可能という概念を定義する。EXIの文法は、LeftHandSideTerminalNonTerminalEventCodeの4つから構成される。LeftHandSideの状態の時、Terminalのイベントが発生したら、EventCodeを出力し、NonTerminalの状態に移行する。LeftHandSideg1からNonTerminalg2の状態に以降する文法が存在する場合、状態g1からg2に到達可能である、と定義する。たとえば付録A3の例に則して説明する。XMLのイベントをEXIイベントに変換する例で説明すると、に対する文法において、Usecolor0状態のとき、ATイベントが発生したら、イベントコード01ビットのゼロを出力し、Usecolor1状態に遷移する。デコーダコンパイラ11のメインプロセスは、Gsに含まれる文法から到達可能で、Gsに含まれない文法を、文法選択部12により一つ選択しS104、その文法に対してデコーダ辞書を作成することの繰り返しである。選択できる文法が複数あるときは、次回以降のループで選択する。これにより、EXI文法付録A3参照に含まれる、全ての文法を処理し終えるまで、以下の処理を繰り返すS105~S109。選択した文法をgと置き、更新判定部13により、gに到達した文法の文法スタックsに、gに対応する文法を積むことで文法スタックsを更新する。ここで、文法スタックsの更新はEXIと同様に、タグ開始のSEに相当する時は一つ上に新しいスタックを生成し、タグ終了のEEに相当する時は最上位のスタックを消滅させる。文法スタックsならびに文法gから、現在の文法がXMLのどの部分に対応するかを、更新判定部13により特定する。具体的には、文法スタックは各々XMLタグの階層に対応し、文法gのTerminal付録A3の例では、ATやSEといったSAXイベントで指定される括弧内の値が、構造体の要素や、文字列などに対応する。スキーマ構造体対応情報の構造体の各要素について、開始タグ位置と各要素の相対位置を加算すると、各要素のXML文書中の位置が得られる。開始タグが文法スタックsに含まれ、各要素の相対位置が文法スタックsあるいは文法gに対応する場合S106のtrue、読み出し関数設定部16により、デコーダ辞書Dgとして読み出し関数をセットする。読み出し関数は、該当する値を読み出し、変換関数により型変換して出力する関数である。スキーマ-構造対応情報に示される変換関数を利用する。文法スタックsあるいは文法gに、対応する要素が存在しない場合S106のfalse、読み飛ばし関数設定部15により、デコーダ辞書Dgとして、読み飛ばし関数をセットする。文法gを、文法セットGsに追加し、Gsに全ての文法が格納されているかを判断するS109。まだ格納されていないときは、ステップS104に戻る。全ての文法が文法セットGsに格納されたら、ステップS110に進む。ステップS110では、文法セットGs内のすべての文法の各々に対するデコーダ辞書Dgを、デコーダのコードテンプレートにセットし、必要な関数をリンクすることにより、EXI専用デコーダを得る。以上の手続きを、付録A3のEXI文法と、付録A4のスキーマ構造体対応情報を事例として説明する。スキーマ構造体対応情報の開始タグはorderproductである。文法スタックsがTermorderTermproductとなった際にorderproductに対応する。なお、Termorderは、SEorderに対応するEXIイベントが読み出された状態を示し、Termproductは、SEに対応するEXIイベントが読み出された状態を示すとする。ここで、アトリビュート属性に対応する構造体要素を含む文法は、以下の2つの文法Usecolor0と、Usecolor1である。CompletegrammarforelementUsecolor0ATschematypedvalueUsecolor10ATschematypedvalueUsesku11ATuntypedvalueUsecolor1240ATuntypedvalueUsesku1241Usecolor1ATschematypedvalueUsesku10ATuntypedvalueUsesku1120それぞれ、ATが、colorに対応し、ATがskuに対応する。したがって、Usecolor0の文法に対して、productタグの属性colorskuの値を読み出して、utfからwcharへの型変換を行った上、構造体要素wcharskuwcharcolorに、変換された値を入力する、読み出し関数を設定する。Usecolor1の文法についても同様に、読み出し関数を、当該文法に対するデコーダ辞書Dgとして、設定する。また、quantitytextおよびpricetextは次の文法に対応する。CompletegrammarforelementTermquantity01CHuntypedvalueTermquantity0121Termprice01CHuntypedvalueTermprice0131Termquantity11CHuntypedvalueTermquantity1121Termprice11CHuntypedvalueTermprice1111textは、CHに対応するので、以上の文法が各要素に対応する。したがって、Termquantity01の文法に対して、SEに相当するEXIイベントの値XML文書でいうところのquantityタグの本文の値を読み出して、intからutfへの型変換を行った上、構造体要素intquantityに変換された値を入力する、読み出し関数を設定する。Termprice01、Termquantity11、Termprice11の文法についても同様に、読み出し関数を、デコーダ辞書Dgとして、それぞれ設定する。つまり、EXIストリームでは、イベントコードに続いて、存在する場合は値が与えられるが、この値を構造体に入力するための関数が、対応する文法のデコーダ辞書Dに記載される。つまり、utf2wcharあるいはutf2intutf2floatにより、読み取った値utf型を有するを、charあるいはintfloatに変換する関数を、対応する文法のデコーダ辞書にDに記載する。スキーマ構造体対応情報に対応しない文法については、イベントコードを読み出した後、値必要としない情報を読み飛ばす関数が、デコーダ辞書Dに記載される。以下、本実施形態により生成された専用EXIデコーダがどのように動作するかを説明する。図7に、専用EXIデコーダによるデコード処理の流れを示す。専用EXIデコーダはデコーダ辞書Dをもとに、デコード処理を行う。専用EXIデコーダは、EXI文法に対応したデコーダ機能を含む。ただし、通常のデコーダと、次の3点で異なる。1構造体スキーマ対応情報に記載されたデコード開始位置までのストリームHEAD部に相当は、単に読み飛ばすS121のfalse、S122、S1232BODY部のデコードは、繰り返し要素たとえば~かを判断し、BODY開始位置でないときはS121のfalse、図8のEXIデコーダ::処理を実行しS122、次に、現在の文法に対応する辞書デコーダにより、値を読み飛ばすS123。BODY開始位置になったときはS121のtrue、図9のBODY部処理を実行しS124、処理結果として構造体rを生成し、BODY部がさらに存在すればS127のtrue、すなわちBODY開始位置を示すEXIイベントが検出されれば、ステップS124に戻る。BODY部がもはや存在しなければS127のfalse、その時点で処理を終了し、TAIL部に対するEXIイベントの処理は行わない。図8は、図7のステップS122、または後述する図9のステップS142で行うEXIデコーダ::処理の流れを示す。現在の文法に従って理解されるEXIイベントコードが、タグ終了イベントEEまたはタグ開始イベントSEを示すかを判断するS131、S132、S133、S135。タグ開始イベントおよびタグ終了イベントを示すときに限って、状態機械スタックを操作する。つまり、タグ開始イベントを示すときは、開始イベントに対応する状態機械を、状態機械スタックにプッシュpuchし、タグ終了イベントを示すときは、状態機械スタックから状態機械をポップするS136、S134。そして、現在のスタック状態sを返す。この操作により、デコード処理が文書のどこに相当するかを、デコード処理の各ステップで確認できる。図9は、図7のステップS124で行うBODY部処理の流れを示す。EXIストリームから読み出されるべき構造体rを、構造体スキーマ対応情報に含まれる構造体定義に従って初期化しS141、図8のEXIデコーダ::処理を行いS142、現在の文法スタックが、スキーマ-構造体対応情報の要素が持つXPathに対応するかを判断するS143。要素がもつXpathに対応するときは、EXIストリームの値部分を、現在の文法に対応する辞書デコーダを用いて読み出し、読み出した値を、構造体rの要素のうち該当する要素に書き込むS144S145。一方、要素がもつXpathに対応しないときはfalse、現在のEXIイベントが、BODY部タグを閉じるイベントかを検査し、trueであるときは、本処理を終了し、falseであるときは、ステップS142に戻る。図10に、本実施形態により生成した専用EXIデコーダを組み込んだ通信機器の構成例を示す。本実施形態で生成した専用EXIエンコーダは、スマートメータおよび移動体機器等、資源制約の厳しい通信機器に組み込まれる。通信機器21は、相手機器との間で効率的なXML文書のやりとりを行うため、相手機器図示せずからに、XML文書の内容がエンコードされたEXIストリームを受信部23で受信する。EXIストリームは、上述したように、複数のEXIイベントと、EXIイベントの全部または一部にそれぞれ関連づけられた値とのシーケンスである。デコード実行部であるCPU24が、記憶部22内の専用EXIデコーダをメモリ25に展開して実行する。実行により、EXI文法木もメモリ25に読み出され用いられる。なお、EXI文法木がEXIデコーダに含まれていても良い。専用EXIデコーダの実行により、構造体の各要素の値のみが、EXIストリームから取得される。つまり、EXIストリームの先頭からEXIイベントコードを特定し、当該EXIイベントコードと、事前に選択された文法最初は開始文法に基づき、次に用いる文法を選択する。そして、EXIイベントコードに値が関連づけられているときはEXIイベントコードの次に値が格納されているとき、つまりEXIイベントコードがCHイベントあるいはATイベントに相当するとき、EXIイベントコードが得られたときの文法に対応づけられた関数読み出し関数または読み飛ばし関数により、当該値を処理する。例えば、一つの応用事例として、読み出し関数の実行により読み出した構造体の各要素の値を、表示部26に出力する、などといった応用が考えられる。各要素の値を記憶部22または他の記録媒体に格納してもよい。EXIデコーダの動作の詳細な説明は既に、図7、図8、図9および図2を用いて述べた通りである。以上に説明したEXIデコーダコンパイラ11により、任意のXMLスキーマに対応するEXIデコード処理に関して、組み込み向けのような特定用途の環境において、その用途に対応する専用のデコーダを生成できる。このデコーダは、出力に無関係な不要な部分を読み飛ばし、出力に関係する部分のみを読み出して、構造体の形で返す。これにより、デコーダ利用側は、XMLが持つ高い自由度に対応する必要がなくなる。よってデコーダのみならず周辺の構成が、公知なEXIデコード方式に比べて簡素とすることができる。また、デコーダ利用側の処理負荷が低くて済む。なお、以上に説明した実施形態におけるデコーダコンパイラ11は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、デコーダコンパイラ11における文法選択部12、更新判定部13およびコードコンポーザ14は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、デコーダコンパイラ11は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、CD-ROMなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。AサンプルデータA1想定するXML文書の具体例40339502515503018395A2XMLスキーマの例A3EXI文法の例CompletegrammarforelementEventCodeUsecolor0ATschematypedvalueUsecolor10ATschematypedvalueUsesku11EE20ATUsecolor021ATUsecolor022ATUsecolor023ATuntypedvalueUsecolor1240ATuntypedvalueUsesku1241ATuntypedvalueUsecolor0242SEUsesku1copied25CHuntypedvalueUsesku1copied26Usecolor1ATschematypedvalueUsesku10EE10ATUsecolor111ATuntypedvalueUsesku1120ATuntypedvalueUsecolor1121SEUsesku1copied13CHuntypedvalueUsesku1copied14Usesku1SETermdescription010SETermquantity011EE20ATUsesku121ATuntypedvalueUsesku1220SEUsesku1copied23CHuntypedvalueUsesku1copied24Usesku1copiedSETermdescription010SETermquantity011EE20SEUsesku1copied21CHuntypedvalueUsesku1copied22Termdescription01SETermquantity010EE1SETermdescription0120CHuntypedvalueTermdescription0121Termquantity01SETermprice010EE1SETermquantity0120CHuntypedvalueTermquantity0121Termprice01SETermdescription110SETermquantity111EE2SETermprice0130CHuntypedvalueTermprice0131Termdescription11SETermquantity110EE1SETermdescription1120CHuntypedvalueTermdescription1121Termquantity11SETermprice110EE1SETermquantity1120CHuntypedvalueTermquantity1121Termprice11EE0SETermprice1110CHuntypedvalueTermprice1111CompletegrammarforelementEventCodeTermproduct00SETermproduct100EE10ATTermproduct0011ATTermproduct0012ATTermproduct0013ATuntypedvalueTermproduct00140SETermproduct00copied15CHuntypedvalueTermproduct00copied16Termproduct00copiedSETermproduct100EE10SETermproduct00copied11CHuntypedvalueTermproduct00copied12Termproduct10SETermproduct100EE1SETermproduct1020CHuntypedvalueTermproduct1021A4スキーマ構造体対応情報orderproductstructproductwcharskuutf2wcharskuwcharcolorutf2wcharcolorintquantityutf2intquantitytextfloatpriceutf2floatpricetext