Pregunta

Ahora desarrollo sitios web e interfaces XML desde 7 años, y nunca, nunca llegé en una situación, donde era realmente necesario usar el &gt; para >. Toda la desambiguición podría manejarse hasta ahora citando <, &, " y ' solo.

¿Alguien ha estado en una situación (relacionado con, por ejemplo, procesamiento SGML, problemas de navegador, XSLT, ...) donde se le resultó inexportable escapar del signo más grande con &gt;?

Actualizar: Acabo de comprobar con el Especificación XML, donde dice, por ejemplo, sobre los datos de los caracteres en la Sección 2.4:

Datos de carácter

[14]      CharData       ::=      [^<&]* - ([^<&]* ']]>' [^<&]*)

Entonces incluso allí, el > no se menciona como algo especial, excepto de la secuencia final de una sección CDATA.

Este único caso, donde el > es de cualquier importancia, sería el final de una sección de CDATA, ]]>, pero de nuevo, si lo citas, la cita (es decir, la cuerda literal ]]&gt;) aterrizaría literalmente en la salida (ya que es Cdata).

¿Fue útil?

Solución

No necesita absolutamente porque casi cualquier intérprete XML comprenderá lo que quiere decir. Pero aún usas un personaje especial sin ninguna protección si lo haces.

XML tiene que ver con la semántica, y esto no es realmente semántico.

Sobre tu actualizar, olvidaste esta parte:

El soporte del ángulo recto (>) puede representarse utilizando la cadena ">", y debe, para la compatibilidad, escaparse utilizando cualquiera de los dos " &gt; "o una referencia de personaje cuando aparece en la cadena" ]]> "En contenido, cuando esa cadena no marca el final de una sección CDATA.

El caso de uso dado en la documentación se trata más de algo como esto:

<xmlmarkup>
]]>
</xmlmarkup>

Aquí el ]]> parte podría ser un problema con los viejos analizadores SGML, por lo que deber ser escapado en = ]]&gt; por razones de compatibilidad.

Otros consejos

solía uno no 19 horas hace para pasar un estricto validador XML. Otro caso es cuando los usa realmente en el texto de contenido HTML/XML (en lugar de atributos), como este: <.

Claro, un analizador laxo aceptará casi cualquier cosa que le arroje, pero si alguna vez le preocupa XSS, <es su amigo.

Actualización: aquí hay un ejemplo en el que necesitas escapar > En Firefox:

<?xml version="1.0" encoding="utf-8" ?>
<test>
    ]]>
</test>

De acuerdo, todavía no es un ejemplo de tener que escapar de un solitario >.

No tanto como autor de los documentos (x) HTML, sino más bien como usuario de campos de comentarios escritos descuidados en sitios web, que "te ofrecen" a insertar HTML.

Quiero decir, si haces tu sitio de la manera correcta, no codificarías tu contenido de todos modos, ¿verdad? Entonces tu llamado a htmlentities O lo que sea (mucho tiempo sin ver, PHP) se encargaría de reemplazar los caracteres especiales por usted. Tan seguro, no escribirías manualmente &gt; Pero espero que tomes medidas así > se reemplaza automáticamente.

Solo pensé en otro ejemplo, donde necesitas citar > en html5 (no xhtml5) Documentos: si lo necesita en atributos sin citas (que es algo, que se puede argumentar, por supuesto).

<img src=arrow.png alt=&gt;>

debe ser equivalente a xhtml

<img src="arrow.png" alt=">" />

Pero entonces de nuevo, (?

Imagina que tienes el siguiente texto this is a not a ]]> nice day y decides rodearlo en secciones de Cdata <![CDATA[this is a not a ]]> nice day]]>.

Para evitar eso (y para permitir el análisis de fragmentos SGML con secciones marcadas no terminadas), la cláusula 10.4 de ISO 8879: 1986 declara que La ocurrencia de ]]> Fuera de una sección marcada hay un error.

Además, en los tiempos de las secciones marcadas de SGML eran muy populares, ya que no solo se usaron para CDATA (como en XML), sino también para RCDATA (solo entidades y referencias de personajes permitidas) e ignorar e incluir (que permitió el reconocimiento de la marcado dentro de ellos).

Por ejemplo, en SGML se podría escribir:

 <!ENTITY %WHATTODO "INCLUDE">
 <![%WHATTODO;[<b>]]&gt;</b>]]>

Que es equivalente a:

 <b>]]&gt;</b>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top