Relación y diferencias entre SGML, XML, HTML y XHTML

16
  1. Me preguntaba qué significa "perfil" en Wikipedia :

    XML es un perfil de un SGML estándar ISO, y la mayoría de XML proviene de SGML sin cambios.

  2. De acuerdo a http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    HTML es un subconjunto de SGML.

    XML es un subconjunto altamente funcional de SGML.

    XHTML extiende y subconjuntos HTML.

    ¿"Uno siendo un subconjunto de otro" significa que el código en el primero también es sintácticamente correcto y semánticamente el mismo que en el segundo?

    Como en el sentido de la teoría de conjuntos elemental,

    • ¿HTML, XML y XHTML son subconjuntos diferentes de SGML?
    • ¿XML y HTML casi no se cruzan entre sí?
    • ¿XHTML es un superconjunto de XML y HTML?
  3. ¿Puedo esperar un resumen más conciso y claro de las diferencias en los propósitos de los cuatro y / o cuándo usar cuál, que el enlace anterior? Estoy realmente confundido acerca de la línea clara entre sus propósitos previstos.
  4. De acuerdo con http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    XML no es un único lenguaje de marcado. Es un metalenguaje que permite a los usuarios diseñar su propio lenguaje de marcado.

    Me preguntaba cómo entender que XML y HTML son subconjuntos de SGML, pero ¿HTML es un lenguaje de marcado mientras que XML no es un lenguaje de marcado sino un metalenguaje para diseñar lenguajes de marcado?

    ¿SGML y XHTML son también metalenguaje para diseñar lenguaje de marcado?

  5. Como en ambos enlaces, mencione que HTML es una aplicación de SGML, así como un subconjunto de SGML, y XHTML es una aplicación de XML. Me pregunto qué diferencias hay entre decir que un idioma es una aplicación de otro y que un idioma es un subconjunto de otro.
StackExchange para todos
fuente

Respuestas:

8

HTML y XML son lenguajes de marcado (de ahí el * ML). XML es un lenguaje de marcado genérico adecuado para representar datos arbitrarios, mientras que HTML es un lenguaje de marcado específico adecuado solo para representar páginas web.

HTML y XHTML son subconjuntos solo de SGML, excepto que XHTML tiene especificaciones adicionales para que también se valide como XML. Piense en XML como el influyente padrino de XHTML.

Debido a esta relación con SGML en los 3 idiomas, hay muchas similitudes, pero todos se consideran idiomas diferentes. Sin embargo, gran parte de lo que define estos idiomas son sus restricciones en SGML.

  • HTML restringe SGML definiendo una lista de etiquetas que se pueden usar.
  • XML restringe SGML al no permitir etiquetas de inicio y fin vacías o cerradas, y obliga a los atributos a ser explícitos. XML también tiene una gran cantidad de restricciones adicionales que no se encuentran en SGML.
  • XHTML restringe SGML con las etiquetas de HTML (con algunas exclusiones, como frameset, et al), y con las restricciones de etiqueta y entidad de XML.

Puede encontrar útil este documento, aunque los términos técnicos pueden ser difíciles de digerir. http://www.w3.org/TR/NOTE-sgml-xml-971215

XML no es un metalenguaje para definir lenguajes de marcado. Realmente eso es solo SGML. XML es simplemente un lenguaje de marcado de formato de datos. Su fuente citada está usando términos técnicos de manera imprecisa, por lo que son confusos.

Propósitos

XML es para definir su propio formato de datos. Si desea pasar datos entre dos sistemas, XML es a menudo la forma de hacerlo.

Si, por ejemplo, necesita pasar un pedido de ventas desde su sitio web a su sistema de facturación, puede crear esta carga XML:

<order id="12345">
    <name>John Doe</name>
    <item id="443">Adult Diapers</item>
</order>

Su sitio web luego enviaría ese XML a su sistema de facturación, que luego podría analizar los datos de ese XML.

XHTML y HTML son obviamente solo para páginas web. El objetivo principal de XHTML es eliminar mucha de la ambigüedad que teníamos en años anteriores (décadas) de desarrollo web. A finales de los 90, cuando comencé, estábamos usando HTML 3.2 que permitía un código muy descuidado. HTML 4+ y XHTML intentan remediarlo sugiriendo o aplicando fuertemente etiquetas de cierre explícitas, atributos explícitos y etiquetas no permitidas, lo que lo hace más fácil tanto en navegadores como en humanos, y evita diferencias inesperadas en el comportamiento del navegador cruzado.

