戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2018年 春期 午前(科目A)08


問題文

XML文書のDTDに記述するものはどれか。

選択肢

使用する文字コード
データ
バージョン情報
文書型の定義(正解)

🔒 解説は解答すると表示されます

XMLの文書型定義【午前解説】

正解の理由

DTD(Document Type Definition)は「文書型定義」を意味し、XML 文書が従うべき要素名、要素間の入れ子構造、属性、エンティティ、空要素や順序・発生回数の制約を記述するためのものです。したがって「文書型の定義」が正解であり、DTD は文書の構造と制約を明示して検証(バリデーション)を可能にします。

解法ステップ

  1. 選択肢を見て「DTD」が何を定義するか思い出す(Document Type Definition)。
  2. 各選択肢と DTD の役割を対照する:文字コード・バージョン・データ・文書型。
  3. DTD が構造(要素・属性・エンティティ)を定義する点に一致する選択肢を選ぶ。
  4. 残りの選択肢は XML プロローグや XML 本体の役割であることを確認して除外する。

選択肢別の誤答解説

  • ア: 使用する文字コード
    誤り。文字コードは XML 宣言(例: <?xml version="1.0" encoding="UTF-8"?>)で指定します。DTD の役割ではありません。
  • イ: データ
    誤り。データ(要素やテキスト内容)は XML 文書そのものに記述され、DTD はそれらの「構造規則」を記述します。
  • ウ: バージョン情報
    誤り。XML のバージョンは XML 宣言の version 属性で示します。DTD は文書のバリデーションルールを定義します。
  • エ: 文書型の定義
    正解。DTD は文書型(要素、属性、エンティティ、順序・出現規則など)を定義するためのものです。

よくある誤解

  • 「文字コードも DTD で指定できる」と誤解する人がいますが、文字コード指定は XML 宣言(プロローグ)の encoding 属性で行います。
  • 「DTD はデータ本体を記述する」と考える人がいますが、DTD はデータの構造規則を記述するのみで、実際のデータは XML 要素内にあります。
  • 「バージョン情報を DTD に書く」と思う人がいますが、XML のバージョンも XML 宣言で指定します(例: version="1.0")。

補足コラム

  • DTD の記述例(内部DTD、外部DTDの宣言例):
<!-- 内部DTDの例 -->
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to    (#PCDATA)>
  <!ELEMENT from  (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body  (#PCDATA)>
]>

<!-- 外部DTDの参照 -->
<!DOCTYPE note SYSTEM "note.dtd">
  • DTD の代替として XSD(XML Schema)があり、データ型の詳細な定義や名前空間の扱いが優れています。
  • バリデーションが必要なら DTD か XSD を用いて XML の検証を行います。単に構文チェックだけならパーサの well-formed チェックで十分です。

FAQ

Q1: DTD でデータ型(数値型や日付型)は定義できますか?
A1: 限定的です。DTD は基本的に文字列と #PCDATA、列挙型などしか扱えず、数値や日付の厳密な型チェックは XML Schema(XSD)が適しています。
Q2: XML ファイルにバージョンと文字コードを書かないとどうなる?
A2: バージョン指定がないと規格のデフォルトが適用されますが、文字コードが不明確だとパーサが誤解する可能性があるため、通常は <?xml version="1.0" encoding="UTF-8"?> のように明示します。
Q3: DTD は必須ですか?
A3: 必須ではありません。DTD はバリデーションや文書の一貫性確保に有用ですが、必ずしも全ての XML 文書で用いられるわけではありません。

関連キーワード: XML、DTD、XML Schema、プロローグ、要素定義、属性定義、バリデーション、エンコーディング、エンティティ、文書型定義
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について