¿Qué caracteres necesito para escapar en documentos XML?
¿Qué caracteres deben tener caracteres de escape en los documentos XML o dónde puedo encontrar esa lista?
Si utiliza una clase o biblioteca adecuada, ellos escaparán por usted. Muchos problemas de XML se deben a la concatenación de cadenas.
caracteres de escape XML
Sólo hay cinco:
" "
' '
< <
> >
& &
Los caracteres de escape dependen de dónde se utiliza el carácter especial.
Los ejemplos se pueden validar en el Servicio de Validación de Marcado del W3C .
Texto
La forma segura es escapar de los cinco caracteres del texto. Sin embargo, los tres caracteres "
, '
y >
no necesitan contener caracteres de escape en el texto:
<?xml version="1.0"?>
<valid>"'></valid>
Atributos
La forma segura es escapar de los cinco caracteres en los atributos. Sin embargo, >
no es necesario escapar del carácter en los atributos:
<?xml version="1.0"?>
<valid attribute=">"/>
'
No es necesario escapar el carácter en los atributos si las comillas son "
:
<?xml version="1.0"?>
<valid attribute="'"/>
Del mismo modo, "
no es necesario escapar de los atributos si las comillas son '
:
<?xml version="1.0"?>
<valid attribute='"'/>
Comentarios
Los cinco caracteres especiales no deben tener caracteres de escape en los comentarios:
<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>
CDATA
Los cinco caracteres especiales no deben tener caracteres de escape en las secciones CDATA :
<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>
Instrucciones de procesamiento
Los cinco caracteres especiales no deben tener caracteres de escape en las instrucciones de procesamiento XML:
<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>
XML frente a HTML
HTML tiene su propio conjunto de códigos de escape que cubren muchos más caracteres.
Quizás esto ayude:
Lista de referencias de entidades de caracteres XML y HTML :
En los documentos SGML, HTML y XML, las construcciones lógicas conocidas como datos de caracteres y valores de atributos consisten en secuencias de caracteres, en las que cada carácter puede manifestarse directamente (representándose a sí mismo), o puede representarse mediante una serie de caracteres llamados referencia de carácter. de los cuales hay dos tipos: una referencia de carácter numérico y una referencia de entidad de carácter. Este artículo enumera las referencias de entidades de caracteres que son válidas en documentos HTML y XML.
Ese artículo enumera las siguientes cinco entidades XML predefinidas:
quot "
amp &
apos '
lt <
gt >
Nueva respuesta simplificada a una antigua pregunta frecuente...
Escape XML simplificado (priorizado, 100% completo)
Siempre (90% importante para recordar)
- Escapar
<
como<
a menos que<
esté iniciando un<tag/>
marcado u otro. - Escapar
&
como&
a menos que&
esté iniciando un archivo&entity;
.
- Escapar
Valores de atributos (9% importante para recordar)
attr="
'
'
Se aceptan comillas simples dentro de comillas dobles."
attr='
"
"
Se permiten comillas dobles dentro de comillas simples.'
- Escapar
"
como"
y'
como'
de otra manera.
Comentarios , CDATA e instrucciones de procesamiento (0,9 % importante para recordar)
<!--
Dentro de los comentarios-->
no es necesario escapar nada, pero no--
se permiten cadenas.<![CDATA[
Dentro de CDATA]]>
no es necesario escapar nada, pero no]]>
se permiten cadenas.<?PITarget
Dentro de los PI?>
no es necesario escapar nada, pero no?>
se permiten cadenas.
Esotérica (0,1% importante para recordar)
- Códigos de control de escape en XML 1.1 mediante Base64 o referencias de caracteres numéricos .
- Escapar
]]>
como]]>
a menos]]>
que finalice una sección CDATA .
(Esta regla se aplica a los datos de caracteres en general, incluso fuera de una sección CDATA).
Según las especificaciones del World Wide Web Consortium (w3C), hay 5 caracteres que no deben aparecer en su forma literal en un documento XML , excepto cuando se usan como delimitadores de marcado o dentro de un comentario, una instrucción de procesamiento o una sección CDATA. . En todos los demás casos, estos caracteres deberán sustituirse ya sea mediante la entidad correspondiente o la referencia numérica según la siguiente tabla:
Original CharacterXML entity replacementXML numeric replacement
< < <
> > >
" " "
& & &
' ' '
Tenga en cuenta que las entidades antes mencionadas también se pueden utilizar en HTML, con la excepción de ' , que se introdujo con XHTML 1.0 y no está declarado en HTML 4. Por este motivo, y para garantizar la retrocompatibilidad, la especificación XHTML recomienda el uso de ' en cambio.