Hướng dẫn does xml replace html? - xml có thay thế html không?

XML sẽ thay thế HTML?

Ngày 13 tháng 12 năm 2000

John E. Simpson

Trong tháng này, chúng tôi giải quyết hai câu hỏi liên quan, gây ra bệnh thần kinh phổ biến cho các nhà phát triển web chỉ nhúng ngón chân vào XML.

Q: XML có bao giờ thay thế HTML không?

A: Hai câu trả lời, một triết học và một thực dụng. Two answers, one philosophic and one pragmatic.

Câu trả lời triết học là XML không thực sự có ý nghĩa, ngoại trừ tình cờ, như là một sự thay thế cho HTML. Mặc dù khuyến nghị XML 1.0 đang được phát triển, nhưng đôi khi nó được gọi là "SGML cho web", và một số dư lượng của nhận thức đó vẫn còn. XML có khả năng thích ứng tuyệt vời với web, đúng. Nhưng với số lượng ngôn ngữ đánh dấu dựa trên XML có thể (và hàng ngàn đã còn tồn tại, cho vấn đề đó), không có trình duyệt web có thể tưởng tượng nào có thể tìm ra cách hiển thị tất cả các tài liệu tương ứng. Ví dụ: trình duyệt thông thường để tạo thẻ là gì? hoặc một ? chứ đừng nói đến một ?

Điều đó dẫn chúng ta đến câu trả lời thực dụng hơn: XML đã thay thế HTML ... loại.

Bạn có thể biết rằng World Wide Web Consortium (W3C) chịu trách nhiệm về tiêu chuẩn HTML, hiện tại phiên bản 4.01. Những gì bạn có thể không biết là W3C có kế hoạch phát hành không có cải tiến thêm cho HTML; Thay vào đó, nó đã phê duyệt một khuyến nghị cho phiên bản 1.0 về những gì nó được đặt tên là HTML hoặc XHTML có thể mở rộng. Do đó, tất cả các sửa đổi trong tương lai đối với Lingua Franca của Web sẽ được thực hiện theo tiêu chuẩn XHTML, không phải là HTML.

Vậy XHTML là gì? Tại Root, nó chỉ đơn giản là một dạng HTML XML. Ví dụ, các thẻ bắt đầu được cân bằng với các thẻ cuối, và tất cả các phần tử phải làm tổ chính xác trong nhau. Đã qua rồi "những ngày xưa tồi tệ" của các cấu trúc chồng chéo như

This is bold and this is italic
but the italicized element doesn't nest properly within
the bold.

Có sự khác biệt đáng kể khác giữa XHTML và HTML, một số trong số chúng được nhấn mạnh trong câu trả lời cho câu hỏi tiếp theo.

XHTML 1.0 có ba "hương vị" (từ của W3C, trong một khoảnh khắc hiếm hoi của sự hay thay đổi):

  • XHTML Chuyển tiếp: Đây là một lựa chọn tốt cho các tài liệu HTML hiện có mà bạn muốn chuyển đổi thành XHTML. Chẳng hạn, nói đúng, XML thực thi sự phân tách nghiêm ngặt giữa nội dung hoặc cấu trúc và cách thức hiển thị. Do đó, nói đúng, một thẻ HTML như không có chỗ trong tài liệu XML. Một dạng HTML thực sự dựa trên XML sẽ yêu cầu các đặc điểm trình bày (như thuộc tính BGColor) được thể hiện trong một bảng kiểu ngoài chính tài liệu. XHTML Chuyển tiếp thư giãn yêu cầu này, điều này khiến cho nhiều khả năng các trình duyệt cũ (có thể hoặc không hỗ trợ các kiểu dáng) sẽ tiếp tục hoạt động như mong đợi.
  • XHTML nghiêm ngặt: Ở đây, găng tay trẻ em tắt. Tất cả các đánh dấu liên quan đến trình bày bị cấm; Nếu bạn muốn một yếu tố cụ thể được hiển thị theo một cách cụ thể, bạn phải sử dụng bảng kiểu.
  • XHTML Frameset: Nếu bạn cần sử dụng khung để xây dựng các trang web của mình, hãy sử dụng phiên bản XHTML 1.0 này cho chính khung hình. (Nội dung của các khung riêng lẻ sẽ được đánh dấu trong một trong hai hương vị khác.)

Q: Có thể thay đổi trang web dựa trên HTML thành XML không?

A: Một lần nữa, hai câu trả lời. Người ta giả định rằng bạn chỉ muốn sử dụng XHTML (xem câu trả lời trước); Một cái khác, bạn muốn chuyển đổi HTML của mình thành một số ngôn ngữ đánh dấu thực sự có ý nghĩa về mặt ngữ nghĩa, đặc trưng cho ứng dụng như MathML, Ngôn ngữ đánh dấu hóa học hoặc một trong những sáng tạo của riêng bạn. Again, two answers. One assumes that you simply want to use XHTML (see previous answer); the other, that you want to convert your HTML into some truly semantically meaningful, application-specific markup language such as MathML, the Chemical Markup Language, or one of your own devising.

Đầu tiên, chúng ta hãy xem chuyển đổi HTML thành XHTML. Đề xuất XHTML của W3C cung cấp một danh sách thuận tiện về sự khác biệt giữa hai ngôn ngữ. Một vài sự khác biệt rõ ràng đã được đề cập ở trên, nhưng cũng có một số người sẽ gây bất ngờ cho các nhà phát triển HTML. Chẳng hạn, tên phần tử XML nhạy cảm; Trong một dạng HTML giả định XML, thẻ sẽ đại diện cho một loại phần tử khác với ,

