私は同僚と XML 宣言ノードについて議論しました (これについて話しています => <?xml version="1.0" encoding="UTF-8"?>
)。
「有効な XML」と呼ばれるためには、XML 宣言ノードが必要であると私は考えています。
私の同僚は、デフォルトのエンコーディングは UTF-8 でバージョンは常に であるため、XML 宣言ノードはオプションであると述べています1.0
。 これは理にかなっていますが、標準では何と言っているのでしょうか?
つまり、次のファイルが与えられたとします。
<books>
<book id="1"><title>Title</title></book>
</book>
次のように言えるでしょうか:
- 有効なXMLですか?
- それは有効な XML ノードですか?
- それは有効な XML ドキュメントですか?
どうもありがとうございます。
ベストアンサー1
これ:
<?xml version="1.0" encoding="UTF-8"?>
処理命令ではありません - それはXML宣言その目的は、ドキュメントの残りの部分の読み取りを開始する前に、XML パーサーを正しく構成することです。
これは処理命令のように見えますが、実際の処理命令とは異なり、パーサーが作成する DOM の一部にはなりません。
それは必要ではない"有効"。"有効"手段「DTD またはスキーマで記述された、明確に定義されたドキュメント タイプを表します」スキーマやDTDがなければ、"有効"意味がありません。
多くの人が誤用している"有効"彼らが本当に意味しているとき「整形式の」整形式の XML ドキュメントとは、XML の基本的な構文規則に従ったドキュメントです。
version
とencoding
(それぞれ1.0
とUTF-8
/ )の両方にデフォルトがあるため、ドキュメントが整形式であるために XML 宣言も必要ありませんUTF-16
。ファイルに Unicode BOM(バイト オーダー マーク)が存在する場合は、それによってエンコードが決まります。BOM も XML 宣言もない場合は、UTF-8 が想定されます。
これは、XML ファイルでのエンコーディング宣言と検出の仕組みに関する標準的なスレッドです。XML 宣言のデフォルトのエンコーディング (UTF-8) はどの程度デフォルトですか?
ご質問に対する回答:
- 有効なXMLですか?
これは、DTD またはスキーマがなければ回答できません。ただし、形式は整っています。 - それは有効な XML ノードですか?
あノードドキュメントのメモリ内表現 (DOM) に関連する概念です。このスニペットは整形式であるため、ノードに解析できます。 - それは有効な XML ドキュメントですか?
#1を参照してください。
ここではいくつかの XML 概念が混同されています (心配しないでください。この混乱はよくあることであり、概念が重複し、名前が頻繁に誤って使用されるという事実に一部起因しています)。
- すべてはここから始まる構造化データ名前、値、属性で構成され、ツリーとして編成されます。
- テキスト最も基本的な意味は、この構造化されたデータをテキスト形式で表現するための構文です(「マークアップ言語」)。シリアライズツリーを文字列に変換し、それを使用してデシリアライズ文字列を再びツリーに追加します。
- 書類通常、シリアル化されたツリーを表す文字列を指します。ファイルに保存したり、ネットワーク経由で送信したり、メモリ内に作成したりできます。
- シリアル化とデシリアル化のルールは非常に厳密に定義されています。書類(文字列)をツリーにデシリアライズできるものは、整った。
- のセマンティクスこのようなツリーの構造(許容される要素、要素の数と順序、名前空間、実際は複雑な規則の数々)は、DTDまたはスキーマと呼ばれるもので定義できます。ツリーが特定の明確に定義されたセマンティクスのセットに従う場合、それは有効。
- 用語ドキュメント オブジェクト モデル (DOM)構造化データの標準化されたメモリ内表現を指します。これは、標準化されたメソッドを使用してこのツリーにアクセスするための明確に定義された API の名前です。
- あノードドキュメント オブジェクト モデルの基本データ構造です。