Mối quan hệ và sự khác biệt giữa SGML, XML, HTML và XHTML


16
  1. Tôi đã tự hỏi "hồ sơ" có nghĩa là gì trong Wikipedia :

    XML là một cấu hình của SGML tiêu chuẩn ISO và hầu hết XML đến từ SGML không thay đổi.

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

    HTML là một tập hợp con của SGML.

    XML là một tập hợp con có chức năng cao của SGML.

    XHTML mở rộng và tập hợp con HTML.

    Liệu "một là một tập hợp con của một" có nghĩa là mã trong lần đầu tiên cũng đúng về mặt cú pháp và về mặt ngữ nghĩa giống như trong lần thứ hai?

    Theo nghĩa của lý thuyết tập cơ bản,

    • HTML, XML và XHTML có phải là tất cả các tập hợp con khác nhau của SGML không?
    • làm XML và HTML gần như không giao nhau?
    • XHTML có phải là siêu dữ liệu của cả XML và HTML không?
  3. Tôi có thể mong đợi một số tóm tắt ngắn gọn và rõ ràng hơn về sự khác biệt trong mục đích của bốn và / hoặc khi nào nên sử dụng, hơn là liên kết ở trên không? Tôi thực sự bối rối về ranh giới rõ ràng giữa các mục đích dự định của họ.
  4. Theo http://xml-tips.assistprogramming.com/sgml-xml-html-xhtml-all-together.html :

    XML không phải là một ngôn ngữ đánh dấu duy nhất. Đó là một ngôn ngữ kim loại để cho phép người dùng thiết kế ngôn ngữ đánh dấu của riêng họ.

    Tôi đã tự hỏi làm thế nào để hiểu XML và HTML đều là các tập con của SGML, nhưng HTML là ngôn ngữ đánh dấu trong khi XML không phải là ngôn ngữ đánh dấu mà là ngôn ngữ kim loại để thiết kế ngôn ngữ đánh dấu?

    Có phải cả SGML và XHTML cũng là ngôn ngữ kim loại để thiết kế ngôn ngữ đánh dấu?

  5. Như trong cả hai liên kết đều đề cập rằng HTML là một ứng dụng của SGML cũng như một tập hợp con của SGML và XHTML là một ứng dụng của XML. Tôi tự hỏi sự khác biệt giữa việc nói một ngôn ngữ là một ứng dụng của ngôn ngữ khác và một ngôn ngữ là một tập hợp con của ngôn ngữ khác?

Câu trả lời:


8

HTML và XML đều là ngôn ngữ đánh dấu (do đó là * ML). XML là ngôn ngữ đánh dấu chung phù hợp để biểu thị dữ liệu tùy ý, trong khi HTML là ngôn ngữ đánh dấu cụ thể chỉ phù hợp để đại diện cho các trang web.

HTML và XHTML đều là các tập hợp con chỉ của SGML, ngoại trừ XHTML có các thông số kỹ thuật bổ sung để nó cũng xác nhận là XML. Hãy nghĩ về XML như là cha đỡ đầu có ảnh hưởng của XHTML.

Do mối quan hệ này với SGML trên cả 3 ngôn ngữ này, có rất nhiều điểm tương đồng, nhưng chúng đều được coi là các ngôn ngữ khác nhau. Tuy nhiên, phần lớn những gì định nghĩa các ngôn ngữ này là những hạn chế của chúng đối với SGML.

  • HTML hạn chế SGML bằng cách xác định danh sách các thẻ được phép sử dụng.
  • XML hạn chế SGML bằng cách không cho phép các thẻ bắt đầu và kết thúc không rõ ràng hoặc trống và buộc các thuộc tính phải rõ ràng. XML cũng có một số lượng lớn các hạn chế bổ sung không được tìm thấy trong SGML.
  • XHTML hạn chế SGML với các thẻ từ HTML (với một số loại trừ, chẳng hạn như frameset, et al) và với các hạn chế về thẻ và thực thể từ XML.

Bạn có thể thấy tài liệu này hữu ích, mặc dù các thuật ngữ kỹ thuật có thể khó tiêu hóa. http://www.w3.org/TR/NOTE-sgml-xml-971215

