(57)【要約】【課題】  構造化文書中の構成要素の値に問題があった場合にこれを適切な値に修正する動作を、より簡便な構成で実現する為の技術を提供すること。【解決手段】  データ型比較部１１８は、構造化文書１４２中の要素のデータ型と、データ型定義一覧表１１６中のデータ型とを比較し、互いに一致しているか否かを判断する。一致していない場合、データ修正値取得部１２０は、データ修正値一覧表１１９から、対応する修正値を取得し、データ修正部１２１は、構造化文書１４２中の要素のデータ型を、データ修正値取得部１２０が取得した修正値で更新する。【選択図】  図１
2011258024.tif 000002
【特許請求の範囲】
【請求項１】
解析対象の構造化文書を取得する手段と、
前記構造化文書中の構成要素の値の代わりに用いる値として予め設定された修正値と、前記値の代わりに前記修正値を用いるために前記値が満たすべき条件として予め設定された条件情報と、が登録されたテーブル情報を用いて、前記構成要素の値が前記条件を満たしているか否かを判断する判断手段と、
前記構成要素の値が前記条件を満たしていると前記判断手段が判断した場合には、前記テーブル情報から前記修正値を取得し、前記構成要素の値を該取得した修正値に置き換えることで前記構造化文書を更新する更新手段と
を備えることを特徴とする情報処理装置。
【請求項２】
更に、
前記構成要素の値が前記条件を満たしていると前記判断手段が判断した場合には、前記修正値を、前記構造化文書に対する解析指示を行ったアプリケーションプログラムに対して通知する手段を備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
解析対象の構造化文書を取得する手段と、
前記構造化文書中の構成要素が取りうる値として予め設定された設定値と、該構成要素の値が該設定値と一致する場合に該値の代わりに用いる値として予め設定された修正値と、が登録されたテーブル情報を用いて、前記構成要素の値が前記設定値と一致しているか否かを判断する判断手段と、
前記構成要素の値が前記設定値と一致していると前記判断手段が判断した場合には、前記テーブル情報から前記設定値を取得し、前記構成要素の値を該取得した設定値に置き換えることで前記構造化文書を更新する更新手段と
を備えることを特徴とする情報処理装置。
【請求項４】
前記テーブル情報は、前記構造化文書のスキーマを定義したスキーマ定義情報から作成された情報であることを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の取得手段が、解析対象の構造化文書を取得する工程と、
前記情報処理装置の判断手段が、前記構造化文書中の構成要素の値の代わりに用いる値として予め設定された修正値と、前記値の代わりに前記修正値を用いるために前記値が満たすべき条件として予め設定された条件情報と、が登録されたテーブル情報を用いて、前記構成要素の値が前記条件を満たしているか否かを判断する判断工程と、
前記情報処理装置の更新手段が、前記構成要素の値が前記条件を満たしていると前記判断工程で判断した場合には、前記テーブル情報から前記修正値を取得し、前記構成要素の値を該取得した修正値に置き換えることで前記構造化文書を更新する更新工程と
を備えることを特徴とする情報処理方法。
【請求項６】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の取得手段が、解析対象の構造化文書を取得する工程と、
前記情報処理装置の判断手段が、前記構造化文書中の構成要素が取りうる値として予め設定された設定値と、該構成要素の値が該設定値と一致する場合に該値の代わりに用いる値として予め設定された修正値と、が登録されたテーブル情報を用いて、前記構成要素の値が前記設定値と一致しているか否かを判断する判断工程と、
前記情報処理装置の更新手段が、前記構成要素の値が前記設定値と一致していると前記判断工程で判断した場合には、前記テーブル情報から前記設定値を取得し、前記構成要素の値を該取得した設定値に置き換えることで前記構造化文書を更新する更新工程と
を備えることを特徴とする情報処理方法。
【請求項７】
コンピュータを、請求項１乃至４の何れか１項に記載の情報処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＸＭＬなどの言語で記述された構造化文書を解析するための技術に関するものである。
【背景技術】
【０００２】
従来、Ｗ３Ｃで仕様が規定されているＸＭＬ言語で記述された構造化文書を解析する手段として、ＸＭＬパーサとよばれる構文解析プログラムが知られている。また、ＸＭＬパーサを使って構造化文書の構文解析を行う場合、ＸＭＬスキーマ記述言語で記述されたスキーマ定義と比較して、文書構造、データ型などの妥当性を検証するスキーマ検証技術が知られている。
【０００３】
例えば、特許文献１では、妥当性検証処理を簡略化し、処理速度を向上する技術について記述されている。なお、ＸＭスキーマ記述言語として代表的なものには、Ｗ３Ｃ標準のＸＭＬ Ｓｃｈｅｍａ、ＩＳＯ標準のＲｅｌａｘ ＮＧがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−８４９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アプリケーションプログラムが、ＸＭＬパーサを使ってＸＭＬ文書を解析中、スキーマ定義とＸＭＬ文書とを比較する妥当性検証を行う場合がある。妥当性検証の結果、ＸＭＬ文書がスキーマ定義と異なった際、ＸＭＬパーサはエラーメッセージをアプリケーションプログラムに通知する。
【０００６】
エラーメッセージ通知の際、ＸＭＬ文書の構造に問題はないが要素内容の文字列、属性値に問題があった場合、アプリケーションプログラムが適切な値に修正するなど、エラー回復を行って処理を継続することがよくある。
【０００７】
ただし、実行環境によって適切な値が異なったり、同じ実行環境でも、後で変更される可能性があったりした場合、アプリケーションプログラムに、修正値を実行時に動的に取得するための処理を追加する必要がある。
【０００８】
このようなアプリケーションプラグラムが複数あった場合、それぞれのアプリケーションごとにこのような処理を追加する必要があり、アプリケーションプログラムのサイズの合計が大きくなる問題があった。
【０００９】
本発明は以上の問題に鑑みてなされたものであり、構造化文書中の構成要素の値に問題があった場合にこれを適切な値に修正する動作を、より簡便な構成で実現する為の技術を提供する。
【課題を解決するための手段】
【００１０】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。即ち、解析対象の構造化文書を取得する手段と、前記構造化文書中の構成要素の値が満たすべき条件として予め設定された条件情報と、該値が該条件を満たさない場合に該値の代わりに用いる値として予め設定された修正値と、が登録されたテーブル情報を用いて、前記構成要素の値が前記条件を満たしているか否かを判断する判断手段と、前記構成要素の値が前記条件を満たしていないと前記判断手段が判断した場合には、前記テーブル情報から前記修正値を取得し、前記構成要素の値を該取得した修正値に置き換えることで前記構造化文書を更新する更新手段とを備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、構造化文書中の構成要素の値に問題があった場合にこれを適切な値に修正する動作を、より簡便な構成で実現することができる。
【図面の簡単な説明】
【００１２】
【図１】構造化文書解析装置１００の構成例を示すブロック図。
【図２】スキーマ定義情報１４１の構成例を示す図。
【図３】ＸＭＬ言語で記述した構造化文書１４２の構成例を示す図。
【図４】構造定義一覧表１１３の構成例を示す図。
【図５】データ型定義一覧表１１６の構成例を示す図。
【図６】データ修正値一覧表１１９の構成例を示す図。
【図７】構造化文書解析装置１００が行う処理のフローチャート。
【図８】ステップＳ７０５における処理の詳細を示すフローチャート。
【図９】スキーマ定義情報１４１の構成例を示す図。
【図１０】データ修正値一覧表１１９の構成例を示す図。
【図１１】ステップＳ７０５における処理の詳細を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１４】
［第１の実施形態］
先ず、本実施形態に係る情報処理装置としての、構造化文書解析装置１００の機能構成例について、図１のブロック図を用いて説明する。なお、図１には、以下に説明する処理で用いる主要な構成のみを記している。また、以下に説明する処理を実現することができるのであれば、その構成は図１に示した構成に限るものではない。
【００１５】
構造化文書解析装置１００には、記憶装置１４０が接続されている。本実施形態では、この記憶装置１４０はハードディスクドライブ装置であるものとして説明するが、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体であっても良い。この場合、構造化文書解析装置１００には、この記憶媒体から情報を読み出す機能を有するドライブ装置を接続する必要がある。
【００１６】
記憶装置１４０には、解析対象となる構造化文書１４２、構造化文書１４２のスキーマ（記述言語の文法）を定義しているスキーマ定義情報１４１、がそれぞれデータ（ファイル）として格納されている。
【００１７】
構造化文書解析装置１００は、ＣＰＵ１３０及びメモリ１１０を有する。ＣＰＵ１３０は、メモリ１１０に格納されているコンピュータプログラムやデータを用いて処理を実行することで、以下に説明する各処理を実行する。メモリ１１０には、以下に説明するコンピュータプログラムやデータが格納されている。
【００１８】
スキーマ定義解析部１１１は、コンピュータプログラムとして実装されているもので、ＣＰＵ１３０はこのスキーマ定義解析部１１１を実行することで、記憶装置１４０からスキーマ定義情報１４１を読み込んで解析する機能を実現する。この解析により、構造定義一覧表１１３、データ型定義一覧表１１６、データ修正値一覧表１１９、がデータとして作成され、メモリ１１０に格納される。構造定義一覧表１１３、データ型定義一覧表１１６、データ修正値一覧表１１９のそれぞれについては後述する。
【００１９】
構造化文書解析部１１２は、コンピュータプログラムとして実装されているもので、ＣＰＵ１３０はこの構造化文書解析部１１２を実行することで、記憶装置１４０から構造化文書１４２を読み込んで解析する機能を実現する。
【００２０】
構造定義取得部１１４は、コンピュータプログラムとして実装されているもので、ＣＰＵ１３０はこの構造定義取得部１１４を実行することで、構造定義一覧表１１３から必要な情報を読み出す機能を実現する。
【００２１】
構造定義比較部１１５は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこの構造定義比較部１１５を実行することで、構造定義取得部１１４により構造定義一覧表１１３から取得された情報と、構造化文書解析部１１２により解析された構造化文書１４２の構造と、を比較する機能を実現する。
【００２２】
データ型定義取得部１１７は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこのデータ型定義取得部１１７を実行することで、データ型定義一覧表１１６から必要な情報を読み出す機能を実現する。
【００２３】
データ型比較部１１８は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこのデータ型比較部１１８を実行することで、データ型定義取得部１１７によりデータ型定義一覧表１１６から取得された情報と、構造化文書解析部１１２により解析された構造化文書１４２のデータ型と、を比較する機能を実現する。
【００２４】
データ修正値取得部１２０は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこのデータ修正値取得部１２０を実行することで、データ修正値一覧表１１９から必要な情報を読み出す機能を実現する。
【００２５】
データ修正部１２１は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこのデータ修正部１２１を実行することで、データ修正値取得部１２０が取得した修正値を用いて、構造化文書１４２内の値を更新する等の機能を実現する。
【００２６】
データ通知部１２２は、コンピュータプログラムとして実装されているものである。ＣＰＵ１３０はこのデータ通知部１２２を実行することで、構造化文書１４２の解析結果をアプリケーションプログラムに対して通知する機能を実現する。
【００２７】
なお、以下の説明では便宜上、メモリ１１０にコンピュータプログラムとして格納されているものとして説明した上記各部を動作の主体として説明することもある。しかし実際には上記の通り、ＣＰＵ１３０がこれら各部を実行することで、対応する機能が実現される。
【００２８】
図２に、スキーマ定義情報１４１の構成例を示す。図２では、ISOで規定されているXMLスキーマ記述言語であるRelax NGで記述されているスキーマ定義情報１４１の構成例を示している。但し、データ修正値一覧表１１９の生成で用いる名前空間宣言部２００、修正値の定義を指定するための属性定義部２０１、２０２、２０３、２０４、２０５がRelax NG仕様から拡張されている。
【００２９】
図２に示したスキーマ定義情報１４１によるスキーマ定義によれば、解析対象となる構造化文書１４２（ここではＸＭＬ文書）は、camera_setting要素がルート要素であり、このルート要素は、name、pan、tiltという子要素を持つ。
【００３０】
name要素のデータ型は30文字以内の文字列であり、もし構造化文書１４２内のname要素のデータ型が「30文字以内の文字列」ではなかった場合にname要素の値の代わりに用いられる値（修正値）を”my camera”と定義している。
【００３１】
また、pan要素のデータ型は、-180より大且つ180以下の条件をもつ整数値である。もし構造化文書１４２内のpan要素のデータ型が「-180より大且つ180以下の条件をもつ整数値」ではなかった場合にpan要素の値の代わりに用いられる値（修正値）を「−１７９」、「１８０」と定義している。
【００３２】
さらに、tilt要素のデータ型は、0以上且つ90以下の条件をもつ整数値である。もし構造化文書１４２内のtilt要素のデータ型が「0以上且つ90以下の条件をもつ整数値」ではなかった場合にtilt要素の値の代わりに用いられる値（修正値）を「０」、「９０」と定義している。
【００３３】
以下の説明では、図２に示したものをスキーマ定義情報１４１として用いた場合について説明するが、要素の名称や値、条件が異なっていても以下の説明の本質は同じである。
【００３４】
図３に、ＸＭＬ言語で記述した構造化文書１４２の構成例を示している。図３（ａ）に示した構造化文書１４２におけるpan要素の値「−３０」は、図２に示したスキーマ定義情報１４１でpan要素について定義している条件「-180より大且つ180以下の条件をもつ整数値」に合致している。また、図３（ａ）に示した構造化文書１４２におけるtilt要素の値「６０」は、図２に示したスキーマ定義情報１４１でtilt要素について定義している条件「0以上且つ90以下の条件をもつ整数値」に合致している。即ち、図３（ａ）に示した構造化文書１４２は、図２に示したスキーマ定義情報１４１によるスキーマ定義に合致している構造化文書となる。
【００３５】
図３（ｂ）に示した構造化文書１４２におけるpan要素の値「−２００」は、図２に示したスキーマ定義情報１４１でpan要素について定義している条件「-180より大且つ180以下の条件をもつ整数値」には合致していない。また、図３（ｂ）に示した構造化文書１４２におけるtilt要素の値「６０」は、図２に示したスキーマ定義情報１４１でtilt要素について定義している条件「0以上且つ90以下の条件をもつ整数値」に合致している。即ち、図３（ｂ）に示した構造化文書１４２は、図２に示したスキーマ定義情報１４１によるスキーマ定義に合致していない構造化文書となる。
【００３６】
図３（ｃ）に示した構造化文書１４２におけるpan要素の値「マイナス三十」は、図２に示したスキーマ定義情報１４１でpan要素について定義している条件「-180より大且つ180以下の条件をもつ整数値」には合致していない。また、図３（ｃ）に示した構造化文書１４２におけるtilt要素の値「６０」は、図２に示したスキーマ定義情報１４１でtilt要素について定義している条件「0以上且つ90以下の条件をもつ整数値」に合致している。即ち、図３（ｃ）に示した構造化文書１４２は、図２に示したスキーマ定義情報１４１によるスキーマ定義に合致していない構造化文書となる。
【００３７】
次に、構造化文書解析装置１００が行う処理について、同処理のフローチャートを示す図７を用いて説明する。図７のフローチャートに従った処理は、スキーマ定義情報１４１の解析指示をＣＰＵ１３０が検知したことに応じて開始される。なお、スキーマ定義情報１４１の解析指示は、メモリ１１０にロードされているアプリケーションプログラムを介して入力されるものである。この解析指示は、構造化文書解析装置１００に備わっている不図示のユーザインターフェース（キーボードやマウスなど）を用いて入力しても良いが、何れの場合においてもこの解析指示は、上記アプリケーションプログラムを介してＣＰＵ１３０に通知される。
【００３８】
ステップＳ７０１では、スキーマ定義解析部１１１は、記憶装置１４０からスキーマ定義情報１４１をメモリ１１０に読み込む。ステップＳ７０２では、スキーマ定義解析部１１１は、この読み込んだスキーマ定義解析部１１１から、構造化文書の構造を定義する情報を読み出し、読み出した情報を構造定義一覧表１１３に書き込むことで、この構造定義一覧表１１３を完成させる。
【００３９】
図４に、図２のスキーマ定義情報１４１からステップＳ７０２で作成した構造定義一覧表１１３の構成例を示す。要素名の欄４０１には、スキーマ定義情報１４１内に定義されているルート要素の要素名camera_settings、子要素の要素名name,pan,tiltが登録されている。これらの要素は、「構造化文書１４２が有するべき要素」である。また、構造情報の欄４０２には、ルート要素が従うべき規則「子要素name、pan、tiltをこの順番でもつ」と、子要素が従うべき規則「要素内容として＜data＞で定義された形式の文字列をもつ」が登録されている。これらの規則は、「構造化文書１４２が従うべき規則」である。
【００４０】
図７に戻って次に、ステップＳ７０３ではスキーマ定義解析部１１１は、ステップＳ７０１で読み込んだスキーマ定義情報１４１から、構造化文書中の子要素のデータ型を定義する情報を読み出す。そしてスキーマ定義解析部１１１は、読み出した情報をデータ型定義一覧表１１６に書き込むことで、このデータ型定義一覧表１１６を完成させる。
【００４１】
図５に、図２のスキーマ定義情報１４１からステップＳ７０３で作成したデータ型定義一覧表１１６の構成例を示す。要素名の欄５０１には、スキーマ定義情報１４１内に定義されている子要素の要素名name,pan,tiltが登録されている。これらの要素は、「構造化文書１４２が有するべき要素」である。また、データ型情報の欄５０２には、それぞれの子要素のデータ型が登録されている。例えば、name要素の要素名「name」は欄５０１に登録され、name要素のデータ型「30文字以内の文字列」は、欄５０２に登録される。このように、要素名と、この要素名を有する子要素のデータ型と、を対応付けてデータ型定義一覧表１１６に登録する。なお、これらのデータ型は、「構造化文書１４２中の子要素が有するべきデータ型」である。
【００４２】
ステップＳ７０４でスキーマ定義解析部１１１は、ステップＳ７０１で読み込んだスキーマ定義情報１４１から、解析対象の構造化文書中の子要素のデータ型がスキーマ定義情報１４１内で定義されているデータ型と一致しない場合に用いる修正値を読み出す。そしてスキーマ定義解析部１１１は、各要素についてスキーマ定義情報１４１から読み出した修正値をデータ修正値一覧表１１９に書き込むことで、このデータ修正値一覧表１１９を完成させる。
【００４３】
図６に、図２のスキーマ定義情報１４１からステップＳ７０４で作成したデータ修正値一覧表１１９の構成例を示す。要素名の欄６０１には、スキーマ定義情報１４１内に定義されている子要素の要素名name,pan,tiltが登録されている。これらの要素は、「構造化文書１４２が有するべき要素」である。条件の欄６０２には、それぞれの子要素について上記欄５０２内に登録されているデータ型で定義されている条件を満たしていない条件が登録されている。
【００４４】
例えば、name要素の場合、name要素のデータ型は図５より「30文字以内の文字列」であるため、このデータ型が示す条件を満たしていない条件とは「30文字より大」となる。然るに欄６０２においてname要素に対応する箇所には、「30文字より大」という条件が記される。
【００４５】
また、pan要素の場合、pan要素のデータ型は図５より「-180より大且つ180以下の条件をもつ整数値」であるため、このデータ型が示す条件を満たしていない条件とは「１８０以下」や「１８０より大」となる。然るに、欄６０２においてpan要素に対応する箇所には、「１８０以下」、「１８０より大」という条件が記される。
【００４６】
修正値の欄６０３には、欄６０２に記された条件が満たされた場合に用いる修正値が登録されている。例えば、欄６０３内のname要素に対応する箇所には、修正値として「”my camera”」が登録されている。そして、構造化文書１４２中のname要素のデータ型が「30文字より大」であれば、name要素の値をこの修正値「my camera」に置き換える。
【００４７】
このように、以上説明したステップＳ７０１〜ステップＳ７０４の処理を行うことで、各テーブル情報（構造定義一覧表１１３、データ型定義一覧表１１６、データ修正値一覧表１１９）を完成させることができる。なお、図２のスキーマ定義情報１４１の記述例では、構造化文書が属性定義を含まない例を示しているが、属性定義を含む場合も、要素名を属性名と読み替えることによってステップＳ７０１〜ステップＳ７０４と同様な処理を行うことができる。
【００４８】
次に、メモリ１１０にロードされているアプリケーションプログラムを介して入力された構造化文書１４２の解析指示をＣＰＵ１３０が検知すると、ステップＳ７０５における処理が開始される。ステップＳ７０５では、ステップＳ７０１〜ステップＳ７０４の処理で完成させたテーブル情報を用いて構造化文書１４２を解析し、その解析結果を、構造化文書１４２の解析を指示したアプリケーションプログラムに対して通知する。ステップＳ７０５における処理の詳細を示す図８のフローチャートを用いて、ステップＳ７０５における処理について説明する。なお、以下に説明する処理（ステップＳ８０２〜ステップＳ８１２、ステップＳ８１４〜ステップＳ８１６）は、構造化文書１４２に含まれているノード（要素、属性などの文書の構成単位）毎に行われる。
【００４９】
ステップＳ８０２では構造化文書解析部１１２は、記憶装置１４０からメモリ１１０に既に読み出されている構造化文書１４２において未だ読み出していないノード（次のノード）読み出す。
【００５０】
ステップＳ８０３では構造定義取得部１１４は、構造定義一覧表１１３を参照し、ステップＳ８０２で読み出したノードのノード名（要素名）が従うべき規則（図４では欄４０２に登録されている構造情報）を読み出す。例えば、ステップＳ８０２で読み出したノードがname要素である場合、ステップＳ８０３では構造定義一覧表１１３から、name要素に対応する規則「要素内容として＜data＞で定義された形式の文字列をもつ」を読み出す。
【００５１】
ステップＳ８０４では構造定義比較部１１５は、ステップＳ８０２で読み出したノードのノード構造と、ステップＳ８０３で読み出した規則が示すノード構造と、を比較し、互いに一致しているか否かを判断する。この判断の結果、一致していると判断した場合には処理はステップＳ８０５を介してステップＳ８０６に進み、一致していないと判断した場合には処理はステップＳ８０５を介してステップＳ８１４に進む。
【００５２】
例えば、構造化文書１４２が図３（ａ）に示す構造を有する場合、構造化文書１４２におけるルート要素camera_settingsの構造は、図４に示す構造情報が示す構造（子要素name、pan、tiltをこの順番でもつ）と一致する。然るにこの場合は、処理はステップＳ８０５を介してステップＳ８０６に進むことになる。
【００５３】
ステップＳ８１４ではデータ通知部１２２は、構造化文書１４２の解析を指示したアプリケーションプログラムに対して、構造化文書１４２の構造がスキーマ定義情報１４１が定義した構造に一致していないことを示す構造不一致エラーを通知する。そしてその後、本処理を終了する。
【００５４】
一方、ステップＳ８０６では、データ型定義取得部１１７は、データ型定義一覧表１１６から、ステップＳ８０２で読み出したノードのノード名（要素名）に対応するデータ型（図５では欄５０２に登録されているデータ型情報）を読み出す。例えば、ステップＳ８０２で読み出したノードがname要素である場合、ステップＳ８０６ではデータ型定義一覧表１１６から、データ型「30文字以内の文字列」を読み出す。
【００５５】
ステップＳ８０７ではデータ型比較部１１８は、ステップＳ８０２で読み出したノードのデータ型と、ステップＳ８０６で読み出したデータ型とを比較し、互いに一致しているか否かを判断する。この判断の結果、一致していると判断した場合には処理はステップＳ８０８を介してステップＳ８１５に進み、一致していないと判断した場合には処理はステップＳ８０８を介してステップＳ８０９に進む。
【００５６】
例えば、構造化文書１４２が図３（ａ）に示す構造を有し、且つステップＳ８０２で読み出したノードがpan要素であるとする。この場合、pan要素の値「−３０」は、データ型定義一覧表１１６でpan要素について定義している条件「-180より大且つ180以下の条件をもつ整数値」に合致している。この場合、処理はステップＳ８０８を介してステップＳ８１５に進むことになる。
【００５７】
また例えば、構造化文書１４２が図３（ｂ）に示す構造を有し、且つステップＳ８０２で読み出したノードがpan要素であるとする。この場合、構造化文書１４２におけるpan要素の値「−２００」は、データ型定義一覧表１１６でpan要素について定義している条件「-180より大且つ180以下の条件をもつ整数値」に合致していない。この場合、処理はステップＳ８０８を介してステップＳ８０９に進むことになる。
【００５８】
ステップＳ８１５では、データ通知部１２２は、構造化文書１４２の解析を指示したアプリケーションプログラムに対して、ステップＳ８０２で読み出したノードの値を通知する。例えば、構造化文書１４２が図３（ａ）に示す構造を有し、且つステップＳ８０２で読み出したノードがpan要素である場合、pan要素の値「−３０」を通知する。また、ステップＳ８０２で読み出したノードがtilt要素である場合、tilt要素の値「６０」を通知する。
【００５９】
一方、ステップＳ８０９でデータ修正値取得部１２０は、データ修正値一覧表１１９から、ステップＳ８０２で読み出したノードのノード名（要素名）に対応する修正値（図６では欄６０３に登録されている修正値）を読み出す。その際、データ修正値一覧表１１９からは、ステップＳ８０２で読み出したノードが満たす条件に対応する修正値を読み出す。
【００６０】
例えば、構造化文書１４２が図３（ｂ）に示した構造を有し、且つステップＳ８０２で読み出したノードがpan要素であるとする。この場合、pan要素の値「−２００」は、データ修正値一覧表１１９でpan要素について定義している２つの条件のうち「−１８０以下」に該当するため、ステップＳ８０９では、この条件に対応する修正値「−１７９」を読み出すことになる。
【００６１】
なお、条件に対応する修正値がデータ修正値一覧表１１９に登録されていなかった場合（ステップＳ８０９にて修正値が読み出せなかった場合）には、処理はステップＳ８１０を介してステップＳ８１６に進む。ステップＳ８１６でデータ通知部１２２は、構造化文書１４２の解析を指示したアプリケーションプログラムに対して、ノードのデータ型がスキーマ定義情報１４１が定義したデータ型に一致していないことを示すデータ型不一致エラーを通知する。
【００６２】
一方、条件に対応する修正値がデータ修正値一覧表１１９に登録されていた場合（ステップＳ８０９にて修正値が読み出せた場合）には、処理はステップＳ８１０を介してステップＳ８１１に進む。
【００６３】
ステップＳ８１１ではデータ修正部１２１は、ステップＳ８０２で読み出したノードの値を、データ修正値取得部１２０が読み出した修正値で更新する。例えば、構造化文書１４２が図３（ｂ）に示した構造を有し、且つステップＳ８０２で読み出したノードがpan要素であるとする。この場合、pan要素の値「−２００」を修正値「−１７９」に更新する。これにより、構造化文書１４２を更新することになる。そしてデータ修正部１２１は、この修正値をデータ通知部１２２に転送する。なお、ステップＳ８０２で読み出したノードの値を更新する処理については必須ではなく、省いても良い。
【００６４】
ステップＳ８１２では、データ通知部１２２は、ステップＳ８１１でデータ修正部１２１から受けた修正値を、構造化文書１４２の解析を指示したアプリケーションプログラムに対して通知する。
【００６５】
構造化文書１４２が図３（ｂ）に示した構造を有する場合、図８のフローチャートに従った処理を行うことで、構造化文書１４２の解析を指示したアプリケーションプログラムには以下の値が通知されることになる。
【００６６】
・  name要素の値として”camera0001”（構造化文書１４２の記述どおり）
・  pan要素の値として”-179”(修正値)
・  tilt要素の値として”60”（構造化文書１４２の記述どおり）
また、構造化文書１４２が図３（ｃ）に示した構造を有する場合、図８のフローチャートに従った処理を行うことで、構造化文書１４２の解析を指示したアプリケーションプログラムには以下の値が通知されることになる。
【００６７】
・  name要素の値として”camera0001”（構造化文書１４２の記述どおり）
・  pan要素の値としてデータ型不一致エラー
・  tilt要素の値として”60”（構造化文書１４２の記述どおり）
これにより、構造化文書１４２の解析を指示したアプリケーションプログラムは、データ型が一致しなかった場合の修正値を、構造化文書解析部１１２から受け取ることができる。
【００６８】
なお、図８のフローチャートに従った処理は、要は次のような処理を骨格とするものである。図８の処理では、解析対象の構造化文書中の構成要素の値の代わりに用いる値として予め設定された修正値と、この値の代わりにこの修正値を用いるためにこの値が満たすべき条件として予め設定された条件情報と、が登録されたテーブル情報を用いる。
【００６９】
即ち、先ず、このテーブル情報を用いて、この構成要素の値がこの条件を満たしているか否かを判断する。そして、この構成要素の値がこの条件を満たしていると判断した場合には、このテーブル情報からこの修正値を取得し、この構成要素の値をこの該取得した修正値に置き換えることでこの構造化文書を更新する。
【００７０】
［第２の実施形態］
図９に、本実施形態に係るスキーマ定義情報１４１の構成例を示す。図９では、ISOで規定されているXMLスキーマ記述言語であるRelax NGで記述されているスキーマ定義情報１４１の構成例を示している。但し、データ修正値一覧表１１９の生成で用いる名前空間宣言部２００、要素が取りうる値及びこの要素の値がこの値に一致した場合に用いる修正値を指定するための定義部９０１、９０２、９０３がRelax NG仕様から拡張されている。
【００７１】
図９では、name要素が取りうる値は、”camera0001”、”camera0002”、”camera0003”である。そして、解析対象の構造化文書中のname要素の値が、例えば”camera0001”であれば、用いるべき修正値は「１」となる。また、解析対象の構造化文書中のname要素の値が”camera000２”であれば、用いるべき修正値は「２」となるし、解析対象の構造化文書中のname要素の値が”camera000３”であれば、用いるべき修正値は「３」となる。
【００７２】
本実施形態では、図７のフローチャートにおいてステップＳ７０１，Ｓ７０２，Ｓ７０４，Ｓ７０５の処理を行う。然るに、本実施形態に係る構造化文書解析装置１００では、データ型定義一覧表１１６、データ型定義取得部１１７、データ型比較部１１８、は不要となる。
【００７３】
ステップＳ７０４で生成されるデータ修正値一覧表１１９は、図１０に示す構成を有することになる。要素名の欄１００１には、スキーマ定義情報１４１から収集したname要素の要素名である「name」が登録されている。条件の欄１００２には、スキーマ定義情報１４１から収集したname要素が取りうる値（実際にはこの値を取った場合、という条件）が登録されている。修正値１００３の欄には、欄１００２に登録されているそれぞれの条件について、この条件が満たされた場合に用いる修正値が登録されている。
【００７４】
本実施形態では、ステップＳ７０５では、図１１に示したフローチャートに従った処理を行う。図１１において、図７と同じ処理ステップには同じステップ番号を付けており、その説明は省略する。
【００７５】
ステップＳ１１０８において、データ修正部１２１は、ステップＳ８０２で読み出したノードの値が、データ修正値一覧表１１９中の欄１００２内の何れかの条件（データ型）を満たしているかを判断する。この判断の結果、何れの条件も満たしていない場合には、処理はステップＳ８１６に進む。一方、ステップＳ８０２で読み出したノードの値が満たしている条件が、データ修正値一覧表１１９中の欄１００２内にあった場合には、処理はステップＳ１１０９に進む。
【００７６】
ステップＳ１１０９では、データ修正値取得部１２０は、データ修正値一覧表１１９中の欄１００３から、ステップＳ８０２で読み出したノードの値が満たしている条件に対応する修正値を取得する。
【００７７】
対応する修正値が無かった場合には処理はステップＳ１１１０を介してステップＳ８１５に進む。一方、対応する修正値があった場合（ステップＳ１１０９における取得が成功した場合）には、処理はステップＳ１１１０を介してステップＳ１１１１に進む。ステップＳ１１１１では、データ修正値取得部１２０は、ステップＳ１１０９で取得した修正値をデータ通知部１２２に転送する。
【００７８】
このように、本実施形態によれば、スキーマ定義によりあらかじめとり得る値がわかっているノード（ここではname要素）を含む構造化文書を解析する際、以下のことが可能となる。すなわち、構造化文書解析部１１２がデータ型検証時に評価した結果自体（name要素の値）ではなく、代替値をアプリケーションプログラムに通知することができる。これにより、特にノードの値がBase64型などの大きなデータのとき、アプリケーションプログラムが必要としない評価結果を、構造化文書解析部１１２から受け取る必要がなくなる。
【００７９】
なお、図１１のフローチャートに従った処理は、要は次のような処理を骨格とするものである。図１１の処理では、解析対象の構造化文書中の構成要素が取りうる値として予め設定された設定値と、この構成要素の値がこの設定値と一致する場合にこの値の代わりに用いる値として予め設定された修正値と、が登録されたテーブル情報を用いる。
【００８０】
即ち、先ず、このテーブル情報を用いて、この構成要素の値がこの設定値と一致しているか否かを判断する。そして、この構成要素の値がこの設定値と一致していると判断した場合には、このテーブル情報からこの設定値を取得し、この構成要素の値をこの取得した設定値に置き換えることでこの構造化文書を更新する。
【００８１】
［第３の実施形態］
第１の実施形態では、構造化文書１４２がXML形式であったが、本実施形態では、構造化文書１４２が、W3Cで標準化されているバイナリXMLの形式のひとつであるEXI形式である場合について説明する。
【００８２】
解析対象の構造化文書１４２がEXI形式であっても、構造化文書解析装置１００の構成は図１の構成と同じである。しかし、第１の実施形態では、データ通知部１２２が、アプリケーションプログラムに、解析結果や修正値を通知する場合に、AT（属性）、CH（要素内容）などのイベントで通知する点が異なる。
【００８３】
また、EXI形式では、スキーマ定義解析部１１１が、スキーマ定義情報１４１から生成した文法情報をグラマーとよぶ。グラマーは、構造化文書解析部１１２が構造化文書１４２を解析するのに必要な文法情報である。構造定義一覧表１１３、データ型定義一覧表１１６、データ修正値一覧表１１９の情報は、グラマーに含まれる。これ以外については第１の実施形態と同様である。
【００８４】
以上の各実施形態によれば、データの値がスキーマに一致しないＸＭＬ文書を読み込んだアプリケーションプログラムに対して、エラー回復処理を追加することなしに正しい値を取得して処理を継続することができる。
【００８５】
したがって、妥当性検証が必要なＸＭＬ文書解析を行うアプリケーションプログラムが複数存在する場合でも、アプリケーションプログラムのサイズを削減することができる。また、修正値は解析時の条件によって複数指定することができる。
【００８６】
また、アプリケーションプログラムの実行環境によって修正値が異なる場合も、スキーマ定義を実行環境ごとに用意することで、アプリケーションプログラム自体を修正する必要がなくなる。
【００８７】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2011258024.tif 000003
【図２】
2011258024.tif 000004
【図３】
2011258024.tif 000005
【図４】
2011258024.tif 000006
【図５】
2011258024.tif 000007
【図６】
2011258024.tif 000008
【図７】
2011258024.tif 000009
【図８】
2011258024.tif 000010
【図９】
2011258024.tif 000011
【図１０】
2011258024.tif 000012
【図１１】
2011258024.tif 000013