2011-12-05 12 views
8

Questa è un'istanza XML valida? Non ha nulla tra la dichiarazione XML e il nodo radice.Una nuova riga deve seguire la dichiarazione XML?

<?xml version="1.0" encoding="UTF-8"?><data></data> 

non riuscivo a trovare il posto giusto nella specifica XML me stesso e spero che qualcuno mi aiuterà ...

risposta

7

Le specifiche (vedi 2.8 Prolog and Document Type Declaration) non richiede (ma consente) un ritorno a capo a seguire la dichiarazione XML.

Formalmente questo è scritto come:

[16] PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
...
[22] prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
[23] XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
...
[27] Misc ::= Comment | PI | S

Come si può vedere nel [22] prolog XML La dichiarazione è opzionale (vedere il punto interrogativo dopo il simbolo) e zero, uno o più (vedere la stella) Misc possono seguire quali sono: commenti, altre istruzioni di elaborazione (PI) o spazio bianco (S). Whitespace include la nuova riga.

Perché Misc è facoltativo qui, ma non è necessario seguire una nuova riga dopo la dichiarazione.

+0

Ma probabilmente da qualche altra parte nella specifica c'è una dichiarazione? – Andrej

+0

Quindi la specifica si contraddirebbe. –

+0

Ma probabilmente le specifiche dicono qualcosa su come deve iniziare il contenuto del documento? – Andrej

2

Le nuove linee non fanno parte delle specifiche. Quando, ad esempio, scrivi un documento XML con la classe XMLOutputter (in Java), ottieni un file senza newline. I newline sono per gli umani.

+3

Grazie. Ma non posso essere sicuro solo perché alcune implementazioni Java lo fanno. – Andrej

Problemi correlati