Relacje i różnice między SGML, XML, HTML i XHTML

16
  1. Zastanawiałem się, co oznacza „profil” w Wikipedii :

    XML jest profilem standardowego SGML ISO, a większość XML pochodzi z SGML bez zmian.

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

    HTML jest podzbiorem SGML.

    XML jest wysoce funkcjonalnym podzbiorem SGML.

    XHTML rozszerza i dzieli HTML.

    Czy „jeden jest podzbiorem drugiego” oznacza, że ​​kod w pierwszym jest również poprawny pod względem składniowym i semantycznie taki sam jak w drugim?

    Podobnie jak w przypadku elementarnej teorii mnogości,

    • czy HTML, XML i XHTML to wszystkie różne podzbiory SGML?
    • czy XML i HTML prawie się nie przecinają?
    • czy XHTML jest nadzbiorem zarówno XML, jak i HTML?
  3. Czy mogę spodziewać się bardziej zwięzłego i jasnego podsumowania różnic w celach czterech i / lub kiedy ich użyć, niż powyższy link? Jestem naprawdę zdezorientowany co do wyraźnej granicy między ich zamierzonymi celami.
  4. Zgodnie z http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    XML nie jest pojedynczym językiem znaczników. Jest to metaljęzyk pozwalający użytkownikom zaprojektować własny język znaczników.

    Zastanawiałem się, jak rozumieć XML i HTML to oba podzbiory SGML, ale HTML to język znaczników, podczas gdy XML nie jest językiem znaczników, ale metaliem do projektowania języków znaczników?

    Czy zarówno SGML, jak i XHTML są jednocześnie metalingiem do projektowania języka znaczników?

  5. Jak w obu linkach wspomina się, że HTML jest aplikacją SGML, a także podzbiorem SGML, a XHTML jest aplikacją XML. Zastanawiam się, jakie są różnice między powiedzeniem, że jeden język jest zastosowaniem innego, a jeden język jest podzbiorem innego?
StackExchange dla wszystkich
źródło

Odpowiedzi:

8

HTML i XML to oba języki znaczników (stąd * ML). XML to ogólny język znaczników odpowiedni do reprezentowania dowolnych danych, natomiast HTML to specyficzny język znaczników odpowiedni tylko do reprezentowania stron internetowych.

Zarówno HTML, jak i XHTML są tylko podzestawami SGML, z tym wyjątkiem, że XHTML ma dodatkowe specyfikacje, dzięki czemu sprawdza się również jako XML. Pomyśl o XML jako wpływowym ojcu chrzestnym XHTML.

Ze względu na ten związek z SGML we wszystkich 3 tych językach istnieje wiele podobieństw, ale wszystkie są uważane za różne języki. Jednak znaczna część tego, co definiuje te języki, to ich ograniczenia dotyczące SGML.

  • HTML ogranicza SGML, definiując listę tagów, które mogą być używane.
  • XML ogranicza SGML, nie zezwalając na niezamknięte lub puste tagi początkowe i końcowe oraz wymusza jawne atrybuty. XML ma również wiele dodatkowych ograniczeń, których nie można znaleźć w SGML.
  • XHTML ogranicza SGML za pomocą tagów z HTML (z pewnymi wyjątkami, takimi jak frameset, i in.), A także z tagami i ograniczeniami encji z XML.

Ten dokument może okazać się pomocny, chociaż warunki techniczne mogą być trudne do strawienia. http://www.w3.org/TR/NOTE-sgml-xml-971215

XML nie jest językiem używanym do definiowania języków znaczników. Naprawdę to tylko SGML. XML to po prostu język znaczników formatowania danych. Cytowane źródło używa nieprecyzyjnie terminów technicznych, dlatego są mylące.

Cele

XML służy do definiowania własnego formatu danych. Jeśli chcesz przesyłać dane między dwoma systemami, często jest to możliwe.

Jeśli na przykład konieczne było przekazanie zamówienia sprzedaży z witryny internetowej do systemu rozliczeniowego, można utworzyć ten ładunek XML:

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

Twoja witryna wyśle ​​następnie ten kod XML do systemu rozliczeniowego, który może następnie przeanalizować dane z tego kodu XML.

XHTML i HTML są oczywiście tylko dla stron internetowych. Głównym celem XHTML jest usunięcie wielu niejasności, które mieliśmy w poprzednich latach (dekadach) tworzenia stron internetowych. W późnych latach 90., kiedy zaczynałem, używaliśmy HTML 3.2, który pozwalał na bardzo niechlujny kod. HTML 4+ i XHTML starają się temu zaradzić poprzez wyraźne sugerowanie lub wymuszanie jawnych tagów zamykających, jawnych atrybutów i niedozwolonych tagów, co ułatwia zarówno przeglądarkom, jak i ludziom, i pozwala uniknąć nieoczekiwanych różnic w zachowaniu w różnych przeglądarkach.

