Pregunta

Esta pregunta está motivada por la negativa y no militantes del desarrollador Michael Rys para incluir el análisis de las secciones CDATA en XML para el camino, porque "no hay ninguna diferencia semántica de los datos que se almacenan."

He almacenado pepitas de HTML en los nodos CDATA y otro contenido que requiere el uso de caracteres especiales o incómodas. Sin embargo no me siento calificado para cuestionar la afirmación polémica de Rys porque, supongo, que técnicamente es correcto en los escenarios en los que hemos empleado CDATA para mayor comodidad.

Lo que realmente hornear mi fideos es que, ya que los desarrolladores toman a internet pidiendo consejos sobre cómo hacer que los segmentos CDATA utilizando para la trayectoria de XML, los encuestados dirigen continuamente a usar FOR XML EXPLICIT lugar, el método de representación XML Rys citadas como siendo el "consulta del infierno".

Si podemos hacer realmente sin CDATA en todos los casos de uso que cualquier persona puede sugerir que supongo que deberíamos dejar de quejarse y rechazar el uso CDATA adelante. Pero si hay casos claramente definidos en los CDATA es Rys esenciales ya se llevaron a cabo que iba a cocer en XML para la ruta que va hacia delante en el enlace superior en esta pregunta.

Entonces, ¿qué es lo que es? Son secciones CDATA realmente reliquias del pasado? O debería Rys tirar de su dedo y permitir el análisis en CDATA XML para la trayectoria? Y ya que estamos en ello, mientras tanto, ¿hay hacks para obtener XML para el camino para volver secciones CDATA?

¿Fue útil?

Solución

CDATA secciones son útiles si no se preocupan por la semántica de los datos en ellos (es decir, que no necesita analizarlo - es simplemente una racha de caracteres), y que no desean escapar de cualquiera de el XML dentro de ellos.

La definición, de acuerdo con w3 :

  

Las secciones CDATA pueden ocurrir pueden producir datos de caracteres en cualquier lugar; que se utilizan para escapar de bloques de caracteres de texto que contiene que de otro modo serían reconocidas como marcas.

Wikipedia :

  

Nuevos autores de documentos XML a menudo entienden mal el propósito de una sección CDATA, creyendo erróneamente que su propósito es "proteger" los datos sean tratados como datos de caracteres ordinarios durante el procesamiento. Algunas API para trabajar con documentos XML hacen ofrecen opciones para el acceso independiente a las secciones CDATA, pero existen tales opciones más allá de los requisitos normales de los sistemas de procesamiento de XML, y todavía no cambian el significado implícito de los datos. datos de carácter son datos de caracteres, independientemente de si éste se expresa a través de una sección CDATA o por marcadores ordinaria.

     secciones

CDATA son útiles para escribir código XML como datos de texto dentro de un documento XML. Por ejemplo, si uno desea para componer un libro con XSL explicando el uso de una aplicación XML, el formato XML que aparezca en el libro mismo se escribirá en el archivo de origen en una sección CDATA. Sin embargo, una sección CDATA no puede contener la cadena "]]>" y por lo tanto no es posible que una sección CDATA para contener las secciones CDATA anidados. El enfoque preferido para el uso de secciones CDATA para la codificación de texto que contiene la tríada "]]>" es el uso de múltiples secciones CDATA por división de cada ocurrencia de la tríada justo antes de la ">". Por ejemplo, para codificar "]]>" uno escribiría:

Otros consejos

Las secciones CDATA son innecesarias. No son una "reliquia del pasado", ya que siempre han sido innecesaria.

Esto no quiere decir que no son útiles. Vistazo a casi cualquier lenguaje de programación o de la biblioteca y se puede encontrar un gran número de cosas que podría hacer sin, ya que son semánticamente equivalentes a algo más, pero que son útiles si hay un ser humano sentado allí tener que escribir las cosas.

Por lo demás, incluso con la producción programática también es útil que se podría tomar el camino contrario y utilizar las secciones CDATA para cada pieza de c-datos (bloaty, pero podría haber ganancias de eficiencia en otros lugares).

para la ruta de XML no se trata de un ser humano sentado allí tener que escribir las cosas. Es un medio de producir XML válido desde unos de los resultados de una consulta SQL. (Tampoco es una cuestión de análisis de las secciones CDATA, pero para producirlos - un asunto diferente).

