Risposte:
La standalonedichiarazione è un modo per dire al parser di ignorare qualsiasi dichiarazione di markup nel DTD . Successivamente il DTD viene utilizzato solo per la convalida.
Ad esempio, considera l'umile <img>tag. Se guardi il DTD XHTML 1.0 , vedi una dichiarazione di markup che dice al parser che i <img>tag devono essere VUOTI, possedere srce altattributi. Quando un browser sta attraversando un documento XHTML 1.0 e trova un <img>tag, dovrebbe notare che il DTD richiede srce gli altattributi e li aggiunge se non sono presenti. Chiuderà automaticamente il <img>tag poiché dovrebbe essere VUOTO. Questo è ciò che la specifica XML intende per "dichiarazioni di markup possono influenzare il contenuto del documento". È quindi possibile utilizzare la standalonedichiarazione per indicare al parser di ignorare queste regole.
Se il tuo parser lo fa effettivamente è un'altra domanda, ma dovrebbe essere un parser di convalida conforme agli standard (come un browser).
Nota che se non specifichi un DTD, la dichiarazione autonoma "non ha significato", quindi non c'è motivo di usarlo se non specifichi anche un DTD.
standalone=yes, le dichiarazioni di markup non vengono ignorate, ma causano XML non valido del documento. Ti dispiacerebbe se lo modificassi nella risposta?
yese no, dove si notrova il valore predefinito.standalone="yes"significa che il processore XML deve usare il DTD solo per la validazione. In questo caso sarà non essere utilizzato per:
standalone="yes"possibile aggiungere vincoli di validità se il documento utilizza un DTD esterno. Quando il documento contiene elementi che richiedono la modifica dell'XML, come i valori predefiniti per gli attributi, e standalone="yes"viene utilizzato, il documento non è valido .standalone="yes" può aiutare a ottimizzare le prestazioni dell'elaborazione dei documenti.Fonte: lo pseudo-attributo autonomo è rilevante solo se si utilizza un DTD
standalone descrive se il documento XML corrente dipende da una dichiarazione di markup esterna.
W3C descrive il suo scopo in "Extensible Markup Language (XML) 1.0 (Quinta Edizione)":
Le dichiarazioni di markup possono influire sul contenuto del documento, trasmesso da un processore XML a un'applicazione; esempi sono le impostazioni predefinite degli attributi e le dichiarazioni di entità. La dichiarazione del documento autonomo, che può apparire come un componente della dichiarazione XML, segnala se ci sono o meno tali dichiarazioni che appaiono esterne all'entità del documento o nelle entità dei parametri. [Definizione: una dichiarazione di markup esterna è definita come una dichiarazione di markup che si verifica nel sottoinsieme esterno o in un'entità parametro (esterna o interna, quest'ultima inclusa perché i processori non validanti non sono tenuti a leggerli).]
L'intento del standalone=yes dichiarazione è di garantire che le informazioni contenute nel documento possano essere recuperate fedelmente in base al solo DTD interno, vale a dire che il documento può "essere autonomo" senza riferimenti esterni. La convalida di un documento autonomo garantisce che i processori non convalidanti dispongano di tutte le informazioni disponibili per analizzare correttamente il documento.
La dichiarazione autonoma non serve a nulla se un documento non ha DTD esterno e il DTD interno non ha riferimenti a entità parametro, poiché questi documenti sono già implicitamente autonomi.
Di seguito sono riportati gli effetti reali dell'utilizzo standalone=yes.
Obbliga i processori a generare un errore durante l'analisi dei documenti con un DTD esterno o riferimenti a entità parametro, se il documento contiene riferimenti a entità non dichiarate nel DTD interno (ad eccezione del testo sostitutivo di entità parametro in quanto i processori non validanti non sono tenuti a analizzalo); amp, lt, gt, apos, E quotsono le uniche eccezioni
Quando analizza un documento non dichiarato come autonomo, un processore non convalidante è libero di interrompere l'analisi del DTD interno non appena incontra un riferimento all'entità parametro. La dichiarazione di un documento come autonoma impone ai processori non convalidanti di analizzare le dichiarazioni di markup nel DTD interno anche dopo aver ignorato uno o più riferimenti di entità parametro.
Forza i processori di convalida a generare un errore se nel documento viene rilevata una delle seguenti condizioni e le rispettive dichiarazioni si trovano nel DTD esterno o nel testo di sostituzione dell'entità parametro:
amp, lt, gt, apos, e quot)Un processore non convalidante potrebbe prendere in considerazione il recupero del DTD esterno e l'espansione di tutti i riferimenti di entità parametro per i documenti che non sono autonomi, anche se non è obbligatorio farlo, ad esempio l'impostazione standalone=yespotrebbe teoricamente migliorare le prestazioni per i processori non validanti (avviso spoiler: probabilmente non farà differenza).
Le altre risposte qui sono incomplete o errate, il malinteso principale è quello
La dichiarazione autonoma è un modo per dire al parser di ignorare qualsiasi dichiarazione di markup nel DTD. Successivamente il DTD viene utilizzato solo per la convalida.
standalone = "yes" significa che il processore XML deve utilizzare il DTD solo per la convalida.
Al contrario, la dichiarazione di un documento come autonomo costringerà effettivamente un processore non convalidante a analizzare le dichiarazioni interne che normalmente deve ignorare (cioè quelle dopo un riferimento di entità parametro ignorato). I processori non convalidanti devono comunque utilizzare le informazioni nel DTD interno per fornire i valori degli attributi predefiniti e normalizzare gli attributi tokenizzati, poiché questo è indipendente dalla convalida.