2.1.2 XML連携機能で扱えるDTDの形式
XML連携機能では,XML Version 1.0の規格に従ったDTDを扱えます。ただし,次の点に注意する必要があります。
- 〈この項の構成〉
(1) XML宣言
XML宣言では,DTDファイルの文字エンコーディングを指定できます。使用できる文字エンコーディングについては,「付録G.1 XMLドキュメントの文字エンコーディング」を参照してください。
-
使用できる文字エンコーディング以外を指定した場合
動作は保証しません。
-
文字エンコーディングを省略した場合
"UTF-8"が仮定されます。
- 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)>
(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">
(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/>