Charles Darwin Origin of Species
Joseph Heller Catch-22
0, v.v. Vì vậy, các tác giả của XHTML đã tung một đồng xu, và đã chọn các tên phần tử toàn cầu. Ngoài ra, các phần tử trống (các phần tử được biểu thị trong HTML là
Charles Darwin Origin of Species
Joseph Heller Catch-22
1,
Charles Darwin Origin of Species
Joseph Heller Catch-22
2,
Charles Darwin Origin of Species
Joseph Heller Catch-22
3,
Charles Darwin Origin of Species
Joseph Heller Catch-22
4, v.v.) phải sử dụng biểu mẫu thẻ phần tử trống XML đặc biệt, với dấu gạch chéo (/) trước khi đóng
Charles Darwin Origin of Species
Joseph Heller Catch-22
5. Thẻ
Charles Darwin Origin of Species
Joseph Heller Catch-22
6 trở thành
Charles Darwin Origin of Species
Joseph Heller Catch-22
7,
Charles Darwin Origin of Species
Joseph Heller Catch-22
3 trở thành
Charles Darwin Origin of Species
Joseph Heller Catch-22
9, v.v.

. Thay vì

Charles Darwin Origin of Species
Joseph Heller Catch-22
9, v.v ... Đây là một trong số ít các trường hợp tôi có thể nghĩ đến trong đó chúng ta có thể biết ơn về đánh dấu lười biếng được các nhà cung cấp trình duyệt khuyến khích. Và đó là cách để viết XHTML tương thích ngược của riêng bạn.)

Cho đến nay, phương tiện đơn giản nhất để chuyển đổi các tài liệu HTML hiện tại của bạn thành biểu mẫu XHTML của họ là sử dụng tiện ích TIDY HTML miễn phí của Dave Raggett, có sẵn tại trang web W3C. Tidy chạy trên nhiều nền tảng khác nhau và chấp nhận một loạt các tham số dòng lệnh gần như chóng mặt để chỉ đạo việc xử lý của nó. Một số nhà cung cấp và nhà phát triển cũng đã tích hợp gọn gàng vào các sản phẩm của riêng họ. (Trên các máy dựa trên Windows, một công cụ phổ biến như vậy là HTML-KIT miễn phí của Chami.com.)

Nhưng sau đó có câu hỏi khó chịu hơn: Điều gì sẽ xảy ra nếu bạn muốn chuyển đổi tài liệu HTML của mình không thành XHTML, mà là một số ứng dụng XML thực sự?

Câu hỏi này làm phiền vì tên phần tử HTML (hoặc xhtml, đối với vấn đề đó) không có ý nghĩa vốn có, đó là dấu hiệu đặc trưng của các ứng dụng XML như chúng ta thường nghĩ về chúng. Giả sử bạn đã có một đoạn HTML (x) trông như thế này:

Charles Darwin Origin of Species
Joseph Heller Catch-22

Được chuyển đổi thành ứng dụng XML tùy chỉnh, điều này có thể được thể hiện một cái gì đó giống như


  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

Đó là khá đơn giản, phải không? Nhưng bạn có thực sự muốn chuyển đổi-sử dụng, giả sử, một hoạt động tìm kiếm và thay thế tiêu chuẩn-mỗi thẻ


  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

4 trong các tài liệu gốc thành

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

5,

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

6 thành

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

7, lần xuất hiện đầu tiên của mỗi

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

8 trong một

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

6 đến
Charles Darwin Origin of Species
Joseph Heller Catch-22
0, và sự xuất hiện thứ hai của mỗi
Charles Darwin Origin of Species
Joseph Heller Catch-22
1 trong một

  
    Charles Darwin
    Origin of Species
  
  
    Joseph Heller
    Catch-22
  

6 đến
Charles Darwin Origin of Species
Joseph Heller Catch-22
3? Không có khả năng lắm! (Ít nhất, hàng bảng đầu tiên chứa ba yếu tố
Charles Darwin Origin of Species
Joseph Heller Catch-22
4 trở lên sẽ phá vỡ sơ đồ nhỏ của bạn hoàn toàn.)

Bây giờ nếu HTML hiện tại của bạn được đánh dấu rất cẩn thận, đặc biệt là sử dụng các thuộc tính lớp trên mọi trường hợp của mọi loại phần tử (ví dụ để sử dụng với các kiểu dáng CSS), điều này có thể hoạt động. Xem xét

Charles Darwin Origin of Species
Joseph Heller Catch-22

Nhìn thấy? Sau đó, bạn có thể thực hiện thao tác tìm kiếm và thay thế của mình một cách dễ dàng ... tốt, để sửa các thẻ bắt đầu, dù sao đi nữa. (Và giả sử, tất nhiên, rằng bạn đã đủ thần kinh để bao gồm tất cả các thuộc tính lớp này ngay từ đầu.)

Tuy nhiên, gần như chắc chắn, thay vào đó, bạn cần phải thực hiện một phân tích rất khó khăn (và có lẽ là đau đớn) về cấu trúc tài liệu của bạn và ánh xạ cấu trúc đó thành đánh dấu có ý nghĩa về mặt ngữ nghĩa, sau đó là một nỗ lực chuyển đổi thủ công khó khăn. Đây không phải là một nhiệm vụ mà hầu hết chúng ta muốn thấy trong danh sách các mục tiêu công việc của chúng tôi cho năm tới. Nhưng vâng, có thể thay đổi HTML thành XML như thế này.

Để biết thêm thông tin về XHTML, hãy đọc XHTML: Giải pháp mã sạch.