Jordán
fuente
¡Gracias! (1) ¿Son los subconjuntos HTML y XML de XHTML? (2) ¿Es correcto que ni HTML es un subconjunto de XML, ni XML es un subconjunto de HTML? ¿HTML y XML tienen una intersección no vacía o están totalmente separados el uno del otro?
StackExchange for All
(3) ¿Qué diferencias hay entre decir que un idioma es una aplicación de otro y un idioma es un subconjunto de otro?
StackExchange for All
Hay documentos que se ajustan tanto a XML como a HTML; hay documentos que se ajustan a XML y no a HTML, y hay documentos que se ajustan a HTML y no a XML. Entonces ninguno de los dos es un subconjunto del otro, pero tienen una intersección no vacía.
Michael Kay
@Tim: (1) HTML, XML y XHTML no son subconjuntos de nada excepto SGML. Todos son diferentes XML en realidad no tiene casi nada que ver con HTML o XHTML ... tiene un propósito diferente. XHTML se puede analizar como HTML y XML, pero solo lo usan los navegadores como marcado HTML. HTML y XML tienen un ancestro común de SGML, pero por lo demás no están relacionados. Para cada intento, están separados porque SGML es muy genérico.
Jordania
Honestamente, creo que te estás sumergiendo demasiado en la terminología con aplicación vs subconjunto. No creo que haya una distinción entre esos términos, o si los hay, dudo que sea ampliamente aceptado. Baste decir que XHTML toma prestados conceptos de XML y se usa como un subconjunto estricto de HTML. HTML vino primero. XHTML vino después.
Jordania
6

Voy a comenzar diciendo que XML es un subconjunto de SGML, luego XHTML es un subconjunto de XML.

HTML se basa en SGML pero con algunas reglas diferentes. XHTML es básicamente una versión actualizada de HTML, pero con algunas reglas lo coloca en su lugar, por lo que también es XML correcto.

Algunas notas sobre cómo funciona el estándar HTML 5 con otras especificaciones. http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifications

No estoy seguro de las diferencias entre SGML y XML o cuándo usaría uno sobre el otro. Aunque XML parece ser uno de uso común.

Para XHTML y HTML, probablemente sea mejor que siempre use XHTML. Los errores son más fáciles de encontrar y, como beneficio adicional, también serán XML válidos.

WalterJ89
fuente
¡Gracias! (1) Me preguntaba cómo entender los dos hechos aparentemente conflictivos: ¿XML y HTML son subconjuntos de SGML y HTML es un lenguaje de marcado, mientras que XML no es un lenguaje de marcado sino un metalenguaje para diseñar lenguajes de marcado? (2) Según su respuesta, XHTML es un subconjunto de XML. XHTML es un superconjunto de HTML como "subconjuntos XHTML HTML" citado desde un enlace en mi publicación. Entonces, ¿HTML es un subconjunto de XML? No estoy seguro de que sea verdad.
StackExchange for All
HTML rompe demasiadas reglas para ser XML. HTML está más cerca de SGML, creo. HTML está suelto con etiquetas y hay un número establecido de diferentes tipos de etiquetas. XHTML solo la versión XML de HTML.
WalterJ89
¡Gracias! Como en ambos enlaces, mencione que HTML es una aplicación de SGML, así como un subconjunto de SGML, y XHTML es una aplicación de XML. Me pregunto qué diferencias hay entre decir que un idioma es una aplicación de otro y que un idioma es un subconjunto de otro.
StackExchange para todos
2

La historia de estos podría iluminarte aquí. ¡Simplemente hablar de metalenguajes, perfiles, subconjuntos e instancias es un poco seco! Trataré de hacerlo breve y simple.

SGML evolucionó de GML (Lenguaje de marcado generalizado) que fue diseñado por 3 ingenieros de IBM en la década de 1960 como un medio para almacenar documentos legales, gubernamentales, industriales y militares elaborados. GML se refinó gradualmente hasta que se estandarizó como SGML en 1986.

GML / SGML no es un idioma per se . Es más bien un metalenguaje , es decir, un lenguaje para definir lenguajes conformes o las "reglas" mediante las cuales el formato de una variedad de documentos elaborados podría diseñarse de una manera generalmente consistente. Por lo tanto, cada tipo diferente de documento definiría su propio conjunto SGML de nombres de etiquetas más atributos asociados, así como cualquier identificador público formal definido / espacios de nombres, esquemas, etc. Cada formato definido de esa manera se convirtió en un lenguaje de almacenamiento de datos distinto para el documento tipo en cuestión. Debido a la coherencia entre todos los documentos que cumplen con las reglas SGML, es posible escribir código para clasificar / procesar datos dentro de estos documentos y transferir datos entre documentos que comparten un formato común.

