XML宣言と処理命令
XML宣言(<?xml ...?>)とJSONからXMLへの変換における役割を理解します。バージョン、エンコーディング、standalone属性、宣言を含めるタイミングを解説します。
XML Features
詳細な説明
XML宣言はXMLドキュメントの先頭にある <?xml ...?> 行です。XMLのバージョン、文字エンコーディング、ドキュメントがスタンドアロンかどうかを指定します。JSONには等価な概念がありません。
完全なXML宣言:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
<name>MyApp</name>
<version>2.0</version>
</config>
宣言のコンポーネント:
| 属性 | 必須 | 値 | 目的 |
|---|---|---|---|
version |
はい | "1.0" または "1.1" |
XML仕様バージョン |
encoding |
いいえ | "UTF-8"、"UTF-16" など |
ドキュメントの文字エンコーディング |
standalone |
いいえ | "yes" または "no" |
外部DTDが必要かどうか |
JSONからXMLに変換する場合:
ほとんどのコンバーターは自動的に宣言を追加します。
XMLからJSONに変換する場合:
XML宣言はドキュメント形式に関するメタデータであり、データコンテンツではありません。ほとんどのXMLからJSONへのコンバーターは宣言を破棄します。JSONは常にUTF-8(RFC 8259)であり、バージョンやstandaloneの概念がないためです。
宣言を含めるべきか:
- はい -- XMLがファイルに保存されるかネットワーク経由で送信される場合、特にエンコーディングがUTF-8でない場合。
- はい -- 消費側システムがXMLを厳密にバリデートし、宣言を要求する場合。
- いいえ -- より大きなドキュメントに埋め込まれるXMLフラグメントを生成する場合。
- いいえ -- 宣言がデフォルト(
version="1.0" encoding="UTF-8")で、消費側が寛容な場合。
処理命令(PI)はXMLプロセッサに指示を渡す類似の構造です。PIもJSON変換時に破棄されます。ラウンドトリップの忠実度が必要な場合、PIは "?xml-stylesheet" のような特殊キーに格納できます。
ユースケース
JSONテンプレートからXML設定ファイルを生成する際に、消費側のJavaアプリケーションが正しい解析のためにエンコーディング仕様を含む適切なXML宣言を必要とする場合。