Domanda

Non ero a conoscenza di una differenza, ma un collega dice che c'è, anche se non può eseguirne il backup. Qual è la differenza, se presente?

È stato utile?

Soluzione

C'è una differenza, sì.

XML che aderisce allo standard XML è considerato ben formato, mentre l'xml che aderisce a un < a href = "https://www.w3schools.com/xml/xml_dtd.asp" rel = "noreferrer"> DTD è considerato valido.

Altri suggerimenti

XML valido è XML che ha esito positivo alla convalida rispetto a un DTD.

L'XML ben formato è XML che ha tutti i tag chiusi nell'ordine corretto e, se ha una dichiarazione, ha la prima cosa nel file con gli attributi appropriati.

In altre parole, la validità si riferisce alla semantica, la buona formazione si riferisce alla sintassi.

Quindi puoi avere un XML ben formato non valido.

Ben formato vs XML valido

Ben formato significa che un oggetto testuale incontra la Requisiti del W3C per essendo XML .

Valid indica che un XML ben formato soddisfa i requisiti aggiuntivi forniti da uno schema specificato.


Definizioni ufficiali

Secondo la Raccomandazione del W3C per XML :

  

[Definizione: un oggetto dati è un documento XML se lo è    ben formato , come definito in questa specifica. Inoltre, il   Il documento XML è valido se soddisfa alcuni ulteriori vincoli.]


Osservazioni:

  • Un documento che non è ben formato non è XML. ( XML ben formato è comunemente usato ma tecnicamente ridondante.)
  • Essere validi implica essere ben formati.
  • Essere ben formati non implica essere validi.
  • Sebbene la Raccomandazione W3C per XML definisce validità per essere contro un DTD, l'uso convenzionale consente di applicare il termine per la conformità agli schemi XML specificati tramite XSD , RELAX NG , Schematron o altri metodi.

Esempi di ciò che fa sì che un documento sia ...

Non ben formato :

  • Un elemento manca di un tag di chiusura (e non si chiude automaticamente).
  • Gli elementi si sovrappongono senza l'annidamento corretto: <a><b></a></b>
  • Nel valore di un attributo manca una virgoletta di chiusura che corrisponda a citazione di apertura.
  • < o & sono utilizzati nei contenuti anziché &lt o &amp;.
  • Esistono più elementi radice.
  • Esistono più dichiarazioni XML o una dichiarazione XML appare diversa dalla parte superiore del documento.

non valido :

  • Manca un elemento o un attributo ma è richiesto dallo schema XML.
  • Un elemento o un attributo viene utilizzato ma non definito dallo schema XML.
  • Il contenuto di un elemento non corrisponde al contenuto specificato dallo schema XML.
  • Il valore di un attributo non corrisponde al tipo specificato dallo schema XML.

Spazio dei nomi-Well-Formed

Tecnicamente, i caratteri dei due punti sono consentiti nei nomi dei componenti in XML. Tuttavia, i due punti dovrebbero può essere utilizzato solo nei nomi per scopi dello spazio dei nomi:

  

Nota:

     

La raccomandazione Spazi dei nomi in XML [ Nomi XML ] assegna un   che significa nomi che contengono caratteri di due punti. Pertanto, autori   non utilizzare i due punti nei nomi XML, tranne per scopi dello spazio dei nomi,   ma i processori XML devono accettare i due punti come carattere nome.

Pertanto, un altro termine, spazio dei nomi ben formato , è definito nella Spazi dei nomi nella raccomandazione W3C XML 1.0 che implica tutte le regole XML per la ben formata più quelle che governano gli spazi dei nomi e i prefissi degli spazi dei nomi.

Colloquialmente, il termine ben formato è spesso usato dove ben strutturato nello spazio dei nomi sarebbe più preciso. Tuttavia, questo è un minutoo modalità tecniche di conseguenza meno pratica rispetto alla distinzione tra XML ben formato e valido descritta in questa risposta.

Come altri hanno già detto, un XML ben formato è conforme alle specifiche XML e un XML valido è conforme a un determinato schema.

Un altro modo per dirlo è che XML ben formato è lessicamente corretto (può essere analizzato), mentre XML valido è grammaticalmente corretto (può essere abbinato a un vocabolario e una grammatica noti).

Un documento XML non può essere valido fino a quando non è ben formato. Tutti i documenti XML sono mantenuti allo stesso standard di buona formazione (un RFC rilasciato dal W3). Un documento XML può essere valido su alcuni schemi e non valido su altri. Esistono numerosi linguaggi di schema, molti dei quali sono essi stessi basati su XML.

XML ben formato è XML che soddisfa i requisiti sintattici del linguaggio. Non manca alcun tag di chiusura, tutti i tag singleton utilizzano <whatever /> anziché solo <whatever> e i tag di chiusura sono nell'ordine giusto.

