Relação e diferenças entre SGML, XML, HTML e XHTML

16
  1. Eu queria saber o que "perfil" significa na Wikipedia :

    XML é um perfil de um SGML padrão ISO, e a maior parte do XML vem do SGML inalterada.

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

    HTML é um subconjunto de SGML.

    XML é um subconjunto altamente funcional de SGML.

    XHTML estende e subconta o HTML.

    "Um sendo um subconjunto do outro" significa que o código no primeiro também é sintaticamente correto e semanticamente o mesmo que no segundo?

    Como no sentido da teoria elementar dos conjuntos,

    • HTML, XML e XHTML são subconjuntos diferentes de SGML?
    • XML e HTML quase não se cruzam?
    • XHTML é um superconjunto de XML e HTML?
  3. Posso esperar um resumo mais conciso e claro das diferenças nos propósitos dos quatro e / ou quando usar quais do que o link acima? Estou realmente confuso sobre a linha clara entre os propósitos pretendidos.
  4. De acordo com http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    XML não é uma única linguagem de marcação. É uma metalinguagem para permitir que os usuários criem sua própria linguagem de marcação.

    Eu queria saber como entender XML e HTML são subconjuntos de SGML, mas HTML é uma linguagem de marcação enquanto XML não é uma linguagem de marcação, mas uma metalinguagem para o design de linguagens de marcação?

    O SGML e o XHTML também são metalinguagens para o design da linguagem de marcação?

  5. Como nos dois links, mencione que HTML é um aplicativo de SGML e também um subconjunto de SGML, e XHTML é um aplicativo de XML. Gostaria de saber quais são as diferenças entre dizer que um idioma é uma aplicação de outro e um idioma é um subconjunto de outro?
StackExchange for All
fonte

Respostas:

8

HTML e XML são linguagens de marcação (daí o * ML). XML é uma linguagem de marcação genérica adequada para representar dados arbitrários, enquanto HTML é uma linguagem de marcação específica adequada apenas para representar páginas da web.

HTML e XHTML são subconjuntos apenas do SGML, exceto que o XHTML possui especificações adicionais para que também valide como XML. Pense no XML como o influente padrinho do XHTML.

Devido a esse relacionamento com o SGML em todas as três linguagens, existem muitas semelhanças, mas todas são consideradas linguagens diferentes. No entanto, muito do que define essas linguagens são suas restrições ao SGML.

  • O HTML restringe o SGML, definindo uma lista de tags que podem ser usadas.
  • O XML restringe o SGML ao não permitir tags de início e término não fechadas ou vazias, e força a explicitação dos atributos. O XML também possui um grande número de restrições adicionais que não são encontradas no SGML.
  • XHTML restringe o SGML com as tags do HTML (com algumas exclusões, como frameset, et al) e com as restrições de tag e entidade do XML.

Você pode achar este documento útil, embora os termos técnicos possam ser difíceis de digerir. http://www.w3.org/TR/NOTE-sgml-xml-971215

XML não é uma metalinguagem para definir linguagens de marcação. Realmente isso é apenas SGML. XML é simplesmente uma linguagem de marcação de formatação de dados. Sua fonte citada está usando termos técnicos de maneira imprecisa, e é por isso que eles são confusos.

Objetivos

XML é para definir seu próprio formato de dados. Se você deseja transmitir dados entre dois sistemas, o XML costuma ser o caminho.

Se, por exemplo, você precisar passar uma ordem de venda do seu site para o seu sistema de cobrança, você poderá criar esta carga útil XML:

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

Seu site enviaria esse XML para o seu sistema de cobrança, que poderia analisar os dados desse XML.

XHTML e HTML são obviamente apenas para páginas da web. O objetivo principal do XHTML é remover grande parte da ambiguidade que tivemos nos anos anteriores (décadas) de desenvolvimento web. No final dos anos 90, quando eu comecei, estávamos usando o HTML 3.2, que permitia códigos seriamente desleixados. O HTML 4+ e o XHTML tentam remediar isso sugerindo ou aplicando fortemente tags de fechamento explícitas, atributos explícitos e tags não permitidos, o que facilita as coisas para navegadores e humanos e evita diferenças inesperadas no comportamento entre navegadores.

