¿Qué caracteres necesito para escapar en documentos XML?

Resuelto Julius A asked hace 15 años • 10 respuestas

¿Qué caracteres deben tener caracteres de escape en los documentos XML o dónde puedo encontrar esa lista?

Julius A avatar Jul 07 '09 19:07 Julius A
Aceptado

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:

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

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.

Welbog avatar Jul 07 '2009 12:07 Welbog

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    >
Andrew Hare avatar Jul 07 '2009 12:07 Andrew Hare

Nueva respuesta simplificada a una antigua pregunta frecuente...

Escape XML simplificado (priorizado, 100% completo)

  1. Siempre (90% importante para recordar)

    • Escapar <como &lt;a menos que <esté iniciando un <tag/>marcado u otro.
    • Escapar &como &amp;a menos que &esté iniciando un archivo &entity;.
  2. 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 &quot;y 'como &apos;de otra manera.
  3. 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.
    • <?PITargetDentro de los PI ?> no es necesario escapar nada, pero no ?>se permiten cadenas.
  4. 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 ]]&gt;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).
kjhughes avatar Oct 09 '2017 01:10 kjhughes

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
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

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.

Albz avatar Jul 03 '2013 12:07 Albz