Validators

 

Dan’s Web Tips:

Validators

[<== Trang trước] | [Trang Chính] | [Trang kế ==>]

 

Validator vs Linter: Sự khác biệt là gì?

Thủ thuật: Hiểu trình xác nhận validator và một Linter là gì, những gì khác biệt chúng, và cách thức chúng có thể được sử dụng để giúp bạn cải thiện sự phát triển Web của mình.

 

Nhiều người thấy bối rối về sự khác biệt giữa “HTML Validator”, bộ kiểm tra trang Web khác. Nhầm lẫn này được trợ giúp và xúi bẩy bởi sự lạm dụng thường xuyên của thuật ngữ “validator” của các tác giả và quảng bá cho chương trình mà không phải trình xác nhận validator. Trên thực tế, có một sự khác biệt lớn giữa hai loại chương trình, mặc dù cả hai có thể hữu ích cho các tác giả HTML đang tìm cách tránh sai sót.

 

Validators

 

Validator là một chương trình dùng để kiểm tra cú pháp của một tài liệu HTML với một đặc điểm kỹ thuật nghiêm ngặt, như được định nghĩa trong một Document Type Definition (DTD). HTML thực sự là một ứng dụng của SGML (Standard Generalized Markup Language), và tất cả các tài liệu SGML có nghĩa vụ phải phù hợp với một DTD. Có rất nhiều loại HTML DTDs khác nhau (và nhiều hơn nữa không phải HTML DTD, chẳng hạn như đối với các loại tài liệu khác trong SGML hay XML mới hơn, Extensible Markup Language, mà là một hình thức đơn giản của SGML). Các phiên bản HTML 2.0, 3.2, và 4.0 đều có các DTD chính thức xác nhận bởi W3C (World Wide Web Consortium). (HTML 1.0 chưa bao giờ có một đặc tả chính thức, và chỉ đơn giản là một thuật ngữ được sử dụng một cách mơ hồ để tham khảo các hình thức đầu của HTML được sử dụng trước phiên bản 2.0.)

 

Validator sử dụng một trong các DTDs để xác định nếu trang của bạn là đúng cú pháp thuộc có đặc tả cụ thể. Mà DTD được sử dụng được xác định bởi <! DOCTYPE> khai báo của bạn, mà phải là lúc bắt đầu của mỗi trang web của bạn.

 

Validator là cách nhất định duy nhất để kể nếu trang web của bạn là tiêu chuẩn phù hợp. Nó sẽ cho bạn biết nếu một số những tag và các thuộc tính bạn đang sử dụng phần mở rộng không chuẩn mà không phải là một phần của các DTD, và cũng sẽ tìm thấy lỗi cú pháp như nesting xấu và mất tích thẻ đóng cho các yếu tố có đòi hỏi chúng. Đó là một ý tưởng tốt để chạy các trang của bạn thông qua một Validator để tìm các lỗi như vậy, và sửa chữa các lỗi không chủ ý validator tìm thấy. Đối với các lỗi “cố ý”, như các thẻ tag không theo tiêu chuẩn và thuộc tính bạn đang sử dụng để có được một hiệu ứng hình ảnh đặc biệt, đó là tùy thuộc vào bạn có nên loại bỏ chúng để có được trang web của bạn hợp lệ hóa, hoặc để chúng trong mặc dù họ không chuẩn. Trong một số trường hợp, các yếu tố không chuẩn sẽ làm suy giảm một cách duyên dáng trên các trình duyệt không hỗ trợ chúng, do đó là hợp lý an toàn để giữ chúng.

 

Các liên kết tới một số validator trực tuyến ở cuối bài viết này.

 

Linters/Checkers

 