Jordania
źródło
Dzięki! (1) Czy XHTML to podzbiory HTML i XML? (2) Czy to prawda, że ​​ani HTML nie jest podzbiorem XML, ani XML nie jest podzbiorem HTML? Czy HTML i XML mają niepuste przecięcia lub są całkowicie oddzielone od siebie?
StackExchange dla wszystkich
(3) Jakie są różnice między powiedzeniem, że jeden język jest zastosowaniem innego, a jeden język jest podzbiorem innego?
StackExchange dla wszystkich
Istnieją dokumenty zgodne zarówno z XML, jak i HTML; istnieją dokumenty zgodne z XML, a nie HTML, i są dokumenty zgodne z HTML, a nie XML. Więc żaden nie jest podzbiorem drugiego, ale mają niepuste skrzyżowanie.
Michael Kay,
@Tim: (1) HTML, XML i XHTML nie są podzbiorami niczego oprócz SGML. Wszystkie są różne. XML nie ma właściwie nic wspólnego z HTML lub XHTML ... służy innym celom. XHTML może być analizowany zarówno jako HTML, jak i XML, ale jest używany tylko przez przeglądarki jako znaczniki HTML. Zarówno HTML, jak i XML mają wspólnego przodka SGML, ale poza tym nie są ze sobą powiązane. Pod każdym względem są one oddzielne, ponieważ SGML jest tak ogólny.
Jordan,
Szczerze mówiąc, myślę, że zbyt głęboko nurkujesz w terminologii z zastosowaniem aplikacji a podzbiorem. Nie sądzę, aby istniało rozróżnienie między tymi warunkami, a jeśli tak, wątpię, czy jest to powszechnie uzgodnione. Wystarczy powiedzieć, że XHTML pożycza pojęcia z XML i jest używany jako ścisły podzbiór HTML. HTML był pierwszy. XHTML pojawił się później.
Jordan,
6

Zacznę od stwierdzenia, że ​​XML jest podzbiorem SGML, a następnie XHTML jest podzbiorem XML.

HTML oparty jest na SGML, ale z pewnymi innymi regułami. XHTML jest w zasadzie zaktualizowaną wersją HTML, ale z pewnymi zasadami umieszcza się go, więc jest to również poprawny XML.

Kilka uwag na temat działania standardu HTML 5 z innymi specyfikacjami. http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifications

Nie jestem pewien różnic między SGML a XML ani tego, kiedy użyjesz jednego nad drugim. Chociaż XML wydaje się być powszechnie używany.

W przypadku XHTML i HTML lepiej jest zawsze używać XHTML. Błędy są łatwiejsze do znalezienia i jako bonus będzie to również poprawny XML.

WalterJ89
źródło
Dzięki! (1) Zastanawiałem się, jak zrozumieć dwa pozornie sprzeczne fakty: zarówno XML, jak i HTML to podzbiory SGML, a HTML to język znaczników, podczas gdy XML nie jest językiem znaczników, ale metaliem do projektowania języków znaczników? (2) Zgodnie z Twoją odpowiedzią XHTML jest podzbiorem XML. XHTML to nadzbiór HTML jako „HTML podzbiory XHTML” cytowany z jednego linku w moim poście. Czyli HTML jest podzbiorem XML? Nie jestem pewien, czy to prawda.
StackExchange dla wszystkich
HTML łamie zbyt wiele reguł, by być XML. Wierzę, że HTML jest bliższy SGML. HTML jest luźny ze znacznikami i istnieje pewna liczba różnych typów znaczników. XHTML tylko wersja HTML HTML.
WalterJ89,
Dzięki! Jak w obu linkach wspomina się, że HTML jest aplikacją SGML, a także podzbiorem SGML, a XHTML jest aplikacją XML. Zastanawiam się, jakie są różnice między powiedzeniem, że jeden język jest zastosowaniem innego, a jeden język jest podzbiorem innego?
StackExchange dla wszystkich
2

Ich historia może cię tutaj oświecić. Samo mówienie o metajęzykach, profilach, podzbiorach i instancjach jest trochę suche! Postaram się, aby było to krótkie i proste.

SGML ewoluował z GML (Generalized Markup Language), który został opracowany przez 3 inżynierów IBM w latach 60. XX wieku jako sposób przechowywania skomplikowanych dokumentów prawnych, rządowych, przemysłowych i wojskowych. GML był stopniowo udoskonalany, aż w 1986 r. Został znormalizowany jako SGML.

GML / SGML nie jest językiem per se . Jest to raczej metajęzyk , tj. Język definiujący języki zgodne lub „zasady”, według których formatowanie różnych skomplikowanych dokumentów może być zaprojektowane w ogólnie spójny sposób. Każdy inny typ dokumentu definiowałby zatem własny zestaw nazw znaczników zgodny z SGML plus powiązane atrybuty, a także wszelkie zdefiniowane formalne publiczne identyfikatory / przestrzenie nazw, schematy itp. Każdy taki zdefiniowany format stał się zatem odrębnym językiem przechowywania danych dla dokumentu typ dotyczy. Ze względu na spójność wszystkich dokumentów zgodnych z regułami SGML możliwe jest pisanie kodu do zestawiania / przetwarzania danych w tych dokumentach i przesyłania danych między dokumentami o wspólnym formacie.

