quot escape characters apos amp xml quotes

escape - ¿Cuál es la forma aceptada de almacenar datos cotizados en XML?



xml &quot escape (7)

Por ejemplo, para un nodo, ¿cuál es el correcto?

La especificación XML en sí misma no habla de nodos (excepto cuando se compara la sintaxis DTD con la expresión regex autómata finita). Un nodo DOM puede ser un atributo, elemento, texto o cualquiera de los otros tipos de nodos.

Dentro de un nodo de texto, solo necesita escapar de los caracteres que el analizador interpretaría como el inicio de un nodo diferente, de modo que escapa & y < como & amp; y & lt; .

Para la portabilidad, a menudo es una buena idea escapar de las comillas, pero no hay razón para escapar de las comillas en texto XML.

Dentro de un nodo de atributo, debe escapar less-than y ampersand como antes, y también cualquier cita que haya utilizado para delimitar el atributo.

<foo attribute="''ok''" attribute2=''"also-ok"'' attribute3="&quot;needed&quot;"/>

Por lo general, es más fácil acostumbrarse a usar un solo tipo y siempre escapar de él. Escribo un poco de XSLT y me gusta usar "fuera y dentro":

<xsl:value-of select="person[@name = ''bob'']"/>

Si te vuelves paranoico con el escape, el XPath se vuelve menos legible:

<xsl:value-of select="person[@name = &apos;bob&apos;"/>

Si (c), ¿es realmente apropiado mezclar HTML y XML?

XML define las entidades nombradas amp , gt , lt , apos , & quot

HTML define muchas más entidades.

Puede y debe usar las entidades con nombre XML en XML en lugar de usar una entidad numérica.

La entidad lt escapa < y debe usarse en valores de texto y de atributo. La entidad de amplificador escapa & debe usarse en valores de texto y de atributo. Las entidades apos y quot escapan '' y '' y deben usarse en los valores de los atributos. La entidad gt es un poco inútil, casi nunca hay un requisito sintáctico para escaparse en XML. Tal vez solo acordó trabajar con <si se igualaba facturación.

El otro que uso mucho en XSLT que genera el código fuente es & # xa; que inserta una nueva línea. & nl; habría sido más uso que & gt;

Del mismo modo, ¿cómo manejas las comillas simples y rizadas?

XML está diseñado para marcar texto Unicode, y las comillas no tienen ningún significado especial. Sin embargo, no es raro que la codificación utilizada y el documento XML se malinterpreten en la naturaleza. Entonces, si está en un entorno cerrado y puede garantizar una codificación Unicode correcta en el productor y el consumidor, entonces simplemente lo pondría en el XML. De lo contrario, use una entidad de caracteres numéricos. Eso es cierto para cualquier personaje con un punto de código superior a 127; no hay nada especial acerca de las comillas.

¿Cuál es la forma aceptada de almacenar datos cotizados en XML?

Por ejemplo, para un nodo, ¿cuál es el correcto?

  • (a) <nombre> Jesse "The Body" Ventura </ name>
  • (b) <nombre> Jesse / "The Body /" Ventura </ name>
  • (c) <nombre> Jesse & quot; El cuerpo & quot; Ventura </ name>
  • (d) ninguna de las anteriores (especifique)

Si (a), ¿qué haces para los atributos? Si (c), ¿es realmente apropiado mezclar HTML y XML? Del mismo modo, ¿cómo manejas las comillas simples y rizadas?


Depende realmente Si todo lo que quiere hacer es tener comillas en su cadena XML, entonces ''A''.

Pero si hay un significado o si necesita abstraer la cita (i18n, por ejemplo), XML ofrece opciones más ricas. Por ejemplo:

<name> <given>Jesse</given> <family>Ventura</family> <nickName>the Body</nickName> </name>

Overkill en muchas situaciones. Pero si necesita manejar correctamente muchos de los esquemas de nomenclatura variados y frecuentemente inconsistentes del mundo, pensaría en codificar sus nombres en esta línea. XML es ideal para esto.


La respuesta correcta es c''.

Las comillas simples realmente no causan problemas, pero debe tener cuidado con los signos y símbolos y con los corchetes angulares izquierdos.


Las comillas dobles en los nodos de texto se pueden representar como el carácter de comillas dobles o como &quot; entidad. Las comillas dobles en valores de atributo se pueden representar como el carácter de comillas dobles si el valor está delimitado por comillas simples, y viceversa; de lo contrario, evítelos como &quot;

Esto solo es relevante si estás a) editando XML en un editor de texto que no reconoce XML o b) creando XML mediante programación a través de la manipulación de cadenas. En general, debe evitar (a) a menos que realmente sepa lo que está haciendo, o al menos tener una forma de verificar la buena formación de su XML una vez que se haya completado la edición.

Y debe evitar (b) en todas las circunstancias. Nunca crees XML a través de la manipulación de cadenas; siempre use un DOM o alguna otra herramienta.


Los datos de caracteres dentro de los elementos XML pueden contener caracteres de comillas sin escaparse de ellos. Los únicos caracteres que no están permitidos dentro de un elemento XML son ''<'', ''&'' y ''>'' (y el carácter ''>'' solo se deshabilita si es parte de una secuencia de caracteres "]]>".

Eso no quiere decir que escapar de las citas no sea una buena idea, solo digo que no escapando de las citas es XML perfectamente válido. Consulte la sección 2.4 - "Datos de caracteres y marcado" en la especificación XML.

Entonces ambos (a) y (c) están bien.

En lo que respecta a los atributos, los valores de los atributos se pueden incluir entre comillas simples o dobles, de modo que si contiene uno u otro, puede usar el opuesto para encerrar el valor. Si contiene ambos, entonces deberá usar una entidad de caracteres para uno o ambos.

En lo que respecta a las "comillas tipográficas", si habla de las citas especiales que no son ASCII a las que Word a veces convierte las comillas, no tienen ningún significado especial en XML, por lo que puede hacer cualquier cosa (pero no pueden se utilizará para encerrar los valores de los atributos ". También deberá asegurarse de que la codificación de los caracteres para el documento sea correcta, para que se interpreten correctamente.


No debe preocuparse por cómo están codificadas las cosas en su XML. Siempre debe usar una biblioteca adecuada para generar documentos XML. Hay demasiados problemas con XML para hacerlo bien por ti mismo. He visto un montón de documentos XML no válidos que se cruzan en mi camino porque alguien pensó que ellos mismos podían generar XML, sin usar una biblioteca. Todos los principales lenguajes de programación actualmente en uso tienen bibliotecas XML.


Su respuesta correcta es A & C ya que " no es un personaje que debe codificarse en datos de elemento.

Siempre debe tener caracteres de codificación XML como > , < y & para asegurarse de no tener problemas si NO están dentro de una sección CDATA. Estos son elementos clave que deben preocuparse por los datos de los elementos.

Cuando hable de atributos, debe tener cuidado con '' y " dentro de los valores de los atributos según el tipo de símbolo que utilice para rodear el valor.

Descubrí que, a menudo, codificar " y '' es una mejor idea en todos los aspectos, ya que a veces ayuda al convertir a otros formatos, donde el " o '' podría causar problemas allí.