2008-09-29 8 views
14

¿Cuál es la forma aceptada de almacenar datos cotizados en XML?¿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 </nombre >
  • (b) <nombre> Jesse \ "The Body \" Ventura </nombre >
  • (c) <nombre> Jesse & quot; El cuerpo & quot; Ventura </Nombre >
  • (d) ninguna de las anteriores (especificar)

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

+1

No estoy seguro por qué, pero me encanta la opción de ejemplo. –

Respuesta

0

La respuesta correcta es 'C'.

Las comillas simples en realidad no causan ningún problema, pero debe tener cuidado con los símbolos y los corchetes angulares izquierdos.

23

Su respuesta correcta es A & C como " no es un caracter que deba codificarse en los datos del elemento.

Siempre debe tener caracteres de codificación XML como >, < y & para asegurarse de que no haya 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 se habla de los atributos, también debe tener cuidado con ' y " dentro de los valores de los atributos dependiendo del tipo de símbolo que utilice para rodear el valor.

he encontrado que a menudo codificación " y ' es una idea mejor en todos los aspectos, ya que ayuda en momentos en que la conversión a otros formatos, donde el " o ' podría causar problemas allí también.

4

No debe preocuparse por la codificación de 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.

0

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.

13

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 comillas no sea una buena idea, solo digo que no escapando de las comillas es XML válido. Consulte la sección 2.4 - "Datos de caracteres y marcado" en la especificación XML

ambos (a) y (c) son correctos.

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 ose el valor. Si contiene ambos, entonces deberá usar una entidad de caracteres para uno o ambos.

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

5

Las comillas dobles en los nodos de texto se pueden representar como comillas dobles o como la entidad &quot;. Las comillas dobles en los valores de los atributos se pueden representar como comillas dobles si el valor está delimitado por comillas simples, y viceversa; de lo contrario, resáltelas como &quot;

Esto solo es relevante si a) edita XML en un editor de texto no compatible con XML o b) crea 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.

4

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 finita del autómata). Un nodo DOM puede ser un atributo, elemento, texto o cualquiera de los otros tipos de nodos.

Dentro de un nodo de texto, sólo se necesita para escapar de caracteres que el analizador interpretaría como iniciar un nodo diferente - por lo que escapar & 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 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 favorecen el uso de "fuera y 'en el interior:

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

Si obtiene paranoica con el escape, el XPath se vuelve menos legible:

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

Si (c) , ¿es realmente conveniente mezclar HTML & XML?

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

HTML define muchos 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 se debe utilizar en el texto y los valores de atributo. La amp entidad escapa y se debe utilizar en texto y valores de atributo. . Los apos y quot entidades escapan ' y " y deben ser utilizados en valores de atributos El gt entidad es un poco inútil - casi nunca hay un requisito sintáctico para escapar > en . Tal vez XML> sólo accedió a trabajar con < si hacía la facturación igual

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

De forma similar, ¿cómo se manejan 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.

Cuestiones relacionadas