Hitachi

HiRDB XML拡張機能 HiRDB XML Extension Version 10


5.4.8 ESIS-B形式データへの変換規則

XMLデータからESIS-B形式データを生成するときの,要素,属性,およびタグ間テキストの変換規則について説明します。

〈この項の構成〉

(1) 要素の変換規則

XMLデータ中に出現したすべての要素がESIS-B形式データに適応されます。

指定した文字コードで表せない文字が要素名に含まれる場合は,「?」(疑問符)に置換されます。

(2) 属性の変換規則

指定した文字コードで表せない文字が属性に含まれる場合は,「?」(疑問符)に置換されます。また,属性値はDTDで指定した属性型によって次の表に示す規則に従って変換されます。

表5‒6 属性の変換規則

属性型

規則

CDATA

属性値として記述された文字列が,そのままの形でESIS-B形式に適応されます。

ENTITY

「NMTOKEN」と同様に扱われます。ただし,DTD内で解析対象外エンティティを指定している場合の属性値は解析対象外エンティティで指定したシステムIDとなります。

ENTITIES

「NMTOKENS」と同様に扱われます。ただし,DTD内で解析対象外エンティティを指定している場合の属性値は解析対象外エンティティで指定したシステムIDとなります。

ID

「NMTOKEN」と同様に扱われます。

IDREF

「NMTOKEN」と同様に扱われます。

IDREFS

「NMTOKENS」と同様に扱われます。

NMTOKEN

名前字句

属性値として記述された文字列が,前後の半角スペースとタブおよび改行を削除した形でESIS-B形式に適応されます。

NMTOKENS

名前字句並び

属性値として記述された文字列が,一つ以上の空白文字を区切りとして個々の属性値に分解され,それぞれの属性値がESIS-B形式に適応されます。検索時には,分解されたそれぞれの属性値に対して検索を実行できます。

(例)

<element attr="abc△def"/>と記述されている場合は,複数の属性値"abc","def"として適応されます。

(3) タグ間テキストの変換規則

タグ間テキストは出現単位に個別に変換されます。タグ間テキストの変換規則を次の表に示します。

表5‒7 タグ間テキストの変換規則

条件

規則

説明

ENTITY

連結

エンティティの前後に文字列がある場合は,連続した文字列とします。

(例)

エンティティとして,'copyright'を'(c)'にしている場合,「コピーライトマークは&copyright;です。」は,「コピーライトマークは(c)です。」となります。

CDATAセクション

連結

CDATAセクションの前後に文字列がある場合は,連続した文字列とします。

(例)

「エレメントは<![CDATA[<element>]]>と記述します。」は,「エレメントは<element>と記述します。」となります。

ELEMENTを内包する文字列

独立

タグ間テキスト内に要素ノードがある場合は,内包する要素ノードの前後で,それぞれの独立した文字列として扱われます。

(例)

「XML<略語term="XML" context="Extensible Markup Language"/>とは」は,「XML」と「とは」の個別の文字列とします。この場合,「XMLとは」で検索してもヒットしません。

タグ間テキスト内の,変換に指定した文字コードで表せない文字,空白文字および改行コードの扱いを次に示します。

(a) タグ間テキスト内の指定文字コードで表せない文字

タグ間テキスト内の指定文字コードで表せない文字は,「?」(疑問符)に置換されます。ただし,XMLデータのXML宣言部に書かれている文字コードで変換できないコードが含まれている場合は,変換エラーとなります。

(b) タグ間テキスト内の空白文字

タグ間テキスト内の空白文字(タブ(0x09),半角スペース(0x20)),

改行コード(LF(0x0a),CR(0x0d),DOS改行(0x0d 0x0a))は,次のように扱われます。

  • タグ間テキスト先頭,および末尾の空白文字,改行コードは削除されます。

  • タグ間テキスト内の改行コードは,すべてLF(0x0a)に置換されます。

  • 空白文字と改行コードが連続する文字列は,それぞれ出現順に一つにまとめられます。

(例)

変換前:<root>改行と(0x20)(0x0a)(0x09)(0x20)(0x0a)(0x09)空白の例</root>

変換後:<root>改行と(0x20)(0x0a)(0x09)空白の例</root>