XML không phải là một ngôn ngữ kim loại để xác định ngôn ngữ đánh dấu. Thực sự đó chỉ là SGML. XML chỉ đơn giản là một ngôn ngữ đánh dấu định dạng dữ liệu. Nguồn trích dẫn của bạn đang sử dụng thuật ngữ kỹ thuật không chính xác, đó là lý do tại sao chúng gây nhầm lẫn.

Mục đích

XML là để xác định định dạng dữ liệu của riêng bạn. Nếu bạn muốn truyền dữ liệu giữa hai hệ thống, XML thường là cách để làm điều đó.

Ví dụ: nếu bạn cần chuyển đơn đặt hàng từ trang web của mình sang hệ thống thanh toán, bạn có thể tạo tải trọng XML này:

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

Trang web của bạn sau đó sẽ gửi XML đó đến hệ thống thanh toán của bạn, sau đó có thể phân tích dữ liệu từ XML đó.

XHTML và HTML rõ ràng chỉ dành cho các trang web. Mục đích chính của XHTML là loại bỏ rất nhiều sự mơ hồ mà chúng ta có trong những năm trước (nhiều thập kỷ) phát triển web. Quay trở lại vào cuối những năm 90 khi tôi bắt đầu, chúng tôi đã sử dụng HTML 3.2 cho phép mã cẩu thả nghiêm trọng. HTML 4+ và XHTML cố gắng khắc phục bằng cách đề xuất hoặc thực thi mạnh mẽ các thẻ đóng rõ ràng, thuộc tính rõ ràng và thẻ không được phép, giúp dễ dàng hơn cho cả trình duyệt và con người và tránh sự khác biệt không mong muốn trong trình duyệt chéo.


Cảm ơn! (1) Cả hai tập hợp HTML và XML của XHTML? (2) Có đúng không HTML không phải là tập con của XML, hay XML không phải là tập con của HTML? Do HTML và XML có giao điểm không trống hoặc hoàn toàn tách biệt với nhau?
Tim

(3) Sự khác biệt nào giữa việc nói một ngôn ngữ là một ứng dụng của ngôn ngữ khác và một ngôn ngữ là một tập hợp con của ngôn ngữ khác?
Tim

Có những tài liệu phù hợp với cả XML và HTML; có những tài liệu phù hợp với XML và không phải HTML và có những tài liệu phù hợp với HTML và không phải XML. Vì vậy, không phải là một tập hợp con khác, nhưng chúng có một giao điểm không trống.
Michael Kay

@Tim: (1) HTML, XML và XHTML không phải là tập hợp con của bất cứ thứ gì ngoại trừ SGML. Họ đều khác nhau. XML thực sự không liên quan gì đến HTML hay XHTML ... nó phục vụ một mục đích khác. XHTML có thể được phân tích cú pháp dưới dạng cả HTML và XML, nhưng nó chỉ được các trình duyệt sử dụng làm đánh dấu HTML. Cả HTML và XML đều có chung một tổ tiên của SGML, nhưng về mặt khác thì không liên quan. Đối với mọi mục đích, chúng là riêng biệt vì SGML rất chung chung.
Jordan

Thành thật mà nói tôi nghĩ rằng bạn đang đi quá sâu vào thuật ngữ với ứng dụng so với tập hợp con. Tôi không nghĩ có sự khác biệt giữa các điều khoản đó, hoặc nếu có, tôi nghi ngờ điều đó được nhiều người đồng ý. Đủ để nói rằng XHTML mượn các khái niệm từ XML và được sử dụng như một tập hợp con nghiêm ngặt của HTML. HTML đến đầu tiên. XHTML đến sau đó.
Jordan

6

Tôi sẽ bắt đầu bằng cách nói rằng XML là một tập hợp con của SGML, sau đó XHTML là một tập hợp con của XML.

HTML dựa trên SGML nhưng với một số quy tắc khác nhau. XHTML về cơ bản là một phiên bản HTML được cập nhật nhưng với một số quy tắc đặt nó để nó cũng là XML chính xác.

Một số lưu ý về cách HTML 5 Standard hoạt động với các thông số kỹ thuật khác. http://dev.w3.org/html5/spec/Overview.html#compliance-with-other-specifying

Tôi không chắc chắn về sự khác biệt giữa SGML và XML hoặc khi nào bạn sẽ sử dụng cái khác. Mặc dù XML dường như thường được sử dụng.

Đối với XHTML và HTML, có lẽ tốt hơn hết là luôn sử dụng XHTML. Lỗi dễ tìm hơn và như một phần thưởng, nó cũng sẽ là XML hợp lệ.


