it-swarm.dev

Existuje nějaký rozdíl mezi „platným xml“ a „dobře vytvořeným xml“?

Nebyl jsem si vědom rozdílu, ale spolupracovník říká, že je, i když to nedokáže zálohovat. Jaký je rozdíl?

73
user18931

Existuje rozdíl, ano.

XML, které se drží standardu XML ​​ je považováno za dobře vytvořené, zatímco XML, které dodržuje DTD , je považováno za platné.

76
Kilhoffer

Platný XML je XML, který následuje ověření proti DTD.

Dobře vytvořené XML je XML, které má všechny tagy uzavřené ve správném pořadí, a pokud má deklaraci, má to první v souboru se správnými atributy.

Jinými slovy, platnost se vztahuje na sémantiku, dobře formovaná odkazuje na syntaxi.

Takže můžete mít neplatný dobře tvarovaný XML.

27
Vinko Vrsalovic

Dobře formovaný vs Valid XML

Dobře tvarované znamená, že textový objekt splňuje požadavky W3C for být XML

Valid znamená, že dobře vytvořený XML splňuje další požadavky dané zadaným schématem.


Oficiální definice

Podle Doporučení W3C pro XML :

[Definice: Datový objekt je dokument XML, pokud je well-shaped , jak je definováno v této specifikaci. Dokument XML je navíc valid pokud splňuje některá další omezení.]


Pozorování:

  • Dokument, který není dobře formován, není XML. (Dobře vytvořený XML je běžně používán, ale technicky nadbytečný.)
  • Být platný znamená být dobře formovaný.
  • Být dobře formovaný neznamená, že je platný.
  • Ačkoli W3C Doporučení pro XML definuje platnost být proti DTD, konvenční použití dovolí termín být aplikován pro shodu s XML schématy specifikovanými přes XSD , RELAX NG , Schematron , nebo jiné metody.

Příklady toho, co způsobuje, že dokument bude ...

Není správně vytvořeno:

  • Prvek postrádá zavírací značku (a není samouzavírací).
  • Prvky se překrývají bez řádného vnoření: <a><b></a></b>
  • Hodnota atributu chybí závěrečná nabídka, která odpovídá úvodní nabídce .
  • < nebo & se používají spíše v obsahu než &lt nebo &amp;.
  • Existuje více kořenových prvků.
  • Existuje více deklarací XML nebo deklarace XML se zobrazí jinak než v horní části dokumentu.

Neplatné:

  • Element nebo atribut chybí, ale vyžaduje schéma XML.
  • Element nebo atribut se používá, ale není definován schématem XML.
  • Obsah prvku neodpovídá obsahu určenému schématem XML.
  • Hodnota atributu neodpovídá typu zadanému schématem XML.

Jmenný prostor - dobře vytvořený

Technicky jsou v názvech komponent v XML povoleny znaky dvojtečky. Nicméně, dvojtečky should pouze v názvech pro účely jmenného prostoru:

Poznámka:

Jmenné prostory v doporučení XML [ Názvy XML ] přiřadí význam Jménům obsahujícím znaky dvojtečky. Autoři By proto neměli používat dvojtečku v názvech XML s výjimkou názvů, , Ale procesory XML musí přijmout dvojtečku jako znak názvu.

Další termín, namespace-well-shaped , je tedy definován v Jmenných prostorech v XML 1.0 W3C Doporučení což znamená všechna pravidla XML pro dobře formované plus těch, které řídí jmenné prostory a předpony jmenného prostoru.

Hovorně, termín dobře-tvořil je často používán kde jmenný prostor-dobře-tvořil by byl přesnější. Jedná se však o menší technický způsob, který je méně praktický než rozdíl mezi dobře formovaným a platným XML popsaným v této odpovědi.

25
kjhughes

Jak řekli jiní, dobře vytvořený XML odpovídá specifikaci XML a platné XML odpovídá danému schématu.

Dalším způsobem, jak to vyjádřit, je, že dobře tvarovaný XML je lexicky správný (může být analyzován), zatímco platný XML je gramaticky správný (může být přizpůsoben známé slovní zásobě a gramatice).

Dokument XML nemůže být platný, dokud nebude správně vytvořen. Všechny dokumenty XML jsou uchovávány na stejném standardu pro dobře utvořenou strukturu (RFC vydaný W3). Jeden dokument XML může být platný proti některým schématům a proti ostatním neplatný. Existuje několik jazyků schémat, z nichž mnohé jsou založeny na XML.

16
harpo

XML je XML, které splňuje syntaktické požadavky jazyka. Chybí žádné zavírací značky, které mají všechny vaše singleton tagy používají <whatever /> namísto <whatever> a mají své zavírací značky ve správném pořadí.

Platný XML je XML, který používá DTD a splňuje všechny jeho požadavky. Pokud tedy atribut použijete nesprávně, porušíte DTD a nebudete platit.

Veškeré platné XML je dobře utvořené, ale ne všechny správně vytvořené XML jsou platné.