Se descubrió que SGML era demasiado elaborado para el documento numeroso pero de menor tamaño. Por lo tanto, XML se desarrolló entre 1996 y 2006 como un subconjunto (el perfil de la palabra significa efectivamente lo mismo que el subconjunto) de SGML que podría manejar documentos pequeños y grandes. Al ser un subconjunto de un metalenguaje, XML es en sí mismo un metalenguaje, aunque más simple. Se podría decir que XML proporciona una base para diseñar formatos de documentos adecuados tanto para el almacenamiento fácil como para la transferencia entre sistemas en una red.

Después de la estandarización de SGML, pero antes de que se simplificara a XML, surgió Internet y con ello la necesidad de un formato de documento que permitiera una fácil transferencia y visualización de documentos y datos sueltos. El resultado fue el lenguaje HTML, un instancia (ocasionalmente denominada aplicación ) de SGML con 18 etiquetas predefinidas que proporcionan una forma estandarizada de mostrar una variedad de tipos de datos, por ejemplo, texto, imágenes, audio, etc. algunos elementos para omitir etiquetas de inicio o fin. Las versiones posteriores de HTML le agregaron nuevas etiquetas y atributos y dejaron obsoletas algunas existentes. Hasta HTML 5, se realizaron cambios en HTML para que siempre se mantuviera como un lenguaje secundario de SGML.

Después de que se estandarizó XML, salió una instancia llamada XHTML que combinaba los nombres de etiquetas HTML existentes con el rigor de XML en el cierre de etiquetas, espacios de nombres, esquemas, etc. XHTML inicialmente prometía ser útil para el almacenamiento, la transferencia y la visualización de datos. Parecía estar a punto de reemplazar HTML como la forma más común de mostrar material web, hasta que salió HTML 5. HTML 5 tenía algunas características sintácticas que iban más allá de las definidas en SGML para proporcionar una visualización de datos más rica, especialmente para sitios web cargados de multimedia. A medida que pasó el tiempo, se agregaron características adicionales a HTML 5 que enriquecieron aún más su uso para la visualización / uso de datos hasta el punto de que es poco probable que sea reemplazado por nuevas versiones XHTML, al menos en lo que respecta a la visualización de datos en cuestión. Aunque los estándares para HTML y XHTML son realizados por grupos de trabajo del W3C, La propagación real de estos idiomas "en el terreno" la realizan diseñadores web progresivos y no hay ninguno más progresivo que aquellos que trabajan en el sector de los medios (publicidad / relaciones públicas / marketing): solo mire la creatividad de los sitios de agencias de publicidad en comparación con otros sitios. Este sector realmente tomó el nuevo lenguaje HTML 5, encantado de explotar su capacidad para SVG, audio, video yLas nuevas API . Su rápida adopción de HTML 5 llevó rápidamente a su popularidad entre los diseñadores web en general, un proceso acelerado por el intercambio en línea de habilidades y trucos en YouTube y en otros sitios. Ha surgido una versión actualizada de XHTML, XHTML5, pero en realidad no es un derivado XML estricto, sino más bien una versión de HTML5 serializada en XML. Solo una pequeña proporción de sitios parece tener algún uso para ello.

Esa es la historia detrás de estos lenguajes de datos. Espero que te ayude a distinguir el significado y el propósito de todos ellos. Filosóficamente, esta historia muestra cómo una herramienta habilitadora esencial (SGML) para una nueva tecnología (internet) puede, en el nuevo entorno con demandas cada vez más variadas, superar sus límites originales y volverse conceptualmente más simple, aplicable más versátil e impactantemente más potente.

Maletero
fuente
1

Generalmente en el mundo de los estándares, un "perfil" de un estándar es una selección de opciones que ofrece el estándar: por ejemplo, si el estándar permite que los documentos se codifiquen en UTF-8 o UTF-16, un perfil del estándar podría requerir ellos se codificarán en UTF-8. El término "subconjunto" tiene un significado muy similar; aunque podría decirse que el término "perfil" es un poco más amplio.

Michael Kay
fuente
¡Gracias! (1) ¿Qué tal el significado y la diferencia entre "aplicación", "subconjunto" y "perfil", como en la Parte 5 de mis preguntas? (2) En "XHTML es la base de una familia de futuros tipos de documentos que extienden y subconjustan HTML", ¿significa que XHTML es un subconjunto de HTML o HTML es un subconjunto de XHTML?
StackExchange for All