Cảm ơn! (1) Tôi đã tự hỏi làm thế nào để hiểu hai sự thật dường như mâu thuẫn nhau: XML và HTML đều là các tập con của SGML và HTML là ngôn ngữ đánh dấu trong khi XML không phải là ngôn ngữ đánh dấu mà là ngôn ngữ kim loại để thiết kế ngôn ngữ đánh dấu? (2) Theo trả lời của bạn, XHTML là tập hợp con của XML. XHTML là siêu bộ HTML dưới dạng "XHTML tập hợp HTML" được trích dẫn từ một liên kết trong bài đăng của tôi. Vậy HTML là tập con của XML? Tôi không chắc đó là sự thật.
Tim

HTML phá vỡ quá nhiều quy tắc để trở thành XML. Tôi tin rằng HTML gần với SGML hơn. HTML lỏng lẻo với các thẻ và có một số loại thẻ khác nhau. XHTML chỉ là phiên bản XML của HTML.
WalterJ89

Cảm ơn! Như trong cả hai liên kết đều đề cập rằng HTML là một ứng dụng của SGML cũng như một tập hợp con của SGML và XHTML là một ứng dụng của XML. Tôi tự hỏi sự khác biệt giữa việc nói một ngôn ngữ là một ứng dụng của ngôn ngữ khác và một ngôn ngữ là một tập hợp con của ngôn ngữ khác?
Tim

2

Lịch sử của những điều này có thể khai sáng cho bạn ở đây. Nói một cách đơn giản về siêu ngôn ngữ, hồ sơ, tập con và trường hợp là một chút khô khan! Tôi sẽ cố gắng giữ nó ngắn gọn và đơn giản.

SGML phát triển từ GML (Ngôn ngữ đánh dấu tổng quát) được 3 kỹ sư của IBM nghĩ ra vào những năm 1960 như là một phương tiện lưu trữ các tài liệu pháp lý, chính phủ, công nghiệp và quân sự phức tạp. GML dần dần được tinh chỉnh cho đến khi nó được chuẩn hóa thành SGML vào năm 1986.

GML / SGML không phải là một ngôn ngữ cho mỗi gia nhập . Nó đúng hơn là một ngôn ngữ meta , tức là một ngôn ngữ để xác định các ngôn ngữ tuân thủ hoặc "quy tắc" theo đó định dạng của một loạt các tài liệu phức tạp có thể được thiết kế theo cách nhìn chung nhất quán. Do đó, mỗi loại tài liệu khác nhau sẽ xác định bộ tên thẻ tuân thủ SGML của riêng nó cộng với các thuộc tính được liên kết, cũng như bất kỳ định danh / không gian tên công khai chính thức nào được xác định, v.v. loại liên quan. Do tính thống nhất giữa tất cả các tài liệu tuân thủ các quy tắc SGML, có thể viết mã để đối chiếu / xử lý dữ liệu trong các tài liệu này và chuyển dữ liệu giữa các tài liệu có chung định dạng.

SGML đã được tìm thấy quá công phu cho nhiều tài liệu có kích thước nhỏ hơn. Vì vậy, XML được phát triển từ năm 1996 đến 2006 dưới dạng tập hợp con ( cấu hình từ có nghĩa thực sự giống như tập hợp con) của SGML có thể xử lý cả tài liệu nhỏ và lớn. Là một tập hợp con của ngôn ngữ meta, XML tự nó là ngôn ngữ meta, mặc dù ngôn ngữ đơn giản hơn. Bạn có thể nói rằng XML cung cấp một cơ sở để thiết kế các định dạng tài liệu phù hợp cho cả việc lưu trữ và chuyển giao dễ dàng giữa các hệ thống trên mạng.

Sau khi chuẩn hóa SGML nhưng trước khi được đơn giản hóa thành XML, internet đã xuất hiện và với nhu cầu định dạng tài liệu cho phép dễ dàng chuyển và hiển thị cả tài liệu và dữ liệu lỏng lẻo. Kết quả là ngôn ngữ HTML, một ví dụ (đôi khi được gọi là ứng dụng ) của SGML với 18 thẻ được xác định trước cung cấp một cách tiêu chuẩn hóa để hiển thị nhiều loại dữ liệu, ví dụ như văn bản, hình ảnh, âm thanh, v.v. một số yếu tố để bỏ qua thẻ bắt đầu hoặc kết thúc. Các phiên bản tiếp theo của HTML đã thêm các thẻ và thuộc tính mới vào đó và khiến một số thẻ hiện có bị lỗi thời. Cho đến HTML 5, các thay đổi đối với HTML đã được thực hiện để nó luôn là ngôn ngữ con của SGML.