Có một số chương trình khác, bao gồm cả các trang web trực tuyến, phần mềm độc lập, và các tính năng được xây dựng trong editor mã HTML, sẽ kiểm tra trang web của bạn cho các hình thức khác nhau của “tính đúng đắn.” Một số trong số chúng được gọi là “validator”, nhưng nếu chúng không sử dụng một SGML loại DTD hợp lệ hóa trang web của bạn chống lại, chúng không phải validator thật. ( “phép thử” là nếu bất kỳ mục đích xấu “Validator” đi trang của bạn là hợp lệ nếu nó thiếu một khai báo DOCTYPE, sau đó nó không phải là một Validator đúng.)

 

Điều này không phải phải là để nói có những chương trình này “không phải là Validator”, có thể được gọi là linter hoặc kiểm tra checker không hữu ích. Chúng sẽ tìm các vấn đề khác nhau với các trang web như các lỗi cú pháp, các yếu tố có khả năng tương thích hoặc không tiếp cận vấn đề, và trong một số trường hợp sẽ kiểm tra các liên kết của bạn cho “404 Not Found” lỗi và văn bản tiếng Anh của bạn cho các lỗi chính tả. Đôi khi một Linter có thể tìm thấy các vấn đề trong trang web của bạn mà một Validator sẽ không làm được, nếu mã của bạn là hợp lệ theo quy định của thông số kỹ thuật nhưng có vấn đề quan tâm khác rằng không được giải quyết bởi các tiêu chuẩn.

 

Tuy nhiên, đầu ra của một Linter cần phải được thực hiện với một hạt muối, vì nó không dựa trên bất kỳ tiêu chuẩn chính thức, nhưng chỉ vào sở thích, thiên vị, Peeves vật cưng của tác giả của chương trình. Ví dụ, nếu tôi đã viết một Linter (tôi đã không cho đến nay), tôi có lẽ muốn có nó phàn nàn nếu bạn liên kết đến “index.html” thay vì trực tiếp vào thư mục với “./”. (Xem thảo luận của tôi về điều này.) Nhưng đó chỉ là sở thích của tôi; nó không vi phạm bất kỳ mã HTML hoặc URL tiêu chuẩn để làm điều đó theo cách khác. (Nó chỉ ít thanh lịch nhiều như tôi đang đề cập)

 

DOCTYPE Declaration

Validator xác định mã HTML chuẩn cho xác nhận tài liệu của bạn chống lại cách khai báo DOCTYPE vào đầu của tài liệu. Nếu DOCTYPE là thiếu hoặc không chính xác, điều này sẽ gây ra các Validator báo cáo lỗi, có lẽ những cái kỳ lạ như nói rằng <HTML> là một thẻ không rõ. Vì vậy, bạn cần phải có các DOCTYPE đúng nếu bạn muốn trang của bạn hợp lệ hóa.

 

Về lý thuyết, các trình duyệt có thể sử dụng các DOCTYPE để xác định phiên bản HTML được sử dụng và có thể kích hoạt và vô hiệu hóa tính năng khác nhau cho phù hợp, nhưng trong thực tế (cho đến gần đây, xem dưới đây) không thực sự làm được điều này, vì vậy các DOCTYPE là duy nhất sử dụng với validator và không ảnh hưởng đến sự xuất hiện của các trang của bạn trong các trình duyệt. Bạn vẫn cần phải có nó nếu bạn muốn sử dụng validator, và một số “chủ nghĩa thuần túy HTML” cũng xem cách đặt một DOCTYPE trong các trang của họ như là một “tuyên bố chính trị” chỉ hỗ trợ cho các tiêu chuẩn đối lập với sự ngẫu nhiên “súp tag” trong những trình duyệt phổ biến.

 

