XML宣言ノードは必須ですか? 質問する

XML宣言ノードは必須ですか? 質問する

私は同僚と XML 宣言ノードについて議論しました (これについて話しています => <?xml version="1.0" encoding="UTF-8"?>)。

「有効な XML」と呼ばれるためには、XML 宣言ノードが必要であると私は考えています。

私の同僚は、デフォルトのエンコーディングは UTF-8 でバージョンは常に であるため、XML 宣言ノードはオプションであると述べています1.0。 これは理にかなっていますが、標準では何と言っているのでしょうか?

つまり、次のファイルが与えられたとします。

<books>
  <book id="1"><title>Title</title></book>
</book>

次のように言えるでしょうか:

  1. 有効なXMLですか?
  2. それは有効な XML ノードですか?
  3. それは有効な XML ドキュメントですか?

どうもありがとうございます。

ベストアンサー1

これ:

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

処理命令ではありません - それはXML宣言その目的は、ドキュメントの残りの部分の読み取りを開始する前に、XML パーサーを正しく構成することです。

これは処理命令のように見えますが、実際の処理命令とは異なり、パーサーが作成する DOM の一部にはなりません。

それは必要ではない"有効""有効"手段「DTD またはスキーマで記述された、明確に定義されたドキュメント タイプを表します」スキーマやDTDがなければ、"有効"意味がありません。

多くの人が誤用している"有効"彼らが本当に意味しているとき「整形式の」整形式の XML ドキュメントとは、XML の基本的な構文規則に従ったドキュメントです。

versionencoding(それぞれ1.0UTF-8/ )の両方にデフォルトがあるため、ドキュメントが整形式であるために XML 宣言も必要ありませんUTF-16。ファイルに Unicode BOM(バイト オーダー マーク)が存在する場合は、それによってエンコードが決まります。BOM も XML 宣言もない場合は、UTF-8 が想定されます。

これは、XML ファイルでのエンコーディング宣言と検出の仕組みに関する標準的なスレッドです。XML 宣言のデフォルトのエンコーディング (UTF-8) はどの程度デフォルトですか?


ご質問に対する回答:

  1. 有効なXMLですか?
    これは、DTD またはスキーマがなければ回答できません。ただし、形式は整っています。
  2. それは有効な XML ノードですか?
    ノードドキュメントのメモリ内表現 (DOM) に関連する概念です。このスニペットは整形式であるため、ノードに解析できます。
  3. それは有効な XML ドキュメントですか?
    #1を参照してください。

ここではいくつかの XML 概念が混同されています (心配しないでください。この混乱はよくあることであり、概念が重複し、名前が頻繁に誤って使用されるという事実に一部起因しています)。

  • すべてはここから始まる構造化データ名前、値、属性で構成され、ツリーとして編成されます。
  • テキスト最も基本的な意味は、この構造化されたデータをテキスト形式で表現するための構文です(「マークアップ言語」)。シリアライズツリーを文字列に変換し、それを使用してデシリアライズ文字列を再びツリーに追加します。
  • 書類通常、シリアル化されたツリーを表す文字列を指します。ファイルに保存したり、ネットワーク経由で送信したり、メモリ内に作成したりできます。
  • シリアル化とデシリアル化のルールは非常に厳密に定義されています。書類(文字列)をツリーにデシリアライズできるものは、整った
  • セマンティクスこのようなツリーの構造(許容される要素、要素の数と順序、名前空間、実際は複雑な規則の数々)は、DTDまたはスキーマと呼ばれるもので定義できます。ツリーが特定の明確に定義されたセマンティクスのセットに従う場合、それは有効
  • 用語ドキュメント オブジェクト モデル (DOM)構造化データの標準化されたメモリ内表現を指します。これは、標準化されたメソッドを使用してこのツリーにアクセスするための明確に定義された API の名前です。
  • ノードドキュメント オブジェクト モデルの基本データ構造です。

おすすめ記事