Relation et différences entre SGML, XML, HTML et XHTML

16
  1. Je me demandais ce que "profil" signifie dans Wikipedia :

    XML est le profil d'un SGML standard ISO, et la plupart du XML provient de SGML inchangé.

  2. Selon http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    HTML est un sous-ensemble de SGML.

    XML est un sous-ensemble hautement fonctionnel de SGML.

    XHTML étend et sous-définit le HTML.

    "L'un étant un sous-ensemble d'un autre" signifie-t-il que le code dans le premier est également syntaxiquement correct et sémantiquement le même que dans le second?

    Comme dans le sens de la théorie des ensembles élémentaires,

    • HTML, XML et XHTML sont-ils tous des sous-ensembles différents de SGML?
    • XML et HTML ne se croisent-ils presque pas?
    • XHTML est-il un surensemble de XML et de HTML?
  3. Puis-je m'attendre à un résumé plus concis et plus clair des différences dans les objectifs des quatre et / ou quand les utiliser, que le lien ci-dessus? Je suis vraiment confus quant à la ligne claire entre leurs objectifs.
  4. Selon http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    XML n'est pas un langage de balisage unique. Il s'agit d'un métalangage permettant aux utilisateurs de concevoir leur propre langage de balisage.

    Je me demandais comment comprendre XML et HTML sont tous deux des sous-ensembles de SGML, mais HTML est un langage de balisage alors que XML n'est pas un langage de balisage mais un métalangage pour concevoir des langages de balisage?

    SGML et XHTML sont-ils tous deux également métalangage pour la conception d'un langage de balisage?

  5. Comme dans les deux liens, mentionnez que HTML est une application de SGML ainsi qu'un sous-ensemble de SGML, et XHTML est une application de XML. Je me demande quelles sont les différences entre dire qu'une langue est une application d'une autre et qu'une langue est un sous-ensemble d'une autre?
StackExchange pour tous
la source

Réponses:

8