SGML okazał się zbyt skomplikowany w przypadku licznych dokumentów o mniejszych rozmiarach. Tak więc XML został opracowany w latach 1996-2006 jako podzbiór ( profil słowa faktycznie oznacza to samo co podzbiór) SGML, który mógł obsługiwać zarówno małe, jak i duże dokumenty. Będąc podzbiorem metajęzyka, XML sam w sobie jest metajęzykiem, choć prostszym. Można powiedzieć, że XML stanowi podstawę do zaprojektowania formatów dokumentów odpowiednich zarówno do łatwego przechowywania, jak i przesyłania między systemami w sieci.

Po standaryzacji SGML, ale zanim został on uproszczony do formatu XML, pojawił się internet, a wraz z nim potrzeba formatu dokumentów, który umożliwiłby łatwe przesyłanie i wyświetlanie zarówno dokumentów, jak i luźnych danych. Rezultatem był język HTML, instancja (czasami nazywana aplikacją ) SGML z 18 wstępnie zdefiniowanymi znacznikami, zapewniająca ustandaryzowany sposób wyświetlania różnych typów danych, np. Tekst, obrazy, audio itp. HTML wykorzystał SGML, pozwalając niektóre elementy, aby pominąć tagi początkowe lub końcowe. Kolejne wersje HTML dodawały do ​​niego nowe tagi i atrybuty, a niektóre z nich stały się nieaktualne. Do HTML 5 wprowadzono zmiany w HTML, aby zawsze pozostawał językiem potomnym SGML.

Po standaryzacji XML pojawiła się jego instancja o nazwie XHTML, która połączyła istniejące nazwy znaczników HTML z rygorem XML w zakresie zamykania znaczników, przestrzeni nazw, schematów itp. XHTML początkowo miał nadzieję, że będzie przydatny do przechowywania, przesyłania i wyświetlania danych. Wydawało się, że ma zamiar zastąpić HTML jako najczęstszy sposób wyświetlania materiałów internetowych - dopóki HTML 5 nie wyszedł. HTML 5 miał pewne funkcje składniowe, które wykraczały poza te zdefiniowane w SGML, aby zapewnić bogatsze wyświetlanie danych, szczególnie w przypadku witryn z multimediami. Z biegiem czasu dodano do HTML 5 dodatkowe funkcje, które jeszcze bardziej wzbogaciły jego wykorzystanie do wyświetlania / wykorzystania danych do tego stopnia, że ​​jest mało prawdopodobne, aby kiedykolwiek zostały zastąpione przez nowe wersje XHTML, przynajmniej jeśli chodzi o wyświetlanie danych. Chociaż standardy dla HTML i XHTML są opracowywane przez grupy robocze W3C, rzeczywista propagacja tych języków „w terenie” jest dokonywana przez progresywnych projektantów stron internetowych i nie ma bardziej postępowych niż ci pracujący w sektorze mediów (reklama / PR / marketing): wystarczy spojrzeć na kreatywność witryn agencji reklamowych w porównaniu do innych stron. Ten sektor naprawdę przeszedł na nowy język HTML 5, zachwycony wykorzystaniem swoich możliwości w zakresie SVG, audio, wideo inowe interfejsy API . Gotowe przyjęcie HTML 5 doprowadziło szybko do jego popularności wśród projektantów stron internetowych, proces ten został przyspieszony przez internetową wymianę umiejętności i sztuczek na YouTube i różnych innych stronach. Pojawiła się zaktualizowana wersja XHTML, XHTML5, ale tak naprawdę nie jest to ścisła pochodna XML, ale raczej wersja HTML5 z serializacją XML. Wydaje się, że tylko niewielka część witryn ma do tego jakiś cel.

Oto historia tych języków danych. Mam nadzieję, że pomoże ci to rozróżnić ich znaczenie i cel. Filozoficznie ta historia pokazuje, w jaki sposób podstawowe narzędzie wspomagające (SGML) dla nowej technologii (Internetu) może w nowym środowisku o coraz bardziej zróżnicowanych wymaganiach przekroczyć swoje pierwotne granice, a jednocześnie stać się koncepcyjnie prostsze, bardziej wszechstronne i wpływowo silniejsze.

Bagażnik samochodowy
źródło
1

Zasadniczo w świecie standardów „profil” normy to wybór opcji, które oferuje norma: na przykład, jeśli norma pozwala na kodowanie dokumentów w UTF-8 lub UTF-16, profil standardu może wymagać należy je zakodować w UTF-8. Termin „podzbiór” ma bardzo podobne znaczenie; chociaż prawdopodobnie termin „profil” jest nieco szerszy.

Michael Kay
źródło
Dzięki! (1) Co powiesz na znaczenie i różnicę między „aplikacją”, „podzbiorem” i „profilem”, jak w części 5 moich pytań? (2) Czy w „XHTML jest podstawą rodziny przyszłych typów dokumentów rozszerzających i dzielących HTML”, czy oznacza to, że XHTML jest podzbiorem HTML, czy HTML jest podzbiorem XHTML?
StackExchange dla wszystkich