xml - linea - hacer comentarios en android
¿Los comentarios XML pueden ir a cualquier parte? (4)
Escribí una herramienta simple para generar un conjunto de datos DBUnit XML usando consultas que ingresa el usuario. Quiero incluir cada consulta ingresada en el XML como un comentario, pero la API DBUnit para generar el archivo XML no admite insertar el comentario donde me gustaría (por encima de los datos que genera), así que estoy recurriendo a poner el comente con TODAS las consultas en la parte superior o inferior.
Entonces mi pregunta: ¿es válido XML para colocarlo en cualquier ubicación? Por ejemplo, arriba de la Declaración XML:
<!-- Queries used: ... -->
<?xml version=''1.0'' encoding=''UTF-8''?>
<dataset>
...
</dataset>
O debajo del nodo raíz:
<?xml version=''1.0'' encoding=''UTF-8''?>
<dataset>
...
</dataset>
<!-- Queries used: ... -->
Planeo probar inicialmente por encima de la Declaración XML, pero tengo dudas sobre si es XML válido, a pesar del reclamo de la wikipedia :
Los comentarios se pueden colocar en cualquier parte del árbol, incluso en el texto si el contenido del elemento es texto o #PCDATA.
Planeo publicar de nuevo si esto funciona, pero sería bueno saber si es un estándar XML oficial.
ACTUALIZACIÓN: vea mi respuesta a continuación para obtener el resultado de mi prueba.
El primer ejemplo no es XML válido, la declaración debe ser lo primero en un documento XML.
Pero además de eso, los comentarios pueden ir a cualquier otro lado.
Corregir tu primer ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<!-- Queries used: ... -->
<dataset>
</dataset>
Gracias por las respuestas a todos!
Resultó que el comentario anterior al archivo parecía funcionar, pero cuando profundicé en el origen DBUnit, es porque la validación está desactivada.
Probé una simple carga de documentos a través de:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File("/path/to/file"));
y esto falla con una excepción porque la Declaración XML no es lo primero (como otros indicaron sería el caso).
Entonces, aunque DBUnit funcionaría, prefiero tener un XML válido, así que moví el comentario hasta el final (ya que DBUnit genera la Declaración XML, no es una opción colocar el comentario debajo de él, aunque yo preferiría que ... . al menos no sin modificar el XML después del hecho, que sería más trabajo de lo que vale).
La instrucción de procesamiento debe ser lo primero en el contenido XML (consulte el comentario XML y las instrucciones de procesamiento ). Lo siguiente debería funcionar:
<?xml version=''1.0'' encoding=''UTF-8''?>
<!-- Queries used: ... -->
<dataset>
...
</dataset>
De acuerdo con la especificación XML , un documento XML bien formado es:
document ::= prolog element Misc*
donde prolog
es
prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
y
XMLDecl ::= ''<?xml'' VersionInfo EncodingDecl? SDDecl? S? ''?>''
lo que significa que, si desea tener comentarios en la parte superior, no puede tener una declaración de tipo XML.
La especificación coincide con Wikipedia en los comentarios:
2.5 Comentarios
[Definición: los comentarios pueden aparecer en cualquier parte de un documento fuera de otro marcado; además, pueden aparecer dentro de la declaración del tipo de documento en lugares permitidos por la gramática. No son parte de los datos de caracteres del documento; un procesador XML PUEDE, pero no es necesario, hacer posible que una aplicación recupere el texto de los comentarios. Para la compatibilidad, la cadena "-" (doble guión) NO DEBE ocurrir en los comentarios.] Las referencias a entidades de parámetros NO DEBEN ser reconocidas en los comentarios.
Todo esto en conjunto significa que puede poner comentarios en cualquier lugar que no esté dentro de otro marcado , excepto que no puede tener una declaración XML si lidera con un comentario .
Sin embargo, aunque en teoría la teoría concuerda con la práctica, en la práctica no es así, por lo que me gustaría saber cómo funciona el experimento.