2011-07-22 20 views
7

Esto realmente no es una pregunta de programación per se, pero me preguntaba por qué se requiere el nombre de la etiqueta en una etiqueta de cierre en XML. No por ejemplo, podría¿Son realmente necesarios los nombres de las etiquetas XML/HTML dentro de las etiquetas de cierre?

<a> 
    <b>stuff</b> 
</a> 

ser escrito

<a> 
    <b>stuff</> 
</> 

Para que cada etiqueta de cierre </> simplemente termina la última etiqueta abrieron?

Así que mis preguntas son

  1. Que este trabajo (es decir, ¿hay casos de esquina que no estoy pensando en que esto sería ambigua/no)?
  2. Si funcionara, ¿por qué 'ellos' no lo diseñaron de esa manera?
+2

Olor como SGML. SGML también permite cosas como '

+0

Estoy de acuerdo con "mu es demasiado corto". Para agregar, necesita seguir el concepto XML de "Bien formado", la Sección 2.1 de la recomendación de XML 1.0 (http://www.w3.org/TR/REC-xml/#sec-starttags) enumera esto. –

+0

Además de mi último comentario, SGML estaba destinado a ser escrito a mano, por lo que había muchos accesos directos, XML está diseñado para ser desarrollado con soporte de software (ya sea un editor XML o totalmente generado por software) por lo que un analizador más simple/rápido es más importante que los accesos directos. –

Respuesta

5

Si iba a funcionar, ¿por qué no 'ellos' diseño de esa manera?

Una razón es que SGML/XML también está diseñado para ser legible por humanos. Su ejemplo /a/b es legible, pero una estructura mucho más compleja sería una pesadilla para tratar de interpretar.

Esto sería especialmente cierto con contenido mixto (PCDATA y estructuras de elementos mezcladas).

2

Funcionaría, pero sería horrible depurar un problema de anidamiento. Por ejemplo:

<one><two><nine></><ten></><eight><three></><four> 
<five></><six></></> 
<seven></>To what element does this text belong?</></></> 

Si se asegura el XML tiene sangrado adecuado, la cuestión de anidación no es un problema (por debajo es el mismo código con sangrado adecuado Sin embargo, debido a la sangría es insignificante, necesitamos otro mecanismo para mantener. la legible XML. En este ejemplo, legible por humanos significa un ser humano puede ver fácilmente que el contenido pertenece a qué elemento. la solución es nombre que elemento de cada etiqueta de cierre se refiere a.

<one> 
<two> 
    <nine> 
    </nine> 
    <ten> 
    </ten> 
    <eight> 
     <three> 
     </> 
     <four> 
      <five> 
      </> 
      <six> 
      </> 
     </> 
     <seven> 
     </> 
     To what element does this text belong? 
    </> 
</> 
</> 

Cuando damos el cerrando los nombres de las etiquetas, incluso es claro ver incluso en XML mal indentado que el texto pertenece al elemento <eight>.

<one><two><nine></nine><ten></ten><eight><three></three><four> 
<five></five><six></six></four><seven> 
</seven>To what element does this text belong?</eight></two></one> 
Cuestiones relacionadas