Por fin después de tanto batallar ya encontramos el arreglo de esta obstáculo que tantos lectores de nuestra web han tenido. Si tienes alguna información que aportar no dudes en dejar tu conocimiento.
Solución:
Bien, separemos la cuestión de los personajes que:
- no son válidos en absoluto en ningún XML documento.
- hay que escapar.
La respuesta proporcionada por @dolmen en “¿Qué son los caracteres no válidos en XML?” sigue siendo válida, pero debe actualizarse con la especificación XML 1.1.
1. Caracteres no válidos
Los caracteres descritos aquí son todos los caracteres que se pueden insertar en un documento XML.
1.1. En XML 1.0
- Referencia: consulte la recomendación XML 1.0, §2.2 Caracteres
La lista global de caracteres permitidos es:
[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
Básicamente, los caracteres de control y los caracteres fuera de los rangos de Unicode no están permitidos. Esto significa también que llamando por ejemplo a la entidad de carácter está prohibido.
1.2. En XML 1.1
- Referencia: consulte la recomendación XML 1.1, §2.2 Caracteres y 1.3 Justificación y lista de cambios para XML 1.1
La lista global de caracteres permitidos es:
[2] Char ::= [#x1-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
[2a] RestrictedChar ::= [#x1-#x8] | [#xB-#xC] | [#xE-#x1F] | [#x7F-#x84] | [#x86-#x9F]
Esta revisión de la recomendación XML ha ampliado los caracteres permitidos, por lo que se permiten los caracteres de control y tiene en cuenta una nueva revisión del estándar Unicode, pero estos siguen sin estar permitidos: NULO (x00), xFFFE, xFFFF…
Sin embargo, se desaconseja el uso de caracteres de control y caracteres Unicode no definidos.
También se puede notar que todos los analizadores no siempre tienen esto en cuenta y los documentos XML con caracteres de control pueden ser rechazados.
2. Caracteres que deben escaparse (para obtener un documento bien formado):
los <
debe ser escapado con un <
entidad, ya que se supone que es el comienzo de una etiqueta.
los &
debe ser escapado con un &
entidad, ya que se supone que es el comienzo de una entidad de referencia
los >
se debe escapar con >
entidad. No es obligatorio, depende del contexto, pero se recomienda encarecidamente evitarlo.
los '
se debe escapar con un '
entidad -- obligatorio en attributes se define entre comillas simples, pero se recomienda encarecidamente evitarlo siempre.
los "
se debe escapar con un "
entidad -- obligatorio en attributes definido entre comillas dobles, pero se recomienda encarecidamente evitarlo siempre.
La lista de caracteres válidos está en la especificación XML:
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF] /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
Los únicos caracteres ilegales son &
, <
y >
(tanto como "
o '
en attributessegún el carácter que se utilice para delimitar el attribute valor: attr="must use " here, ' is allowed"
y attr='must use ' here, " is allowed'
).
Se escapan usando entidades XML, en este caso quieres &
por &
.
Realmente, sin embargo, debería usar una herramienta o biblioteca que escriba XML por usted y abstraiga este tipo de cosas para que no tenga que preocuparse por eso.
Aquí tienes las comentarios y valoraciones
Acuérdate de que tienes el privilegio agregar una reseña si te ayudó.