質問

私は違いに気づきませんでしたが、同僚は、それを裏付けることはできないものの、違いはあると言っていました。違いがあるとしたら何でしょうか?

役に立ちましたか?

解決

違いはあります、はい。

に準拠した XML XML標準 は適切に形成されていると見なされますが、xml は DTD は有効とみなされます。

他のヒント

有効な XML とは、DTD に対する検証に成功した XML です。

整形式の XML とは、すべてのタグが適切な順序で閉じられており、宣言がある場合は、適切な属性を持つファイルの最初にその宣言が含まれている XML です。

言い換えれば、有効性はセマンティクスを指し、整形式性は構文を指します。

そのため、無効な整形式 XML が存在する可能性があります。

整形式の XML と有効な XML

整った形式 テキストオブジェクトが条件を満たすことを意味します W3C の要件 のために XMLであること.

有効 整形式の XML が、指定されたスキーマによって与えられる追加要件を満たしていることを意味します。


公式の定義

ごとに XML に関する W3C 勧告:

[意味:データ オブジェクトが XML ドキュメントである場合、それは XML ドキュメントです。 整った形の, 、この仕様で定義されているように。さらに、XMLドキュメントはです 有効 さらに特定の制約を満たしている場合。]


所見:

  • 整形式ではないドキュメントは XML ではありません。(整形式の XML 一般的に使用されていますが、技術的には冗長です。)
  • 有効であるということは、整形式であることを意味します。
  • 整形式であることは、有効であることを意味するものではありません。
  • とはいえ、 XML に関する W3C 勧告 定義する 有効 DTD に反するため、従来の使用法では、この用語は、次の方法で指定された XML スキーマに準拠するために適用できます。 XSD, リラックスNG, スキーマトロン, 、または他の方法。

文書が壊れる原因の例...

整形式ではありません:

  • 要素に終了タグがありません (また、自己終了タグではありません)。
  • 要素が適切にネストされずに重複します。 <a><b></a></b>
  • 属性値には、オープニングの見積もりに一致するクロージング見積もりがありません。
  • < または & ではなくコンテンツ内で使用されます &lt または &amp;.
  • 複数のルート要素が存在します。
  • 複数の XML 宣言が存在するか、XML 宣言がドキュメントの先頭以外に表示されます。

無効:

  • 要素または属性が欠落していますが、XML スキーマで必要です。
  • 要素または属性が使用されていますが、XML スキーマによって定義されていません。
  • 要素の内容が XML スキーマで指定された内容と一致しません。
  • 属性の値が、XML スキーマで指定された型と一致しません。

整形式の名前空間

技術的には、XML のコンポーネント名ではコロン文字が許可されています。ただし、コロン すべき 名前空間の目的で名前にのみ使用されます。

注記:

XML の名前空間に関する推奨事項 [XML名]コロン文字を含む名前に意味を割り当てます。したがって、著者は、名前空間の目的を除いてXML名でコロンを使用すべきではありませんが、XMLプロセッサはコロンを名前文字として受け入れる必要があります。

したがって、別の用語では、 整形式の名前空間, で定義されています。 XML 1.0 W3C 勧告の名前空間 これは、整形式性に関するすべての XML ルールを意味します。 プラス 名前空間と名前空間プレフィックスを管理するもの。

口語的には、この用語は 整った形の どこでよく使われますか 整形式の名前空間 より正確になります。ただし、これはマイナーな技術的な方法であり、次の違いほど実際的な影響はありません。 整形式の XML と有効な 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 は整形式であると言えます。つまり、ルート ノードが 1 つあること、ノードが正しくネストされていること、すべてのノードに終了タグがあること (または、前にスラッシュの空のノードの省略表現を使用していることなど)右山かっこ)、引用符で囲まれた属性など。整形式であるということは、XML の規則に従っており、適切に解析できることを意味します。

XML は、DTD またはスキーマに対して検証される場合には有効です。これは明らかにケースバイケースで異なります。たとえ整形式であっても、あるスキーマに対して有効な XML は、別のスキーマに対しては有効ではありません。

XML が整形式でない場合、適切に解析できません。パーサーは単に例外をスローするか、エラーを報告します。これは汎用的なものであり、XML に何が含まれているかは関係ありません。解析された後でのみ、有効性をチェックできます。このドメインまたはコンテキストは依存しており、検証するには DTD またはスキーマが必要です。単純な XML ドキュメントの場合、DTD やスキーマがない場合があります。その場合、XML が有効かどうかを知ることができません。この場合、概念や有効性は単純に当てはまりません。もちろん、これは使用できないという意味ではなく、それが有効かどうか判断できないというだけです。

W3C は、XML 仕様の中で、XML ドキュメントの作成時に従う必要がある特定のルールを定義しています。このようなルールの例としては、ルート要素を 1 つだけ持つこと、開始タグごとに終了タグを持つこと、属性値に一重引用符または二重引用符を使用することなどが含まれます。XML ドキュメントがこれらすべてのルールに従っている場合、そのドキュメントは整形式のドキュメントであると言われ、XML パーサーを使用してそのようなドキュメントを解析および処理できます。

Document Type Definition (DTD) または XML スキーマを使用して、特定のクラスの XML ドキュメントの構造とコンテンツを定義できます。これには、親子関係の詳細、属性リスト、データ型情報、値の制限などが含まれます。XML ドキュメントが整形式ルールに加えて、関連する DTD/スキーマで指定されたルールに従っている場合、それは有効な XML ドキュメントであると言われます。

有効な XML ドキュメントはすべて整形式ですが、その逆は必ずしも当てはまりません。整形式の XML ドキュメントが必ずしも有効である必要はありません。

有効な XML は整形式であることも意味しますが、整形式の XML が必ずしも有効であるとは限りません。

前述の DTD に加えて、XML ドキュメントを記述および検証するには他にも 2 つの方法があります。 XMLスキーマ そして リラックスNG, どちらも DTD よりも使いやすく、より多くの機能をサポートしている可能性があります。

XML が DTD ルールに準拠している場合、それは有効な XML です。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

理論に基づいて: 「整った」vs.有効

DTD は、Document Type Definition の頭字語です。これは、XML ファイルのファミリーの内容の説明です。これは XML 1.0 仕様の一部であり、特定のドキュメント インスタンスがその構造と内容を詳述する一連のルールに準拠していることを記述および検証できるようになります。

検証は、ドキュメントを DTD (より一般的には一連の構築ルール) と照合してチェックするプロセスです。

検証プロセスと DTD の構築は、XML ライフサイクルの 2 つの最も困難な部分です。簡単に言うと、DTD は、ドキュメント内で見つかる可能性のあるすべての要素、つまりドキュメント ツリーの正式な形状を定義します (要素の許可されるコンテンツを定義することによって)。テキスト、子の許可リストの正規表現、または混合コンテンツ、つまり混合コンテンツのいずれかです。テキストと子の両方)。DTD は、すべての要素の有効な属性とそれらの属性の型も定義します。

そうですね、整形式ではない XML は、定義上、XML ではありません。通常、有効な XML とは、特定のスキーマ (XSD または DTD) に準拠した XML のことを指します。

見る W3 School の XML DTD:

正しい構文を持つ XML ドキュメントは「整形式」と呼ばれます。

DTDに対して検証されたXMLドキュメントは、「適切に形成された」と「有効」の両方です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top