私は違いに気付いていませんでしたが、彼はそれをバックアップすることはできませんが、同僚はあると言います。違いはありますか?
はい、違いがあります。
XML標準 に準拠するXMLは整形式と見なされ、 [〜#〜] dtd [〜#〜] に準拠するxmlは有効と見なされます。
有効なXMLは、DTDに対する検証に成功したXMLです。
整形式XMLは、すべてのタグが適切な順序で閉じられたXMLであり、宣言がある場合、ファイル内で適切な属性を持つ最初のものが含まれます。
言い換えれば、有効性はセマンティクスを指し、整形式は構文を指します。
したがって、無効な整形式XMLを使用できます。
Well-formedは、テキストオブジェクトが W3C要件 for for XML 。)を満たすことを意味します。
Validは、整形式XMLが指定されたスキーマで指定された追加要件を満たすことを意味します。
XMLの W3C勧告 :
[定義:データオブジェクトは、この仕様で定義されている well-formed である場合、XMLドキュメントです。さらに、XMLドキュメントは valid さらに特定の制約を満たす場合。]
<a><b></a></b>
<
または&
ではなく、<
または&
がコンテンツで使用されています。技術的には、XMLのコンポーネント名にコロン文字を使用できます。ただし、コロン should は名前空間の目的でのみ名前に使用されます。
注:
XML推奨の名前空間[ XML Names ]は、コロン文字を含む名前に意味を割り当てます。したがって、著者は名前空間の目的を除いてXML名にコロンを使用するべきではありませんが、XMLプロセッサはコロンを名前文字として受け入れる必要があります。
そのため、別の用語 namespace-well-formed( )が Namespaces in XML 1.0で定義されていますW3C勧告 これは、整形式のすべてのXMLルールを意味しますplusネームスペースとネームスペースプレフィックスを管理するルール。
口語的には、namespace-well-formedがより正確な場合、well-formedという用語がよく使用されます。ただし、これは、この回答で説明されている整形式と有効なXMLの区別ほど実用的ではない軽微な技術的方法です。
他の人が言ったように、整形式XMLはXML仕様に準拠しており、有効なXMLは特定のスキーマに準拠しています。
別の言い方をすれば、整形式XMLは字句的に正しい(解析可能)であり、有効なXMLは文法的に正しい(既知の語彙に一致させることができる)および文法)。
XMLドキュメントは、整形式になるまで有効になりません。すべてのXMLドキュメントは、整形式(W3によって公開されたRFC)のために同じ標準に従っています。 1つのXMLドキュメントは、一部のスキーマに対して有効であり、他のスキーマに対して無効になる場合があります。多数のスキーマ言語があり、その多くはそれ自体がXMLベースです。
整形式XMLは、言語の構文要件を満たすXMLです。終了タグが欠落していないこと、すべてのシングルトンタグが<whatever />
だけでなく<whatever>
を使用していること、および終了タグが正しい順序になっていること。
有効なXMLは、DTDを使用し、そのすべての要件に準拠するXMLです。したがって、属性を不適切に使用すると、DTDに違反し、無効になります。
有効なXMLはすべて整形式ですが、整形式のXMLがすべて有効であるとは限りません。
標準で設定されているすべてのXMLドキュメントの要件を満たしている場合、XMLは整形式です。そのため、単一のルートノード、正しくネストされたノード、すべてのノードの終了タグ(またはスラッシュの空のノードの短縮形の使用など)閉じ山括弧)、引用されている属性など。整形式であることは、XMLのルールに準拠しているため、適切に解析できることを意味します。
XMLは、DTDまたはスキーマに対して検証する場合に有効です。これは明らかにケースごとに異なります。1つのスキーマに対して有効なXMLは、まだ整形式であっても、別のスキーマに対して有効ではありません。
XMLの形式が適切でない場合、適切に解析できません。パーサーは単に例外をスローするか、エラーを報告します。これは汎用的なものであり、XMLに何が含まれていてもかまいません。一度解析されると、妥当性を確認できます。このドメインまたはコンテキストは依存しており、検証するDTDまたはスキーマが必要です。単純なXML文書の場合、DTDまたはスキーマがない場合があります。その場合、XMLが有効かどうかを知ることはできません。この場合、概念または有効性はまったく適用されません。もちろん、これは使用できないという意味ではなく、有効かどうかわからないという意味です。
XML仕様のW3Cは、XMLドキュメントの作成中に従う必要がある特定のルールを定義しています。このようなルールの例には、ルート要素を1つだけ持つ、各開始タグに終了タグを付ける、属性値に単一引用符または二重引用符を使用するなどが含まれます。 XMLドキュメントがこれらすべての規則に従っている場合、整形式ドキュメントと呼ばれ、XMLパーサーを使用してそのようなドキュメントを解析および処理できます。
ドキュメントタイプ定義(DTD)またはXMLスキーマを使用して、XMLドキュメントの特定のクラスの構造とコンテンツを定義できます。これには、親子関係の詳細、属性リスト、データ型情報、値の制限などが含まれます。整形式ルールに加えて、XMLドキュメントが関連するDTD /スキーマで指定されたルールにも従う場合、有効なXMLドキュメントであること。
すべての有効なXMLドキュメントは整形式ですが、その逆は必ずしも当てはまりません。整形式のXMLドキュメントは必ずしも有効である必要はありません。
Extensible Markup Language(XML)1.0(第5版)-W3C勧告2008年11月26日 から取得
[定義:データオブジェクトは、この仕様で定義されているように、整形式であればXMLドキュメントです。さらに、XMLドキュメントは、さらに特定の制約を満たす場合に有効です。]
テキストの段落上の段落よりも擬似コードを好む人のために...:)
IF is_well_formed(<XML_doc>) THEN
# It is well-formed, and can be parsed
IF is_valid(<XML_doc>) THEN
# Well-formed and ALSO valid. Hurray!
# **A valid XML doc, is a well-formed doc!**
ELSE
# Only well-formed, NOT valid
END IF
ELSE
# Not well-formed, or valid!
END IF
FUNCTION is_well_formed
IF <does_not_contain_syntax,_spelling,_punctuation,_grammar_errors,_etc._errors> THEN
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
FUNCTION is_valid
IF <markup_of_the_XML_document_matches_"some"_defined_standard> THEN
# Standards used to validate XML could be a DTDs or XML Schemas, referenced within the XML document
RETURN TRUE
ELSE
RETURN FALSE
END IF
END FUNCTION
理論に基づく: "Well Formed" vs. Valid
また、有効なXMLは整形式であることを暗示しますが、整形式XMLは必ずしも有効ではありません。
XMLがDTDルールを確認している場合、それは有効なXMLです。 XMLドキュメントがXMLルールに準拠している場合(開始されたすべてのタグが閉じられている場合、ルート要素があるなど)、それは整形式のXMLです。
DTDはDocument Type Definitionの頭字語です。これは、一連のXMLファイルのコンテンツの説明です。これはXML 1.0仕様の一部であり、特定のドキュメントインスタンスがその構造とコンテンツを詳述する一連のルールに準拠していることを記述および検証できます。
検証は、DTDに対してドキュメントをチェックするプロセスです(より一般的には、一連の構築ルールに対して)。
検証プロセスとDTDの構築は、XMLライフサイクルの2つの最も難しい部分です。簡単に言えば、DTDは、ドキュメント内で検出される可能性のあるすべての要素、ドキュメントツリーの正式な形状を定義します(要素の許可コンテンツを定義することにより、テキスト、子の許可リストの正規表現、または混合コンテンツのいずれかすなわち、テキストと子の両方)。 DTDは、すべての要素の有効な属性とそれらの属性のタイプも定義します。
W3学校のXML DTD を参照してください:
正しい構文のXMLドキュメントは「Well Formed」と呼ばれます。
DTDに対して検証されたXMLドキュメントは、「Well Formed」と「Valid」の両方です。
まあ、定義上、整形式ではないXMLはXMLではありません。通常、人々は有効なXMLを特定のスキーマ(XSDまたはDTD)に準拠するXMLと呼びます。