• 検索結果がありません。

XML のフィルタリング機能

ドキュメント内 HiRDB XML Extension Version 9 (ページ 169-175)

XML Extension では,変換する XML データから不要な情報をフィルタリングすることができます。フィ ルタリング機能を使用することで,XML データ中の必要な情報だけを含めた ESIS-B 形式データを生成で きます。

この節では,フィルタリング機能の使用方法について説明します。

5.8.1 フィルタリング指定項目一覧

ここでは,フィルタ情報定義ファイルに指定できる項目を一覧で示します。

フィルタ情報定義ファイルに指定できる項目の一覧を次の表に示します。

表 5‒16 フィルタ情報定義ファイル指定項目一覧

指定項目 説明

encoding フィルタ情報定義ファイルを記述する文字コードに次のどれか

を指定します。文字コードは,先頭行に指定してください。指定 を省略した場合,フィルタ情報定義ファイルはシフト JIS として 扱われます。

shift_jis:シフト JIS utf-8:utf-8 euc_jp:EUC_JP

deny XML データの構造のうち,ESIS-B 形式データに含めない構造名

を指定します。

allow deny で指定した構造の下位構造の中から,ESIS-B 形式データ

に含める構造名を指定します。

absorb font タグなど,データ構造を表さない構造を削除します。

without attribute XML データに存在するすべての属性情報を削除します。

trimdown ideographicspace 文字列情報の中の連続する全角スペースを,単一の全角スペース に置換します。

delete ideographicspace 文字列情報の中から連続する全角スペースを削除します。

delete space 文字列情報の中から半角スペースを削除します。

5.8.2 フィルタ情報定義ファイルの指定規則

ここでは,フィルタ情報定義ファイルの指定規則について説明します。

フィルタ情報定義ファイルは,任意の名称のファイルに文字コード指定で指定した文字コードで記述してく ださい。また,フィルタ情報定義ファイルに記述した英大文字と英小文字は常に区別されます。

(1) フィルタ情報定義ファイルの指定形式

フィルタ情報定義ファイルの指定形式を次に示します。

<フィルタ情報> ::=〔<文字コード指定>〕<フィルタ内容指定>…

<文字コード指定> ::= encoding=utf-8

<フィルタ内容指定> ::={<allow要素指定>|<deny要素指定>|<属性指定>|

          |<統合指定>|<空白文字指定>}

 

<allow要素指定> ::= allow△<要素指定>

<deny要素指定> ::= deny△<要素指定>

<属性指定> ::= without attribute

<統合指定> ::= absorb△<要素名>

<空白文字指定> ::={trimdown ideographicspace | delete ideographicspace | delete space}

 <要素指定> ::=〔.〕{<要素名>|'*'|'?'}〔.{<要素名>|'*'|'?'}〕…

<要素名> ::={<文字>|"'"<文字>"'"}

注* : 0個以上の任意の要素

? : 1個の任意の要素

なお,フィルタ情報定義ファイルを指定するときには次の点に注意してください。

• 文字コードは先頭行に指定し,2 行目以降に必要なだけフィルタ内容を指定してください。このとき,

個々の文字コード指定およびフィルタ内容指定は 1 行(1,023 バイト以内)で記述してください。一つ の指定を複数行に分割することはできません。

なお,行の先頭に「#」(シャープ)を記述すると,コメント行として扱われます。

• 「.」(ピリオド)で始まる要素指定は,最上位要素からの絶対要素指定となります。

ただし,最上位要素に対するフィルタリングはできません。

• 要素名に「.」が含まれる場合は,その要素名を「'」(アポストロフィ)で囲んでください。

(例)

要素名「文書.章 1」を指定する場合は,「'文書.章 1'.下位要素」と記述します。

(2) フィルタリング指定項目の優先順位

フィルタリング指定項目の優先順位を次の表に示します。

表 5‒17 フィルタリング指定項目の優先順位

順位 指定項目

1 without attribute

2 allow,deny

3 absorb

4 delete ideographicspace,delete space 5 trimdown ideographicspace

注※