XML valido è XML che utilizza un DTD ed è conforme a tutti i suoi requisiti. Pertanto, se si utilizza un attributo in modo errato, si viola il DTD e non si è validi.

Tutti gli XML validi sono ben formati, ma non tutti gli XML ben formati sono validi.

XML è ben formato se soddisfa i requisiti per tutti i documenti XML stabiliti dagli standard - quindi cose come avere un singolo nodo radice, avere nodi nidificati correttamente, tutti i nodi che hanno un tag di chiusura (o usare la scorciatoia del nodo vuoto di una barra prima della parentesi angolare di chiusura), gli attributi vengono citati ecc. Essere ben formati significa solo che aderisce alle regole di XML e può quindi essere analizzato correttamente.

XML è valido se verrà convalidato con un DTD o uno schema. Ciò ovviamente differisce da caso a caso: XML valido per uno schema non sarà valido per un altro schema, anche se è ancora ben formato.

Se XML non è ben formato, non può essere analizzato correttamente: i parser genereranno semplicemente un'eccezione o segnaleranno un errore. Questo è generico e non importa cosa contiene il tuo XML. Solo una volta analizzato può essere verificato la validità. Questo dominio o contesto dipende e richiede un DTD o uno schema per la convalida. Per semplici documenti XML, potresti non avere un DTD o uno schema, nel qual caso non puoi sapere se l'XML è valido - il concetto o la validità semplicemente non si applicano in questo caso. Naturalmente, questo non significa che non puoi usarlo, significa solo che non puoi dire se è valido o meno.

W3C, nella specifica XML, ha definito alcune regole che devono essere seguite durante la creazione di documenti XML. Gli esempi di tali regole includono avere esattamente un elemento radice, avere un tag di fine per ogni tag di inizio, usare virgolette singole / doppie per i valori degli attributi e così via. Se un documento XML segue tutte queste regole, si dice che sia un documento ben formato e i parser XML possono essere usati per analizzare ed elaborare tali documenti.

Le definizioni del tipo di documento (DTD) o gli schemi XML possono essere utilizzati per definire la struttura e il contenuto di una specifica classe di documenti XML. Ciò include i dettagli della relazione padre-figlio, gli elenchi di attributi, le informazioni sul tipo di dati, le restrizioni di valore, ecc. Oltre alle regole di correttezza, se un documento XML segue anche le regole specificate nel DTD / Schema associato, si dice che essere un documento XML valido.

Tutti i documenti XML validi sono ben formati, ma non è sempre vero il contrario. I documenti XML ben formati non devono necessariamente essere validi.

Aggiungerò che un XML valido implica anche che è ben formato, ma un XML ben formato non è necessariamente valido.

Oltre ai suddetti DTD, ci sono altri 2 modi per descrivere e validare i documenti XML sono XMLSchema e RelaxNG , entrambi i quali potrebbero essere più facili da usare e supportare di più funzioni rispetto a DTD.

Se XML sta confermando le regole DTD, allora è un XML valido. Se un documento XML è conforme alle regole XML (tutti i tag iniziato sono chiusi, c'è un elemento radice ecc.) quindi è un XML ben formato.

Tratto da Extensible Markup Language (XML) 1.0 (Quinta Edizione) - W3C Raccomandazione 26 novembre 2008 :

  

[Definizione: un oggetto dati è un documento XML se è ben formato, come   definito in questa specifica. Inoltre, il documento XML è valido   se soddisfa alcuni ulteriori vincoli.]


Per coloro che preferiscono il codice psuedo ai paragrafi sui paragrafi del testo ... :)

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

Basato sulla teoria: " Well Formed " vs. Valido

DTD è l'acronimo di Document Type Definition. Questa è una descrizione del contenuto di una famiglia di file XML. Questo fa parte della specifica XML 1.0 e consente di descrivere e verificare che una determinata istanza del documento sia conforme all'insieme di regole che ne dettagliano la struttura e il contenuto.

La convalida è il processo di verifica di un documento rispetto a un DTD (più in generale rispetto a un insieme di regole di costruzione).

Il processo di convalida e la creazione di DTD sono le due parti più difficili del ciclo di vita XML. In breve un DTD definisce tutti i possibili elementi che possono essere trovati all'interno del documento, qual è la forma formale dell'albero del documento (definendo il contenuto consentito di un elemento; o testo, un'espressione regolare per l'elenco consentito di bambini o contenuto misto cioè sia testo che figli). Il DTD definisce anche gli attributi validi per tutti gli elementi e i tipi di tali attributi.

Bene, l'XML che non è ben formato, un po 'per definizione, non è XML. Le persone di solito si riferiscono a XML valido come XML che aderisce a un determinato schema (XSD o DTD).

Vedi DTD XML su scuole W3 :

  

Un documento XML con sintassi corretta è chiamato " Ben formato " ;.

     

Un documento XML convalidato contro un DTD è sia " Ben formato " e   & Quot; quot valido &;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top