Sau khi XML được chuẩn hóa, một phiên bản của nó được gọi là XHTML đã xuất hiện kết hợp các tên thẻ HTML hiện có với sự nghiêm ngặt của XML về việc đóng thẻ, không gian tên, lược đồ, v.v. XHTML ban đầu hứa hẹn sẽ hữu ích cho việc lưu trữ, truyền và hiển thị dữ liệu. Nó dường như sắp thay thế HTML như một cách phổ biến nhất để hiển thị tài liệu web - cho đến khi HTML 5 xuất hiện. HTML 5 có một số tính năng cú pháp vượt xa các tính năng được xác định trong SGML để cung cấp hiển thị dữ liệu phong phú hơn, đặc biệt là cho các trang web đa phương tiện. Thời gian trôi qua, các tính năng bổ sung đã được thêm vào HTML 5 làm phong phú thêm việc sử dụng để hiển thị / sử dụng dữ liệu đến mức không thể thay thế bằng các phiên bản XHTML mới, ít nhất là về hiển thị dữ liệu. Mặc dù các tiêu chuẩn cho HTML & XHTML được thực hiện bởi các nhóm làm việc của W3C, việc truyền bá thực tế các ngôn ngữ "trên mặt đất" này được thực hiện bởi các nhà thiết kế web tiến bộ và không có tiến bộ nào hơn các ngôn ngữ làm việc trong lĩnh vực truyền thông (quảng cáo / PR / tiếp thị): chỉ cần nhìn vào sự sáng tạo của các trang web quảng cáo so với các trang web khác. Khu vực này thực sự đã sử dụng ngôn ngữ HTML 5 mới, rất vui khi khai thác khả năng của nó cho SVG, âm thanh, video vàcác API mới . Việc áp dụng HTML 5 sẵn sàng của họ đã nhanh chóng dẫn đến sự phổ biến của các nhà thiết kế web nói chung, một quá trình được tăng tốc nhờ trao đổi trực tuyến các kỹ năng và thủ thuật trên YouTube và các trang web khác. Một phiên bản XHTML được cập nhật, XHTML5, đã xuất hiện nhưng nó không thực sự là một dẫn xuất XML nghiêm ngặt mà là một phiên bản HTML5 được tuần tự hóa XML. Chỉ có một tỷ lệ nhỏ các trang web dường như có bất kỳ việc sử dụng cho nó.

Đó là câu chuyện đằng sau những ngôn ngữ dữ liệu này. Tôi hy vọng nó giúp bạn phân biệt ý nghĩa và mục đích của tất cả chúng. Về mặt triết học, câu chuyện này cho thấy một công cụ hỗ trợ thiết yếu (SGML) cho công nghệ mới (internet) có thể như thế nào, trong môi trường mới với nhu cầu ngày càng đa dạng, vượt xa các giới hạn ban đầu của nó nhưng trở nên đơn giản hơn về mặt khái niệm, linh hoạt hơn và mạnh mẽ hơn.


1

Nói chung trong thế giới tiêu chuẩn, "hồ sơ" của tiêu chuẩn là một lựa chọn các tùy chọn mà tiêu chuẩn đưa ra: ví dụ: nếu tiêu chuẩn cho phép các tài liệu được mã hóa trong UTF-8 hoặc UTF-16, thì hồ sơ của tiêu chuẩn có thể yêu cầu chúng được mã hóa theo UTF-8. Thuật ngữ "tập hợp con" có nghĩa rất giống nhau; mặc dù có thể cho rằng thuật ngữ "hồ sơ" rộng hơn một chút.


Cảm ơn! (1) Làm thế nào về ý nghĩa và sự khác biệt giữa "ứng dụng", "tập hợp con" và "hồ sơ", như trong Phần 5 của câu hỏi của tôi? (2) Trong "XHTML là cơ sở cho một họ các loại tài liệu trong tương lai mở rộng và tập hợp con HTML", điều đó có nghĩa là XHTML là tập con của HTML hay HTML là tập con của XHTML?
Tim
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.