Y realmente no se puede quejarse de FOR XML EXPLICIT siendo la alternativa cuando se desea tener un control muy fino - La razón de XML explícito es tan desagradable para usar en ocasiones es precisamente porque le da un control muy fino. De hecho, considere si primero ha añadido soporte para las secciones CDATA y apoyo luego añadido para todas las demás opciones de configuración pellizco y que parecía tan vital a alguien más por ahí. ¿Cuánto tiempo se tarda antes de FOR XML EXPLICIT fue la elección automática debido a que es más sencillo que PATH? FOR XML

Hay cuatro casos en los que son útiles CDATA:

  1. Usted está sentado en un teclado de escribir estas cosas en sí mismo.
  2. Que se trata de una mezcla de diferentes tecnologías con diferentes estándares diseñados en diferentes momentos y que serán interpretadas por diferentes programas de análisis de diferentes maneras (por ejemplo, JavaScript, incluidos en XHTML - aunque no es 100% necesario en este caso es una pesadilla para hacer lo contrario) .
  3. Usted está tratando de analizar el código XML con algo que no entiende XML.
  4. Usted está tratando de usar algo construido en un analizador que permite el acceso de bajo nivel que distingue entre las secciones CDATA y otros datos de caracteres y el uso que el acceso de bajo nivel inapropiadamente.

Curiosamente, estos cuatro casos son también los cuatro casos en los que la prohibición de aceptar las secciones CDATA puede tener sentido.

Caso 1 no se aplica aquí, no es un código generado por el hombre. Caso 2 podría aplicarse aquí si está haciendo algo realmente loco. Francamente, la falta de secciones CDATA es el menor de sus preocupaciones aquí; cambiar a la producción de XML más simple en la consulta y transformarlo en otro lugar. Caso 3 podría aplicarse aquí, pero no es justo para quejarse a la gente SQL si lo hace, cuando conviene que se dirija al analizador XML roto que hace &lt;example&gt; no tratan el mismo que <![CDATA[<example>]]>. Caso 4 podría aplicarse aquí, pero de nuevo se quejan a la persona que escribió el código erróneo, no la gente SQL.

Tiene toda la razón, CDATA son esenciales en muchos escenarios, que son parte del estándar XML y debe ser apoyado por todas las herramientas / método de manipulación de XML. Pero es que por lo general MS dosn't cuidado .. ya sabes, "640Kb debe ser suficiente para todos" tipo de enfoque.
Editar: Acerca de FOR XML EXPLICIT - este es el mejor método para generar datos XML formateados con precisión. Sí, la sintaxis es un poco doloroso a la vista y confuso, pero una vez que lo utilice feww veces, podrá admirar su belleza y poder.

Es interesante ver cómo alguien puede lanzar una pieza muy valiosa de la Norma con tal enfoque caprichoso. No todo el mundo está usando XML para unos pocos cientos de caracteres de HTML o una lista de elementos para una caída hacia abajo.

Algunos de nosotros estamos en realidad el uso de XML para el intercambio de datos, datos muy complejos, como un CCD, CDA CDR, estos son todos los formatos de documentos estándar en el campo de la salud y se están convirtiendo cada vez más prominente con ObamaCare. Parte de estos documentos contienen datos adjuntos estructura cosas como imágenes DICOM, PDF y otros datos binarios que no debe ser leído por el analizador de la razón de ser de la definición CDATA.

¿Por qué debo pagar los gastos generales del analizador de leer una imagen en 3 megabytes DICOM incrustado en un documento CCD? ¿Por qué debería ser obligado a separarse del documento cuando se trataba de los datos originales y es parte del estándar XML. Y quiero que el ser capaz de localizar y recuperar el documento y es contenido con XML.

Esto me desconcierta por qué todo apoyaría el análisis de los datos que se pretende no ser analizada por el motor. Si el motor se ve CDATA lo ignoran, es muy simple. Y la continua argumento de que algunos no lo necesita es irrelevante. Es parte de la norma y la norma debe ser mantenida. Si les gustaría añadir una "característica" como se le ha llamado luego apoyar el comportamiento por defecto con una opción.

Por favor, dejar de analizar CDATA e ignorarlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top