Jordânia
fonte
Obrigado! (1) Existem subconjuntos HTML e XML de XHTML? (2) É correto que nem HTML seja um subconjunto de XML, nem XML seja um subconjunto de HTML? HTML e XML têm interseção não vazia ou totalmente separados um do outro?
StackExchange for All
(3) Que diferenças existem entre dizer que um idioma é uma aplicação de outro e um idioma é um subconjunto de outro?
StackExchange for All
Existem documentos que estão em conformidade com XML e HTML; existem documentos que estão em conformidade com XML e não HTML, e existem documentos que estão em conformidade com HTML e não XML. Portanto, nenhum é um subconjunto do outro, mas eles têm uma interseção não vazia.
Michael Kay
@ Tim: (1) HTML, XML e XHTML não são subconjuntos de nada, exceto SGML. Eles são todos diferentes. XML na verdade não tem quase nada a ver com HTML ou XHTML ... ele serve a um propósito diferente. O XHTML pode ser analisado como HTML e XML, mas é usado apenas pelos navegadores como marcação HTML. HTML e XML têm um ancestral comum do SGML, mas não são relacionados. Para cada intenção, eles são separados porque o SGML é muito genérico.
Jordan
Honestamente, acho que você está mergulhando profundamente na terminologia com aplicativo vs subconjunto. Não acho que exista uma distinção entre esses termos ou, se houver, duvido que seja amplamente aceito. Basta dizer que o XHTML empresta conceitos do XML e é usado como um subconjunto estrito do HTML. O HTML veio primeiro. O XHTML veio depois.
Jordan
6

Começarei dizendo que XML é um subconjunto de SGML e, em seguida, XHTML é um subconjunto de XML.

O HTML é baseado no SGML, mas com algumas regras diferentes. XHTML é basicamente uma versão atualizada em HTML, mas com algumas regras colocadas, também é um XML correto.

Algumas notas sobre como o HTML 5 Standard funciona com outras especificações. http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifications

Não tenho certeza das diferenças entre SGML e XML ou quando você usaria um sobre o outro. Embora XML pareça ser comumente usado.

Para XHTML e HTML, provavelmente é melhor sempre usar XHTML. Os erros são mais fáceis de encontrar e, como bônus, também será um XML válido.

WalterJ89
fonte
Obrigado! (1) Eu queria saber como entender os dois fatos aparentemente conflitantes: XML e HTML são subconjuntos de SGML, e HTML é uma linguagem de marcação enquanto XML não é uma linguagem de marcação, mas uma metalinguagem para o design de linguagens de marcação? (2) De acordo com sua resposta, XHTML é um subconjunto de XML. XHTML é um superconjunto de HTML como "XHTML subconjuntos HTML" citado em um link na minha postagem. Então HTML é um subconjunto de XML? Não tenho certeza se é verdade.
StackExchange for All
O HTML quebra muitas regras para ser XML. O HTML está mais próximo do SGML, acredito. O HTML está livre de tags e há um número definido de diferentes tipos de tags. XHTML apenas a versão XML do HTML.
111111 WalterJ89
Obrigado! Como nos dois links, mencione que HTML é um aplicativo de SGML e também um subconjunto de SGML, e XHTML é um aplicativo de XML. Gostaria de saber quais são as diferenças entre dizer que um idioma é uma aplicação de outro e um idioma é um subconjunto de outro?
StackExchange for All
2

A história destes pode esclarecer você aqui. Simplesmente falar sobre meta-idiomas, perfis, subconjuntos e instâncias é um pouco seco! Vou tentar mantê-lo curto e simples.

O SGML evoluiu do GML (Generalized Markup Language), desenvolvido por três engenheiros da IBM na década de 1960 como um meio de armazenar elaborados documentos legais, governamentais, industriais e militares. O GML foi gradualmente refinado até ser padronizado como SGML em 1986.

GML / SGML não é um idioma em si . É mais uma meta-linguagem , ou seja, uma linguagem para definir idiomas conformes ou as "regras" pelas quais a formatação de uma variedade de documentos elaborados pode ser projetada de uma maneira geralmente consistente. Cada tipo diferente de documento definiria, portanto, seu próprio conjunto de nomes de tags em conformidade com SGML, além de atributos associados, assim como qualquer identificador / espaço público formal definido, esquemas, etc. Cada formato definido como esse se tornou, portanto, uma linguagem de armazenamento de dados distinta para o documento tipo em questão. Devido à consistência entre todos os documentos em conformidade com as regras SGML, é possível escrever código para agrupar / processar dados nesses documentos e transferir dados entre documentos que compartilham um formato comum.

