ここでは、DTD読込みとDTD出力の登録仕様について説明します。
DTDファイルをあらかじめ用意し、[DTD]画面から読み込みます。
DTDファイル上の定義を、一般フォーマット登録に変換することができます。
読込み可能なDTDファイルについて
外部サブセットのDTDファイルと、内部サブセットを含むXML文書を読み込むことができます。
DTDと一般フォーマット登録との対応について
XML変換では、フラット名称がXML文書のルートタグ名(ルート要素名)に、フィールド名称がタグ名(要素名)または属性名となります。
XML変換を行う場合には、フラット名称・フィールド名称に、XML規約で許されていない文字を使わないでください。
フラットID/名称、XML属性について
[一般フォーマット登録]画面で、フラットID/名称、およびXML属性を入力してから[DTD]画面を表示すると、前画面で入力した内容が表示されます。修正した場合は、修正した内容が反映されます。
フラット名称はXML文書のルートタグ名となりますので、DTDファイル内に存在する名称を指定してください。DTDファイル内に、該当する要素型宣言が見つからない場合には、エラーとなります。
文書型宣言(DOCTYPE宣言)を含まないDTDファイルについて
文書型宣言(DOCTYPE宣言)を含まない外部サブセットのDTDファイルを指定する場合には、フラット名称がXML文書のルート要素名となるため、フラット名称にはDTDファイル内に存在する名称を指定してください。
文書型宣言(DOCTYPE宣言)を含まないDTDファイルを指定し、DTDファイル内に該当する要素型宣言(ELEMENT宣言)が見つからない場合には、エラーとなります。
文書型宣言(DOCTYPE宣言)を含むDTDファイルについて
入力したフラット名称とDTDファイル内の文書型宣言で定義されたルート要素名が異なっている場合、画面が表示され、どちらを選択するか指定できます。
DTDファイルの制限について
制限は以下のとおりです。
各要素・属性は、基本的にX属性1桁として解析されます。DTD読込み後に、[一般フォーマット登録]画面にて適切な属性・桁数・XML属性(フィールド)・XML属性(固定値)に修正してください。
UTF-8文字コード以外で書かれたDTDファイルは、解析できません。エラーとなります。
複数のファイルにまたがって記述されているDTDファイルは、解析しません。エラーとなります。
ルート要素の宣言が含まれていないDTDファイルは、解析できません。エラーとなります。
シフトJISに換算して255バイトを超える要素名、属性名をもつDTDファイルは、解析できません。エラーとなります。
ルート要素の階層を1として、階層が100を超えるDTDファイルは解析しません。エラーとなります。
(集団項目ヘッダに相当する)子要素をもつ要素が3844個を超えるDTDファイルは、解析できません。エラーとなります。
コメント、処理命令、表記法(NOTATION)宣言、外部パラメタ実体(ENTITY)は、解析しません。
条件付きセクションのIGNOREセクションは、解析しません。
要素型宣言(ELEMENT宣言)でEMPTYが定義されているものは、X属性1桁として解析します。
要素型宣言(ELEMENT宣言)でANYが定義されているものは、X属性1桁として解析します。
要素型宣言(ELEMENT宣言)で(a | b | c )と列挙して定義されているものは、最初の要素だけが解析します。
要素型宣言(ELEMENT宣言)で再帰的に定義されているものは、解析しません。
要素型宣言(ELEMENT宣言)のグループ内に同じ要素型宣言(ELEMENT宣言)が再び現れた場合には、その要素は解析しません。
このような定義がされているDTDを読み込んでから登録をする場合には、“グループ(区分:XX)に属する項目がありません。”と表示されることがあります。これは、再帰的に定義された要素が解析されなかったため、属する項目をもたない集団項目ができてしまったときに起こります。この場合には、グループ区分:XXの集団項目ヘッダと集団項目トレーラを削除して、再度登録をしてください。
属性リスト宣言(ATTLIST宣言)で、属性値、“#REQUIRED”、“#IMPLIED”、“#FIXED+属性値”によってデフォルト値が定義されていてもその部分は解析されません。属性値が固定な値の場合には、DTD読込み後に、[一般フォーマット登録]画面の「XML属性(固定値)」で定義するなど、適切に修正してください。
[一般フォーマット登録]画面上の定義をDTDファイルに出力することができます。
DTDと一般フォーマット登録との対応について
DTD出力では、フラット名称がXML文書のルートタグ名(ルート要素名)に、フィールド名称がタグ名(要素名)または属性名となります。
DTD出力を行う場合には、フラット名称・フィールド名称に、XML規約で許されていない文字を使わないようにしてください。
DTDファイルの出力仕様について
同一のフィールド名が複数現れた場合、DTDの要素型宣言は1つしか出力しません。
単一項目で繰返し数指定がない場合は、要素名のあとに無条件に“?”(0個または1個)を出力します。
単一項目で繰返し数指定がある場合は、要素名のあとに無条件に“*”(0個以上)を出力します。
集団項目ヘッダについては要素名のあとに無条件に“*”(0個以上の繰返し)を出力します。
単一項目の要素内容は“#PCDATA”固定とします。