allow および deny の優先順位については,「5.8.3 allow および deny の指定例」を参照してくださ い。

(3) フィルタ情報定義ファイル指定時の注意事項

• absorb 指定による統合処理は,allow または deny 指定による文書構造のフィルタリングのあとに実行 されます。また,属性情報は常に削除されます。

• フィルタリング機能を使用する場合は,フィルタリング機能を使用しない場合と比べて ESIS-B 形式 データの生成に時間が掛かります。このときの処理に掛かる時間は,フィルタリング情報の量に依存し ます。

• ファイルの内容は,文字コード指定で指定した文字コードで記述してください。文字コード指定を省略 する場合は,シフト JIS 文字コードで記述してください。

• 文字コード指定は,次の機能に影響を与えます。

• フィルタ情報定義ファイル自体の解釈

• allow および deny の,要素指定および統合指定の要素名解釈

• delete ideographicspace,delete space,および trimdown ideographicspace 指定の結果

• without attribute を指定した場合も,名前空間指定は削除できません。

• 名前空間指定を含んだ要素に対して deny または absorb を指定した場合,指定されていた名前空間指 定が削除されます。また,削除された名前空間が指定されていた属性および要素は,デフォルトの名前 空間が指定されます。

5.8.3 allow および deny の指定例

フィルタ情報定義ファイルで,allow および deny を指定する例について説明します。

(1) 特定の構造だけを削除する場合

deny△構造名

指定した構造だけが削除されます。指定した構造が下位構造を持つ場合,下位構造は削除対象とはなりませ ん。

(2) 特定の構造とその下位構造すべてを削除する場合

deny△構造名.*

「*」は 0 個以上の任意の構造として扱われるため,指定した構造とその下位構造すべてが削除対象となりま す。

(3) 特定の構造の下位構造すべてを削除する場合(指定した構造は削除しない)

deny△構造名.?.*

「?」は 1 個の任意構造として,「*」は 0 個以上の任意の構造として処理されます。「?.*」と指定した場合 は,1 個以上の任意の構造として扱われるため,指定した構造の 1 階層下にある構造とその下位構造すべて が削除対象となります。指定した構造は削除されません。

また,次のように指定しても同じ意味を持ちます。ただし,下記以外にも deny または allow を組み合わ せて指定した場合は,優先順位の関係で,意図した結果を得られないおそれがあります。

deny△構造名.*

allow△構造名

このように指定した場合は,特定の構造を含めたその下位構造すべてを削除対象としたあとに,特定の構造 だけを抽出するように指定します。deny で指定した構造とその下位構造すべてが削除対象となりますが,

allow で指定した構造は,deny 指定が無効となり,削除されません。

「deny△本文.?.*」と指定した場合のフィルタリング例を次の図に示します。

図 5‒2 下位構造すべて(指定した構造を除く)を削除する場合のフィルタリング例

(4) 特定の構造の下位にある特定の構造だけを抽出する場合

deny△構造名.?.*

allow△構造名.下位構造名

特定の構造の下位構造すべてを削除するように指定したあとで,ある特定の構造に対して削除を無効とする ように指定します。

「allow△構造名.下位構造名」と指定した場合,allow 対象となるのは,「下位構造名」の階層で出現する構

造です。

「deny△プロパティ.?.*」および「allow△プロパティ.執筆者」と指定した場合のフィルタリング例を次の

図に示します。

図 5‒3 下位にある特定の構造だけを抽出する場合のフィルタリング例

(5) 最上位構造から指定する場合

allow△.構造名1.構造名2

先頭の構造名の直前に「.」(ピリオド)を付けることで,最上位からの指定として扱われます。

5.8.4 複合指定の例

allow または deny と,absorb をあわせて指定した場合は,指定した順序とは関係なく,必ず allow また は deny の指定が absorb の指定よりも先に処理されます。

allow または deny と,absorb を複合指定した場合のフィルタリング処理例を次の図に示します。

図 5‒4 複合指定した場合のフィルタリング例

ドキュメント内 HiRDB XML Extension Version 9 (ページ 169-175)