que - ¿Qué caracteres necesito para escapar en documentos XML?
cdata xml soapui (9)
¿Qué caracteres deben escaparse en los documentos XML, o dónde puedo encontrar esa lista?
Abreviado desde: http://en.wikipedia.org/wiki/XML#Escaping
Hay cinco entidades predefinidas:
< represents "<"
> represents ">"
& represents "&"
' represents ''
" represents "
"Todos los caracteres Unicode permitidos se pueden representar con una referencia numérica de caracteres". Por ejemplo:
中
La mayoría de los caracteres de control y otros rangos de Unicode se excluyen específicamente, lo que significa (creo) que no pueden ocurrir escapados o directos:
Además de los cinco caracteres comúnmente conocidos [<,>, &, ", ''], también escaparía el carácter de tabulación vertical (0x0B). Es UTF-8 válido, pero no XML 1.0 válido, e incluso muchas bibliotecas (incluyendo libxml2) lo pierda y salga silenciosamente XML inválido.
De acuerdo con 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 de CDATA. . En todos los demás casos, estos caracteres deben reemplazarse utilizando la entidad correspondiente o la referencia numérica de acuerdo con la siguiente tabla:
Reemplazo de entidad XML Carácter original Reemplazo numérico XML
< & lt; & # 60;
> & gt; & # 62;
" & quot; & # 34;
& & amp; & # 38;
'' & apos; & # 39;
Tenga en cuenta que las entidades mencionadas anteriormente se pueden usar también en HTML, con la excepción de & apos; , que se introdujo con XHTML 1.0 y no se declara en HTML 4. Por este motivo, y para garantizar la compatibilidad retroactiva, la especificación XHTML recomienda el uso de & # 39; en lugar.
Depende del contexto. Para el contenido, es <y &, y]]> (aunque cadena de 3 en lugar de un solo carácter). Para los valores de atributo, es <y & y "y ''. Para CDATA, es]]>.
Los caracteres de escape son diferentes para las etiquetas y los atributos.
Para las etiquetas:
< <
> > (only for compatibility, read below)
& &
Para los atributos:
" "
'' '
http://www.w3.org/TR/2008/REC-xml-20081126/#syntax
El carácter "y" comercial (&) y el corchete de ángulo izquierdo (<) no deben aparecer en su forma literal, excepto cuando se usan como delimitadores de marcado, o dentro de un comentario, una instrucción de procesamiento o una sección CDATA. Si se necesitan en otro lugar, deben escaparse utilizando referencias numéricas de caracteres o las cadenas "& amp;" y "& lt;" respectivamente. El corchete de ángulo recto (>) puede representarse utilizando la cadena "& gt;", y debe, por compatibilidad, escaparse utilizando "& gt;" o una referencia de carácter cuando aparece en la cadena "]]>" en el contenido, cuando esa cadena no está marcando el final de una sección CDATA.
Para permitir que los valores de los atributos contengan comillas simples y dobles, el carácter de apóstrofe o comillas simples ('') puede representarse como "& apos;", y el carácter de comillas dobles (") como" & quot; ".
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 denominada 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 >
Si usa una clase o biblioteca apropiada, ellos harán el escape por usted. Muchos problemas de XML son causados por la concatenación de cadenas.
Personajes de escape XML
Sólo hay cinco:
" "
'' '
< <
> >
& &
Los personajes que escapan dependen de dónde se usa el carácter especial.
Los ejemplos se pueden validar en el Servicio de Validación de Marcado W3C .
Texto
La forma segura es escapar de los cinco caracteres en el texto, sin embargo, los tres caracteres "
, ''
y >
no necesitan ser escapados en el texto:
<?xml version="1.0"?>
<valid>"''></valid>
Atributos
La forma segura es escapar de los cinco caracteres en los atributos, sin embargo, el carácter no debe escaparse en los atributos:
<?xml version="1.0"?>
<valid attribute=">"/>
El ''
carácter no necesita ser escapado en atributos si las comillas son "
:
<?xml version="1.0"?>
<valid attribute="''"/>
Del mismo modo, el "
no debe escaparse en los atributos si las comillas son ''
:
<?xml version="1.0"?>
<valid attribute=''"''/>
Comentarios
Los 5 caracteres especiales no deben escaparse en los comentarios:
<?xml version="1.0"?>
<valid>
<!-- "''<>& -->
</valid>
CDATA
Los 5 caracteres especiales no deben escaparse en las secciones de CDATA :
<?xml version="1.0"?>
<valid>
<![CDATA["''<>&]]>
</valid>
Instrucciones de procesamiento
Los 5 caracteres especiales no deben escaparse en las instrucciones de procesamiento XML:
<?xml version="1.0"?>
<?process <"''&> ?>
<valid/>
XML vs HTML
HTML tiene su propio conjunto de códigos de escape que cubren muchos más caracteres.
Solo se requiere que se escapen <y & si los datos de caracteres se van a tratar y no al marcado:
Respuesta nueva y simplificada a una pregunta antigua y común ...
Escape XML simplificado
Siempre (90% importante para recordar)
Valores de atributo (9% importante para recordar)
-
attr="
''
attr="
simples''
están bien dentro de comillas dobles."
-
attr=''
"
comillas dobles"
están bien dentro de comillas simples.''
- Escape
"
como"
y''
como'
contrario.
-
Comments , CDATA e instrucciones de procesamiento (0.9% importante para recordar)
Esoterica (0,1% importante para recordar)
- Escape
]]>
as]]>
a menos que]]>
está terminando una sección CDATA.
(Esta regla se aplica a los datos de caracteres en general, incluso fuera de una sección CDATA).
- Escape