Trong thời gian gần đây, một số phiên bản trình duyệt đã bắt đầu sử dụng “DOCTYPE sniffing” để chuyển đổi giữa một “quirks mode” nhằm nỗ lực ở lại tương thích với các kỳ quặc của các trình duyệt cũ và một “chế độ tiêu chuẩn” rằng theo tiêu chuẩn hiện hành tốt hơn. Mozilla thậm chí có ba chế độ: tiêu chuẩn – standards, gần như tiêu chuẩn- almost standards, và quirks. Khoảng cách giữa các hình ảnh và các bảng sẽ bị ảnh hưởng đáng kể bởi điều này. Một số lời bình luận newsgroup có kết quả, trong đó có cuộc tranh luận về việc liệu đây là một điều tốt hay điều xấu, và cảm nhận thực tế từ các nhà phát triển tìm thấy các trang của họ một cách bí ẩn làm việc hay không tùy thuộc vào DOCTYPE họ sử dụng. Xem một số ý kiến về vấn đề này. Trong khi cái gọi là “purist camp” thích ý tưởng của các nhà sản xuất trình duyệt di chuyển từ quirk-tương thích với tiêu chuẩn tuân thủ, họ có một số nghi ngại về cách tiếp cận “DOCTYPE sniffinf”, vì nó có vẻ được thực hiện theo một cách khá thất thường, kết hợp không có liên quan những thứ như các URL DTD trong DOCTYPE để xác định chế độ đó để sử dụng, thay vì hiển thị một sự hiểu biết đúng và đầy đủ về ý nghĩa của các DOCTYPE.

 

Cú pháp của DOCTYPE có một chút phức tạp, với các bộ phận khác nhau cho thấy những gì tiêu chuẩn được tuân theo và tổ chức nào quản lý nó, nhưng bạn không cần phải xây dựng doctypes của riêng bạn (trừ khi bạn đang tạo DTDs mới cho mình, không phải thực sự là một ý tưởng tốt nếu bạn muốn tuân theo tiêu chuẩn mà những người khác sẽ có thể hiểu được), vì vậy bạn chỉ có thể lấy DOCTYPE thích hợp cho các tiêu chuẩn mà bạn muốn theo dõi và “cắt-và-dán” nó vào trang của bạn. Nhiều người, đặc biệt là nếu họ đã viết HTML cho một thời gian trước khi họ bắt đầu cố gắng hợp lệ hóa tài liệu của họ, và được sử dụng với sử dụng một số công cụ  “presentationalist”, là gì khả năng tìm thấy các DOCTYPE tiện lợi nhất là của HTML 4.01 Transitional (đã được phê duyệt bởi W3C là một phiên bản nhỏ cho trước 4.0):

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”&gt;

 

DTD này bao gồm chỉ là về tất cả các thẻ và các thuộc tính mà trước đây được coi là Netscape hoặc Internet Explorer mở rộng, do đó hầu hết các trang hiện tại có thể được thực hiện hợp lệ hóa mà không làm mất tính năng quan trọng hoặc hy sinh ngoại hình. Các “đại gia” thẻ và thuộc tính mà không phải là trong DTD này có lẽ không phải là một ý tưởng tốt để sử dụng, bởi vì họ không nhất quán hỗ trợ trong cả các trình duyệt chính, hãy để một mình các trình duyệt khác.

Tuy nhiên, nếu bạn muốn “thắt chặt”, mã hợp lý hơn, với việc trình bày chuyển đến stylesheet thay vì thẻ presentational lỗi thời, sử dụng các loại tài liệu nghiêm ngặt:

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”&gt;

 

Loại tài liệu này không bao gồm nhiều thẻ presentational và các thuộc tính, gắn bó với cơ cấu hợp lý thuần túy (dự định sẽ được sử dụng cùng với stylesheets trong đó cung cấp các khuyến nghị trực quan cho các tài liệu).

 

Ngoài ra còn có một “Frameset” DOCTYPE:

 

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”&gt;

 

Điều này là để được sử dụng trên một tài liệu frameset. Các khung hình cá nhân nên sử dụng một DOCTYPE thường xuyên như HTML 4.01 Transitional.

 

