2011-12-05 8 views
8

¿Es ésta una instancia XML válida? No tiene nada entre la declaración XML y el nodo raíz.¿Debe una nueva línea seguir la declaración XML?

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

no pude encontrar el lugar correcto en la especificación XML mí mismo y espero que alguien me ayude ...

Respuesta

7

La especificación (véase 2.8 Prolog and Document Type Declaration) no requiere (pero permite) una nueva línea de sigue la declaración XML

Formalmente Esto se escribe como:

[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

Como se puede ver en el XML [22] prolog La declaración es opcional (vea el signo de interrogación después del símbolo) y cero, uno o más (vea la estrella) Misc puede seguir que son: Comentarios, otras Instrucciones de procesamiento (PI) o Espacio en blanco (S). Whitespace incluye la nueva línea.

Dado que Misc es opcional aquí, no es necesario seguir una nueva línea después de la declaración.

+0

¿Pero probablemente en algún otro lugar de la especificación hay una declaración? – Andrej

+0

Entonces la especificación se contradiría a sí misma. –

+0

¿Pero probablemente la especificación dice algo acerca de cómo debe comenzar el contenido del documento? – Andrej

2

Las líneas nuevas o algo así no son parte de la especificación. Cuando, por ejemplo, escribe un documento XML con XMLOutputter Class (en Java), obtiene un archivo sin nuevas líneas. Las nuevas líneas son para humanos.

+3

Gracias. Pero no puedo estar seguro solo porque algunas implementaciones de Java hacen esto. – Andrej

Cuestiones relacionadas