6
ZachPruckowski

XML je dobře formováno, pokud splňuje požadavky pro všechny dokumenty XML stanovené standardy - takže věci jako mít jeden kořenový uzel, s uzly správně vnořenými, všechny uzly s uzavírací značkou (nebo s použitím zkratky zkratky lomítka před zavírací úhel závorky), citované atributy atd. Být dobře utvořenými prostředky znamená, že se řídí pravidly XML a lze je tedy správně analyzovat.

XML je platné, pokud bude platit proti DTD nebo schématu. To se samozřejmě liší případ od případu - XML, který je platný proti jednomu schématu, nebude platit proti jinému schématu, i když je stále dobře formován.

Pokud XML není správně vytvořeno, nemůže být správně analyzováno - analyzátory jednoduše vyhodí výjimku nebo nahlásí chybu. To je obecné a nezáleží na tom, co váš XML obsahuje. Pouze poté, co je analyzován, může být zkontrolována platnost. Tato doména nebo kontext závislý a vyžaduje DTD nebo schéma ověřit proti. Pro jednoduché dokumenty XML nemusíte mít DTD nebo schéma, v takovém případě nemůžete vědět, zda je XML platný - koncept nebo platnost v tomto případě neplatí. Samozřejmě to neznamená, že ho nemůžete použít, to znamená, že nemůžete říct, zda je to platné.

4
Simon Forrest

W3C ve specifikaci XML definovala určitá pravidla, která je třeba dodržovat při vytváření dokumentů XML. Příklady takových pravidel zahrnují právě jeden kořenový prvek, který má koncovou značku pro každý start-tag, s použitím jednoduchých/dvojitých uvozovek pro hodnoty atributů a tak dále. Pokud dokument XML dodržuje všechna tato pravidla, je řečeno, že se jedná o dobře formovaný dokument a analyzátory XML lze použít k analýze a zpracování takových dokumentů.

Definice typu dokumentu (DTD) nebo XML schémata lze použít k definování struktury a obsahu určité třídy dokumentů XML. To zahrnuje podrobnosti o vztazích mezi rodiči a dětmi, seznamy atributů, informace o datových typech, omezení hodnot atd. Kromě pravidel dobře vytvořených pravidel, pokud se dokument XML řídí také pravidly specifikovanými v přidruženém DTD/schématu, říká se, že být platným dokumentem XML.

Všechny platné dokumenty XML jsou dobře formované, ale opak není vždy pravdivý. Dobře vytvořené dokumenty XML nemusí být nutně platné.

3
harsha

Převzato z Extensible Markup Language (XML) 1.0 (Páté vydání) - Doporučení W3C 26. listopadu 2008 :

[Definice: Datový objekt je dokument XML, pokud je správně vytvořen, jako Definovaný v této specifikaci. Dokument XML je navíc platný , Pokud splňuje některá další omezení.]


Pro ty, kteří upřednostňují psuedo-kód k odstavcům na odstavcích textu ... :)

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

Na základě teorie: "Dobře utvořený" vs. platný

1
Kent Pawar

Dodám, že platné XML také znamená, že je dobře formovaný, ale dobře vytvořený XML nemusí být nutně platný.

1
Joel Coehoorn

Pokud XML potvrzuje pravidla DTD, pak je to platný XML. Pokud dokument XML vyhovuje pravidlům XML (všechny tagy Byly zavřeny, je zde kořenový prvek atd.), Pak je to [. .____.] dobře vytvořený XML.

1
Narasimhareddy

Kromě výše uvedených DTD existují 2 další způsoby popisu a validace XML dokumentů jsou XMLSchema a RelaxNG , z nichž oba mohou být snadněji používány a podporují více funkcí než DTD.

1
Kyle Burton

DTD je zkratka pro definici typu dokumentu. Toto je popis obsahu rodiny souborů XML. Toto je součástí specifikace XML 1.0 a umožňuje popsat a ověřit, zda daná instance dokumentu odpovídá souboru pravidel popisujících její strukturu a obsah.

Validace je proces kontroly dokumentu proti DTD (obecněji proti souboru stavebních pravidel).

Proces validace a vytváření DTD jsou dvě nejobtížnější části životního cyklu XML. Stručně řečeno, DTD definuje všechny možné prvky, které se nacházejí ve vašem dokumentu, jaký je formální tvar stromu dokumentu (definováním povoleného obsahu prvku, buď textu, regulárního výrazu pro povolený seznam dětí nebo smíšeného obsahu). tj. text i děti). DTD také definuje platné atributy pro všechny prvky a typy těchto atributů.

0
Rachna Garg

Viz XML ​​DTD na školách W3 :

Dokument XML se správnou syntaxí se nazývá "Well Formed".

Dokument XML validovaný proti DTD je "Dobře vytvořený" a "Platný".

0
Attila

XML, který není dobře formován, podle definice, není XML. Lidé obvykle odkazují na platné XML jako XML, které dodržuje určité schéma (XSD nebo DTD).

0
Charles Graham