Ngoài ra còn có doctypes khác nhau trước đó như 3.2 và 2.0. (3.0 đã không bao giờ được chấp thuận, và không nên được sử dụng, nó có tính năng khác nhau mà chưa bao giờ được thực hiện trong trình duyệt.) Nếu bạn muốn được rất thận trọng trong hỗ trợ của bạn cho các trình duyệt cũ, bạn có thể thử hợp lệ hóa tài liệu của bạn với một hoặc 2.0 3.2 DOCTYPE, nhưng điều này thường là không cần thiết nếu bạn cẩn thận để làm cho bạn sử dụng tính năng mới hơn làm suy giảm một cách khéo léo

 

Và với đó là DOCTYPE cho XHTML 1.0, đó là một phương pháp tái hoàn chỉnh của HTML là một ứng dụng XML, được thiết kế để tương thích với các trình duyệt hiện nay, nhưng với rất nhiều quy tắc cú pháp mới. Nếu bạn muốn thiết kế tài liệu của bạn với tiêu chuẩn mới này, đọc thông số kỹ thuật tại trang web W3 Consortium, sau đó sử dụng một trong những doctypes (nay đã chính thức được phê duyệt như là một khuyến cáo của W3C):

 

XHTML 1.0:

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”&gt;

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Frameset//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd”&gt;

 

Với XHTML, bạn cũng có nghĩa vụ phải sử dụng một khai báo XML ở đầu của tài liệu (trên các DOCTYPE):

 

<?xml version=”1.0″ encoding=”UTF-8″?>

 

… nhưng, không may, dòng này có vẻ lộn xộn lên một số phiên bản của MSIE cho Mac, làm cho chúng hiển thị các text/html như văn bản gốc thay vì HTML, mặc dù nó được gửi đi với các văn bản / html kiểu MIME chuẩn. (Vâng, một số người cố gắng để phục vụ các trang XHTML với một kiểu MIME text/html, đó là kỹ thuật chính xác hơn và đặt một số trình duyệt mới hơn trong chế độ tiêu chuẩn, kiểm tra nghiêm ngặt, nhưng điều đó là nguyên nhân dẫn đến thất bại hoàn toàn trong MSIE.) (Nhưng, sau đó một lần nữa, MSIE đã luôn luôn được biết với bỏ qua các loại MIME và làm những gì nó cảm thấy như đang làm.)

 

(UTF-8 đề cập đến các ký tự mã hóa;. Chắc chắn những gì bạn đặt ở đây tương ứng với các ký tự mã hóa, bạn thực sự đang sử dụng Nếu bạn chẳng có gì nhưng các ký tự ASCII không có ký tự đặc biệt nước ngoài hay các biểu tượng, nó không thực sự làm cho nhiều sự khác biệt, nhưng nó sẽ ảnh hưởng đến cách bạn mã hóa các ký tự khác.)

 

Một loại XHTML 1.1 tài liệu đã được phê duyệt bởi W3C là một đề nghị. Đây là sự phát triển trong tương lai cố gắng của XHTML với các yếu tố phản đối từ các phiên bản trước đó và loại bỏ một số thay đổi khác; nó hiện “chưa sẵn sàng cho thời gian đầu- not ready for prime time” vì các trình duyệt hiện nay không hỗ trợ nó tốt cho lắm, các yếu tố “quá độ” trong các phiên bản trước đó để tương thích với các trình duyệt cũ không được trình bày nữa.

 

Chỉ cần chắc chắn rằng, khi bạn quyết định sử dụng HTML hoặc XHTML, bạn chọn một hoặc khác và gắn bó với nó một cách nhất quán, như cú pháp được thiết kế cho một trong những sẽ gây ra lỗi xác nhận trong khác, mặc dù các trình duyệt là gì đủ trong thường cẩu thả phiên dịch từ các trang Web với muddle qua ngay cả một nửa trang-và-một nửa bastardized. dấu hiệu chắc chắn của sự phát triển Web dốt nát là khi cú pháp XHTML được sử dụng trong một trang với một DOCTYPE HTML, hoặc ngược lại, nhưng điều đó đang lan tràn trên các trang web ngày nay. Thường thì mọi người dán đoạn mã vào con quái vật của một trang Web có chứa một hỗn hợp của cả hai giống của Frankenstein. Bit của mã được cung cấp từ bên ngoài như các biểu ngữ liên kết và theo dõi điểm ảnh là người phạm phổ biến. Hãy chắc chắn rằng bạn chuyển đổi bất kỳ của họ bạn sử dụng vào các cú pháp thích hợp cho sự đa dạng HTML bạn đang sử dụng, và nói “vít bạn!” các nhà hoạch định của họ nếu họ cứ khăng khăng giữ bạn điều khoản hợp đồng rằng yêu cầu bạn không sửa đổi mã của họ.

 