O SGML foi considerado excessivamente elaborado para o documento numeroso, mas de tamanho menor. Portanto, o XML foi desenvolvido entre 1996 e 2006 como um subconjunto (a palavra perfil significa efetivamente o mesmo que subconjunto) do SGML que pode lidar com documentos pequenos e grandes. Sendo um subconjunto de uma meta-linguagem, o XML é em si uma meta-linguagem, embora seja mais simples. Você poderia dizer que o XML fornece uma base para o design de formatos de documento adequados para fácil armazenamento e transferência entre sistemas em uma rede.

Após a padronização do SGML, mas antes de ser simplificado para XML, a Internet surgiu e, com ela, a necessidade de um formato de documento que permitisse fácil transferência e exibição de documentos e dados perdidos. O resultado foi a linguagem HTML, uma instância (ocasionalmente chamada de aplicativo ) de SGML com 18 tags predefinidas, fornecendo uma maneira padronizada de exibir uma variedade de tipos de dados, por exemplo, texto, imagens, áudio, etc. alguns elementos para omitir tags iniciais ou finais. Versões subseqüentes do HTML adicionaram novas tags e atributos e tornaram obsoletas algumas existentes. Até o HTML 5, eram feitas alterações no HTML para que ele permanecesse sempre uma linguagem filho do SGML.

Após a padronização do XML, surgiu uma instância chamada XHTML que combinava os nomes de tags HTML existentes com o rigor do XML no fechamento de tags, espaços de nomes, esquemas etc. O XHTML inicialmente teve a promessa de ser útil para armazenamento, transferência e exibição de dados. Parecia estar prestes a substituir o HTML como a maneira mais comum de exibir material da web - até o lançamento do HTML 5. O HTML 5 tinha alguns recursos sintáticos que foram além dos definidos no SGML, a fim de fornecer uma exibição de dados mais rica, especialmente para sites carregados de multimídia. Com o passar do tempo, foram adicionados recursos adicionais ao HTML 5, que enriqueceram ainda mais seu uso para exibição / uso de dados, a ponto de dificilmente ser substituído por novas versões XHTML, pelo menos no que diz respeito à exibição de dados em questão. Embora os padrões para HTML e XHTML sejam feitos por grupos de trabalho do W3C, A propagação real dessas linguagens "no terreno" é feita por web designers progressistas e não há mais progressiva do que aqueles que trabalham no setor de mídia (publicidade / RP / marketing): basta olhar para a criatividade dos sites das agências de publicidade em comparação com outros sites. Esse setor realmente adotou a nova linguagem HTML 5, encantada em explorar sua capacidade de SVG, áudio, vídeo eas novas APIs . Sua pronta adoção do HTML 5 levou rapidamente à sua popularidade entre os web designers em geral, um processo acelerado pela troca on-line de habilidades e truques no YouTube e em vários outros sites. Uma versão XHTML atualizada, XHTML5, surgiu, mas não é realmente um derivado XML estrito, mas uma versão do HTML5 serializada por XML. Apenas uma pequena proporção de sites parece ter alguma utilidade para isso.

Essa é a história por trás dessas linguagens de dados. Espero que ajude você a distinguir o significado e o propósito de todos eles. Filosoficamente, esta história mostra como uma ferramenta habilitadora essencial (SGML) para uma nova tecnologia (internet) pode, no novo ambiente com demandas cada vez mais variadas, superar seus limites originais e se tornar conceitualmente mais simples, aplicável mais versátil e impactante e mais poderosa.

Tronco
fonte
1

Geralmente no mundo dos padrões, um "perfil" de um padrão é uma seleção de opções que o padrão oferece: por exemplo, se o padrão permitir que documentos sejam codificados em UTF-8 ou UTF-16, um perfil do padrão poderá exigir codificados em UTF-8. O termo "subconjunto" tem um significado muito semelhante; embora, sem dúvida, o termo "perfil" seja um pouco mais amplo.

Michael Kay
fonte
Obrigado! (1) Que tal o significado e a diferença entre "aplicativo", "subconjunto" e "perfil", como na Parte 5 das minhas perguntas? (2) Em "XHTML é a base para uma família de futuros tipos de documentos que estendem e subconjuram HTML", isso significa que XHTML é um subconjunto de HTML ou HTML é um subconjunto de XHTML?
StackExchange for All