XMLチュートリアル

XMLホーム XMLの紹介 XML使用方法 XMLツリー XML構文 XML要素 XML属性 XML名前空間 XML表示 XML HttpRequest XMLパーサー XML DOM XML XPath XML XSLT XML XQuery XML XLink XMLバリデーター XML DTD XMLスキーマ XMLサーバー XMLの例 XMLクイズ XML証明書

XML AJAX

AJAXの紹介 AJAX XMLHttp AJAXリクエスト AJAX応答 AJAXXMLファイル AJAX PHP AJAX ASP AJAXデータベース AJAXアプリケーション AJAXの例

XML DOM

DOMの紹介 DOMノード DOMアクセス DOMノード情報 DOMノードリスト DOMトラバース DOMナビゲーション DOMは値を取得します DOM変更ノード DOM削除ノード DOM置換ノード DOM作成ノード DOM追加ノード DOMクローンノード DOMの例

XPathチュートリアル

XPathの概要 XPathノード XPath構文 XPath軸 XPath演算子 XPathの例

XSLTチュートリアル

XSLTの紹介 XSL言語 XSLT変換 XSLT <テンプレート> XSLT <値> XSLT <for-each> XSLT <ソート> XSLT <if> XSLT <選択> XSLT適用 クライアント上のXSLT サーバー上のXSLT XSLT Edit XML XSLTの例

XQueryチュートリアル

XQueryの紹介 XQueryの例 XQuery FLWOR XQuery HTML XQueryの用語 XQuery構文 XQuery追加 XQuery Select XQuery関数

XML DTD

DTDの紹介 DTDビルディングブロック DTD要素 DTD属性 DTD要素と属性 DTDエンティティ DTDの例

XSDスキーマ

XSDの概要 XSDハウツー XSD <スキーマ> XSD要素 XSD属性 XSDの制限

XSDコンプレックス

XSD要素 XSDが空です XSD要素のみ XSDテキストのみ XSD混合 XSDインジケーター XSD <任意> XSD <anyAttribute> XSD置換 XSDの例

XSDデータ

XSD文字列 XSD日付 XSD数値 XSDその他 XSDリファレンス

Webサービス

XMLサービス XML WSDL XML SOAP XML RDF XML RSS

参考文献

DOMノードタイプ DOMノード DOM NodeList DOM NamedNodeMap DOMドキュメント DOM要素 DOM属性 DOMテキスト DOM CDATA DOMコメント DOM XMLHttpRequest DOMパーサー XSLT要素 XSLT / XPath関数

XML DTD


正しい構文のXMLドキュメントは「整形式」と呼ばれます。

DTDに対して検証されたXMLドキュメントは、「整形式」と「有効」の両方です。


DTDとは何ですか?

DTDは、Document TypeDefinitionの略です。

DTDは、XMLドキュメントの構造と有効な要素および属性を定義します。


有効なXMLドキュメント

「有効な」XMLドキュメントは「整形式」であり、DTDのルールに準拠しています。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "Note.dtd">
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

上記のDOCTYPE宣言には、DTDファイルへの参照が含まれています。DTDファイルの内容を以下に示し説明します。


XML DTD

DTDの目的は、XMLドキュメントの構造と有効な要素および属性を定義することです。

Note.dtd:

<!DOCTYPE note
[
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>

上記のDTDは次のように解釈されます。

  • !DOCTYPEnote-ドキュメントのルート要素がnoteであることを定義します
  • !ELEMENT note-note要素に「to、from、heading、body」の要素が含まれている必要があることを定義します
  • !ELEMENTto-to要素を「#PCDATA」タイプに定義します
  • !ELEMENTfrom-from要素を「#PCDATA」タイプに定義します
  • !ELEMENTheading-見出し要素を「#PCDATA」タイプに定義します
  • !ELEMENTbody-タイプ「#PCDATA」のbody要素を定義します

ヒント: #PCDATAは、解析可能な文字データを意味します。



エンティティ宣言にDTDを使用する

DOCTYPE宣言を使用して、ドキュメントで使用される特殊文字または文字列を定義することもできます。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE note [
<!ENTITY nbsp "&#xA0;">
<!ENTITY writer "Writer: Donald Duck.">
<!ENTITY copyright "Copyright: W3Schools.">
]>

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
<footer>&writer;&nbsp;&copyright;</footer>
</note>
自分で試してみてください»

ヒント:エンティティには3つの部分があります。アンパサンド(&)で始まり、エンティティ名が続き、セミコロン(;)で終わります。


いつDTDを使用するのですか?

DTDを使用すると、独立したグループの人々が、データの交換に標準のDTDを使用することに同意できます。

DTDを使用すると、外部から受信したデータが有効であることを確認できます。

DTDを使用して、独自のデータを検証することもできます。

DTDを学習したい場合は、DTDチュートリアルをお読みください。


DTDを使用しないのはいつですか?

XMLはDTDを必要としません。

XMLを実験しているとき、または小さなXMLファイルを操作しているときは、DTDの作成は時間の無駄になる可能性があります。

アプリケーションを開発する場合は、仕様が安定するまで待ってからDTDを追加してください。そうしないと、検証エラーが原因でソフトウェアが機能しなくなる可能性があります。