HTML 5

 

HTML 5, nhiều hyped đã có, là không thực sự hoàn toàn đã được phê duyệt như các văn bản này, nhưng nó có một loại tài liệu. Chúng thực sự đã “Đơn giản thôi, thằng ngốc” câu châm ngôn với trái tim lần này: các DOCTYPE mới là:

 

<!DOCTYPE html>

 

Tôi không biết làm thế nào họ có ý định về tiêu chuẩn phân biệt trong tương lai, nên có bao giờ là bất kỳ; vì không có số phiên bản thực tế trong chuỗi này (nó phân biệt với doctypes HTML trước đó vì không ai trong số họ là khá ngắn này và đơn giản) có vẻ không phải là bất kỳ nơi nào để chỉ ra HTML 5.1 hoặc 6.0 lần chúng tồn tại.

 

ISO 15445

 

Ngoài ra còn có một HTML chuẩn ISO, có lợi ích của “trọng lượng” của một cơ quan tiêu chuẩn thực với ảnh hưởng nhiều hơn so với W3 Consortium; nó có là DOCTYPE của nó:

 

<!DOCTYPE HTML PUBLIC “ISO/IEC 15445:2000//DTD HTML//EN>

 

Các W3C Validator nhận ra điều này bây giờ. Các đặc điểm kỹ thuật tương tự như HTML của W3C 4.0 Strict. Xem hướng dẫn sử dụng này.

 

Bogus DOCTYPEs

 

Hãy cẩn thận với doctypes chèn hoặc thay đổi bởi editor WYSIWYG; nhiều trong số chúng sẽ đặt DOCTYPE họ yêu thích trong tất cả các tài liệu của bạn (thay thế bất kỳ một khác bạn có thể đã được đặt bằng tay), và điều này sẽ thường không có một mô tả chính xác các mã HTML editor đang tạo ra. Trong thực tế, một số doctypes biên tập tạo ra thậm chí không làm theo cú pháp thích hợp cho việc khai báo DOCTYPE, và sẽ gây ra validator từ chối xác nhận các tài liệu ở tất cả.

 

Links

 

Validators

Linters/Checkers

  • Link Exchange Site Inspector
  • Net Mechanic – Một trang web miễn phí rất hữu ích để kiểm tra cú pháp và các liên kết của trang web của bạn.
  • Doctor HTML
  • HTMLTidy – làm sạch lên HTML, báo cáo lỗi, và cho thấy những gì DOCTYPE được thích hợp cho một trang. (Command-line tiện ích có sẵn cho nhiều nền tảng;. Mã nguồn mở)
  • TidyUI – Giao diện người dùng của Windows cho HTMLTidy.
  • The (formerly misnamed) CSE Validator – Khởi đầu không thực sự là một validator, nhưng là một Linter. Bây giờ nó thực sự có một Validator chính hãng được xây dựng trên đó, nhưng chỉ như thêm một tính năng tùy chọn; do đó, tên của nó bây giờ chỉ có một chút sai lầm thay vì hoàn toàn sai lầm.

Tiện ích khác

Commentary, Etc.

 

[<== Trang trước] | [Đầu trang] | [Trang kế ==>]

 

This page was first created 24 Sep 1998, and was last modified 12 Nov 2011.

Copyright © 1997-2015 by Daniel R. Tobias. All rights reserved.

webmaster@webtips.dan.info

 

Advertisements