HTML et XML sont tous deux des langages de balisage (d'où le * ML). XML est un langage de balisage générique adapté pour représenter des données arbitraires, tandis que HTML est un langage de balisage spécifique adapté uniquement pour représenter des pages Web.

HTML et XHTML ne sont que des sous-ensembles de SGML, sauf que XHTML a des spécifications supplémentaires pour qu'il soit également validé en XML. Considérez XML comme le parrain influent de XHTML.

En raison de cette relation avec SGML dans les 3 langues, il existe de nombreuses similitudes, mais elles sont toutes considérées comme des langues différentes. Cependant, une grande partie de ce qui définit ces langages est leurs restrictions sur SGML.

  • HTML restreint SGML en définissant une liste de balises autorisées à être utilisées.
  • XML restreint SGML en n'autorisant pas les balises de début et de fin non fermées ou vides, et force les attributs à être explicites. XML a également un grand nombre de restrictions supplémentaires qui ne se trouvent pas dans SGML.
  • XHTML restreint SGML avec les balises de HTML (avec certaines exclusions, telles que frameset, et al), et avec les restrictions de balises et d'entités de XML.

Vous pouvez trouver ce document utile, bien que les termes techniques puissent être difficiles à digérer. http://www.w3.org/TR/NOTE-sgml-xml-971215

XML n'est pas un métalangage pour définir des langages de balisage. Vraiment, c'est juste SGML. XML est simplement un langage de balisage de formatage de données. Votre source citée utilise des termes techniques de manière imprécise, c'est pourquoi ils prêtent à confusion.

Objectifs

XML sert à définir votre propre format de données. Si vous souhaitez transmettre des données entre deux systèmes, XML est souvent le moyen de le faire.

Si, par exemple, vous deviez passer une commande client de votre site Web à votre système de facturation, vous pourriez créer cette charge utile XML:

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

Votre site Web enverrait ensuite ce XML à votre système de facturation, qui pourrait ensuite analyser les données de ce XML.

XHTML et HTML sont évidemment réservés aux pages Web. L'objectif principal de XHTML est de lever une grande partie de l'ambiguïté que nous avions au cours des années (décennies) précédentes de développement Web. À la fin des années 90, lorsque j'ai commencé, nous utilisions HTML 3.2 qui permettait un code très bâclé. HTML 4+ et XHTML tentent de remédier à cela en suggérant fortement ou en appliquant des balises de fermeture explicites, des attributs explicites et des balises interdites, ce qui facilite la tâche des navigateurs et des humains, et évite les différences de comportement inattendues entre les navigateurs.

Jordan
la source
Merci! (1) Les sous-ensembles HTML et XML de XHTML sont-ils à la fois? (2) Est-il exact que ni HTML n'est un sous-ensemble de XML, ni XML n'est un sous-ensemble de HTML? Le HTML et le XML ont-ils une intersection non vide ou sont-ils totalement séparés l'un de l'autre?
StackExchange for All
(3) Quelles différences y a-t-il entre dire qu'une langue est une application d'une autre et qu'une langue est un sous-ensemble d'une autre?
StackExchange for All
Il existe des documents conformes à la fois au XML et au HTML; il existe des documents conformes à XML et non à HTML, et il existe des documents conformes à HTML et non à XML. Donc, ni l'un ni l'autre n'est un sous-ensemble de l'autre, mais ils ont une intersection non vide.
Michael Kay
@Tim: (1) HTML, XML et XHTML ne sont pas des sous-ensembles de quoi que ce soit, sauf SGML. Ils sont tous différents. XML n'a en fait presque rien à voir avec HTML ou XHTML ... il sert un but différent. XHTML peut être analysé à la fois en HTML et en XML, mais il n'est utilisé que par les navigateurs comme balisage HTML. HTML et XML ont tous deux un ancêtre commun de SGML, mais ne sont pas liés par ailleurs. Pour chaque intention, ils sont séparés car SGML est tellement générique.
Jordan
Honnêtement, je pense que vous plongez trop profondément dans la terminologie avec application vs sous-ensemble. Je ne pense pas qu'il y ait une distinction entre ces termes, ou si c'est le cas, je doute qu'il soit largement accepté. Il suffit de dire que XHTML emprunte des concepts à XML et est utilisé comme un sous-ensemble strict de HTML. HTML est venu en premier. XHTML est venu après.
Jordan
6

Je vais commencer par dire que XML est un sous-ensemble de SGML, puis XHTML est un sous-ensemble de XML.

HTML est basé sur SGML mais avec des règles différentes. XHTML est fondamentalement une version HTML mise à jour, mais avec quelques règles, placez-le donc c'est aussi du XML correct.

Quelques notes sur le fonctionnement de la norme HTML 5 avec d'autres spécifications. http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifications

Je ne suis pas sûr des différences entre SGML et XML ou quand vous utiliseriez l'un sur l'autre. Bien que XML semble être couramment utilisé.

Pour XHTML et HTML, il vaut probablement mieux utiliser toujours XHTML. Les erreurs sont plus faciles à trouver et en bonus, ce sera également du XML valide.

WalterJ89
la source
Merci! (1) Je me demandais comment comprendre les deux faits apparemment contradictoires: XML et HTML sont tous deux des sous-ensembles de SGML, et HTML est un langage de balisage tandis que XML n'est pas un langage de balisage mais un métalangage pour concevoir des langages de balisage? (2) Selon votre réponse, XHTML est un sous-ensemble de XML. XHTML est un sur-ensemble de HTML en tant que "sous-ensembles HTML XHTML" cité à partir d'un lien dans mon article. Le HTML est donc un sous-ensemble du XML? Je ne suis pas sûr que ce soit vrai.
StackExchange for All
HTML brise trop de règles pour être XML. Le HTML est plus proche de SGML je crois. Le HTML est lâche avec les balises et il existe un certain nombre de types de balises différents. XHTML juste la version XML de HTML.
WalterJ89
Merci! Comme dans les deux liens, mentionnez que HTML est une application de SGML ainsi qu'un sous-ensemble de SGML, et XHTML est une application de XML. Je me demande quelles sont les différences entre dire qu'une langue est une application d'une autre et qu'une langue est un sous-ensemble d'une autre?
StackExchange for All
2

L'histoire de ceux-ci pourrait vous éclairer ici. Parler simplement de méta-langues, de profils, de sous-ensembles et d'instances est un peu aride! Je vais essayer d'être bref et simple.

SGML a évolué à partir du GML (Generalized Markup Language) qui a été conçu par 3 ingénieurs IBM dans les années 1960 comme moyen de stocker des documents juridiques, gouvernementaux, industriels et militaires élaborés. Le GML a été progressivement affiné jusqu'à ce qu'il soit normalisé en SGML en 1986.

GML / SGML n'est pas une langue en soi . C'est plutôt un méta-langage , c'est -à- dire un langage pour définir des langages conformes ou les "règles" par lesquelles le formatage d'une variété de documents élaborés pourrait être conçu d'une manière généralement cohérente. Chaque type de document différent définirait donc son propre ensemble de noms de balises conformes à SGML ainsi que les attributs associés, ainsi que tout identificateur public formel défini / espace de noms, schémas, etc. Chaque format défini comme celui-ci devenait donc un langage de stockage de données distinct pour le document type concerné. En raison de la cohérence entre tous les documents conformes aux règles SGML, il est possible d'écrire du code pour assembler / traiter des données dans ces documents et transférer des données entre des documents partageant un format commun.

SGML a été trouvé trop élaboré pour le document nombreux mais de plus petite taille. Ainsi , XML a été développé entre 1996 et 2006 comme un sous - ensemble (le mot profil efficace signifie la même chose que sous - ensemble) de SGML qui pourrait gérer à la fois les documents petits et grands. Étant un sous-ensemble d'un méta-langage, XML est lui-même un méta-langage, bien que plus simple. On pourrait dire que XML fournit une base pour la conception de formats de documents adaptés à la fois au stockage et au transfert faciles entre les systèmes d'un réseau.

Après la normalisation de SGML, mais avant sa simplification en XML, Internet est apparu et, avec lui, le besoin d'un format de document permettant un transfert et un affichage faciles des documents et des données en vrac. Le résultat a été le langage HTML, une instance (parfois appelée application ) de SGML avec 18 balises prédéfinies offrant un moyen normalisé d'afficher une variété de types de données, par exemple du texte, des images, du son, etc. HTML exploité SGML permettant certains éléments pour omettre les balises de début ou de fin. Les versions suivantes de HTML lui ont ajouté de nouvelles balises et de nouveaux attributs et ont rendu obsolètes certaines existantes. Jusqu'à HTML 5, des modifications ont été apportées à HTML afin qu'il reste toujours un langage enfant de SGML.

Après la normalisation de XML, une instance de celui-ci appelée XHTML est sortie qui combinait les noms de balises HTML existants avec la rigueur de XML sur la fermeture des balises, les espaces de noms, les schémas, etc. XHTML avait initialement la promesse d'être utile pour le stockage, le transfert et l'affichage des données. Il semblait être sur le point de remplacer HTML comme moyen le plus courant d'afficher du matériel Web - jusqu'à ce que HTML 5 soit sorti. HTML 5 avait certaines fonctionnalités syntaxiques qui allaient au-delà de celles définies dans SGML afin de fournir un affichage de données plus riche, en particulier pour les sites Web chargés de multimédia. Au fil du temps, des fonctionnalités supplémentaires ont été ajoutées à HTML 5 qui ont encore enrichi son utilisation pour l'affichage / l'utilisation des données au point qu'il est peu probable qu'il soit remplacé par de nouvelles versions XHTML, au moins en ce qui concerne l'affichage des données concernées. Bien que les normes pour HTML et XHTML soient élaborées par des groupes de travail du W3C, la véritable propagation de ces langues "sur le terrain" est faite par des concepteurs de sites Web progressistes et il n'y en a pas plus progressifs que ceux qui travaillent dans le secteur des médias (publicité / relations publiques / marketing): il suffit de regarder la créativité des sites des agences de publicité par rapport aux autres sites. Ce secteur a vraiment pris le nouveau langage HTML 5, ravi d'exploiter ses capacités en SVG, audio, vidéo etles nouvelles API . Leur adoption immédiate de HTML 5 a rapidement conduit à sa popularité auprès des concepteurs de sites Web en général, un processus accéléré par l'échange en ligne de compétences et d'astuces sur YouTube et divers autres sites. Une version XHTML mise à jour, XHTML5, a vu le jour, mais ce n'est pas vraiment un dérivé XML strict mais plutôt une version de HTML5 sérialisée en XML. Seule une petite proportion des sites semblent en avoir une quelconque utilité.

C'est l'histoire derrière ces langages de données. J'espère que cela vous aidera à distinguer le sens et le but de tous. D'un point de vue philosophique, cette histoire montre comment un outil habilitant essentiel (SGML) pour une nouvelle technologie (Internet) peut, dans le nouvel environnement aux exigences de plus en plus variées, dépasser ses limites d'origine tout en devenant conceptuellement plus simple, plus polyvalent et plus puissant.

Tronc
la source
1

Généralement, dans le monde des normes, un «profil» d'une norme est une sélection d'options que la norme offre: par exemple, si la norme autorise le codage de documents en UTF-8 ou UTF-16, un profil de la norme peut nécessiter les encoder en UTF-8. Le terme "sous-ensemble" a une signification très similaire; mais sans doute le terme "profil" est un peu plus large.

Michael Kay
la source
Merci! (1) Qu'en est-il de la signification et de la différence entre "application", "sous-ensemble" et "profil", comme dans la partie 5 de mes questions? (2) Dans "XHTML est la base d'une famille de futurs types de documents qui étendent et sous-ensemble HTML", cela signifie-t-il que XHTML est un sous-ensemble de HTML ou HTML est un sous-ensemble de XHTML?
StackExchange for All