COBOL2002 XML連携機能ガイド


2.1.2 XML連携機能で扱えるDTDの形式

XML連携機能では,XML Version 1.0の規格に従ったDTDを扱えます。ただし,次の点に注意する必要があります。

〈この項の構成〉

(1) XML宣言

XML宣言では,DTDファイルの文字エンコーディングを指定できます。使用できる文字エンコーディングについては,「付録G.1 XMLドキュメントの文字エンコーディング」を参照してください。

XML宣言の例
<?xml version="1.0" encoding="Shift_JIS"?>

(2) 文書の型宣言(DOCTYPE宣言)

文書の型宣言(DOCTYPE宣言)は,内部サブセット,外部サブセットのどちらでも定義できます。

内部サブセット

内部サブセットは,DOCTYPE宣言の記述されているXMLドキュメント中に,型宣言の実体を記述する形式です。

内部サブセットを使ったDOCTYPE宣言の例
<?xml version="1.0" encoding="Shift_JIS"?> 
<!DOCTYPE table [
  <!ELEMENT table (book)>
  <!ELEMENT book  (#PCDATA)>
]>
<table/>
外部サブセット

外部サブセットは,外部DTDファイルに型宣言の実体を記述し,XMLドキュメントのDOCTYPE宣言には外部DTDファイルへの参照指示を記述する形式です。

外部DTDファイルは,外部識別子で指定します。外部識別子については,「付録E.3 外部識別子の解釈」を参照してください。

外部サブセットを使ったDOCTYPE宣言の例
<?xml version="1.0" encoding="Shift_JIS"?> 
<!DOCTYPE table SYSTEM "book-content.xml">
<table/>
外部DTDファイル(book-content.xml)の指定例
<!ELEMENT table (book)>
<!ELEMENT book  (#PCDATA)>

内部サブセットと外部サブセットが同時に指定されている場合,両方の定義が有効となります。ただし,要素が重複して定義されている場合は,内部サブセットの定義が有効となります。

(3) 要素宣言

要素宣言の内容モデルでは,#PCDATAとEMPTYだけを使用できます。

要素宣言の例
<!ELEMENT table (book)+>
<!ELEMENT book  (#PCDATA)>

(4) 属性リスト宣言

属性リスト宣言に指定する属性の型(CDATA,ID,IDREF,IDREFS,NMTOKEN,NMTOKENS,列挙)以外は使用できません。

(5) 実体宣言

実体宣言は,XMLドキュメントで実体を置換します。外部実体となる場合,テキスト宣言でエンコーディングを指定します。テキスト宣言がない場合はエンコーディングにUTF-8が仮定されます。テキスト宣言については,「(7) テキスト宣言」を参照してください。

一般実体

パースされるテキストを置換します。

一般実体「ITEM1」を定義します。

<!ENTITY ITEM1 "The item 01.">
外部一般実体

外部にあるテキストを含んだ実体です。

公開識別子でデータを指定する例

実体「abc」を定義します。

<!ENTITY abc PUBLIC "-//HITACHI//DTD test 1.0//EN" "/home/groupX/manual.dtd">
データを特定の位置として指定する例

実体「def」を定義します。

<!ENTITY def SYSTEM "/home/groupX/manual.dtd">
パラメタ実体

パラメタ実体はDTD内のテキストを置換します。

実体「para1」を定義します。

<!ENTITY % para1 "(item01A | item01B )">
外部パラメタ実体

外部パラメタ実体は,DTDを含む実体や,外部にあるDTDの一部を含む実体を示します。

公開識別子でデータを指定する例

実体「paragroup1」を定義します。

<!ENTITY % paragroup1 PUBLIC "-//HITACHI//DTD test 1.0//EN" "/home/groupX/table1.dtd">
データを特定の位置として指定する例

実体「paragroup2」を定義します。

<!ENTITY % paragroup2 SYSTEM "/home/groupX/table2.dtd">

(6) 公開識別子

外部DTDや外部実体を識別するための文字列です。XML連携機能では,公開識別子と,外部DTDや外部実体を含むファイルの対応を,カタログファイルで定義することで,公開識別子を用いて外部DTDや外部実体を参照するXMLドキュメントを処理できます。

公開識別子の解釈については,「付録E.3 外部識別子の解釈」を参照してください。

外部DTDの例
<!DOCTYPE root PUBLIC "-//HITACHI//DTD test 1.0a//EN" "/home/project1/myDTD.xml">

(7) テキスト宣言

テキスト宣言では,外部解析対象実体の文字エンコーディングを指定できます。

<?xml version="1.0" encoding="Shift_JIS"?>

(8) コメント

形式
<!-- コメント -->
機能

コメントは"<!--"で始まり,"-->"で終わる間に記述します。

規則

コメントはXMLドキュメントに出力されません。

DTDファイルのコメントの例
<?xml version="1.0" encoding="Shift_JIS"?>
<!-- コメント -->
<!DOCTYPE table [
  <!ELEMENT table (book)>
  <!ELEMENT book  (#PCDATA)>
]>
<table/>

(9) その他の注意事項

DTDファイルは,それ自身が完結したXMLドキュメントである必要があります。そのため,DTDファイルにXML要素が記述されていない場合は,内容が空のルート要素をファイルの末尾に付ける必要があります。

XMLドキュメントとして完結したDTDファイルの例
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE table [
  <!ELEMENT table (book)>
  <!ELEMENT book  (#PCDATA)>
]>
<table/>