2012-09-27 9 views
6

(Tôi quan tâm đến HTML 4,01 HTML5, nếu cần có sự khác biệt)Phần tử `img` có thuộc tính` lang`: ngôn ngữ của chính hình ảnh đó?

Liệu các lang thuộc tính trên một yếu tố img áp dụng đối với các thuộc tính src, quá? Hay nó chỉ dành cho các thuộc tính alttitle?

Ví dụ:

<img src="example.png" alt="a red foobar" lang="en" /> 

Là hình ảnh "example.png" coi là bằng tiếng Anh? (hãy nghĩ về ảnh chụp màn hình của một chuỗi diễn đàn hoặc một bản trình bày đồ họa của một từ hoặc một bản quét tài liệu)

Nếu đúng, hình ảnh có nội dung không phải ngôn ngữ sẽ cần nhận được lang="zxx". Nhưng điều đó cũng sẽ áp dụng cho các thuộc tính alt/title, điều này sẽ không chính xác.

Trả lời

5

HTML 4.01 defines thuộc tính lang như quy định cụ thể “ngôn ngữ cơ sở của thuộc tính giá trị và văn bản nội dung của một nguyên tố”, trong khi HTML5 defines nó như là “ngôn ngữ chính cho nội dung của phần tử và cho bất kỳ các thuộc tính của phần tử có chứa văn bản”. Sự khác biệt rõ ràng là chỉ trong công thức. Thuộc tính lang chỉ định ngôn ngữ thuộc tính alttitle cũng như các thuộc tính khác có thể chứa văn bản văn xuôi, ngược lại với các giá trị như mã hoặc thuộc tính style, trong đó ngôn ngữ (con người) không được áp dụng.

Bản thân thuộc tính src không phải là ngôn ngữ (con người), một cách hợp lý.Vì vậy, câu hỏi là liệu thuộc tính lang có kéo dài đến hình ảnh được biểu thị bởi thuộc tính src hay không. Đây là một câu hỏi khá lý thuyết - những gì tác động đến hành vi phần mềm có thể là câu trả lời có thể có? Dù sao, câu trả lời phụ thuộc vào những gì chúng ta hiểu là “nội dung văn bản” (hình ảnh có văn bản theo nghĩa, nhưng định dạng HTML 4.01 có nghĩa là chỉ tham chiếu đến dữ liệu ký tự thực) và là “nội dung của phần tử” (là phần hình ảnh của nội dung của phần tử img?). Nhìn chung, có vẻ như ngôn ngữ của hình ảnh (mặc dù một khái niệm khả thi) không thể được chỉ định trong HTML.

Vì vậy, không cần phải lo lắng về hình ảnh có nội dung không phải ngôn ngữ. Đối với nội dung văn bản "không phải ngôn ngữ" (tức là không phải văn bản bằng bất kỳ ngôn ngữ nào của con người nhưng ví dụ: một số ký hiệu mã hoặc chuỗi ký tự ngẫu nhiên), sử dụng lang="" là những gì HTML5 đề xuất. Đó cũng là cách tiếp cận thực tế. Trong một vài trường hợp, thuộc tính whete lang có bất kỳ tác động nào, như trong dấu gạch ngang tự động, lang="" có nghĩa là không có quy tắc ngôn ngữ nào được áp dụng (ví dụ: không có dấu gạch ngang). Điều này khác với việc bỏ thuộc tính, có nghĩa là phần tử thừa kế thông tin ngôn ngữ từ cha mẹ của nó.

+0

Không bao giờ biết 'lang' chấp nhận một chuỗi rỗng, nhưng nó có ý nghĩa để làm như vậy. 'Lang =" "' có bao giờ hợp lệ trước HTML5 không? – BoltClock

+0

@BoltClock, 'lang =" "' không hợp lệ trong HTML 4.01 (ngay cả theo nghĩa chính thức), vì nó khai báo thuộc tính với giá trị 'NAME'. Nhưng HTML 4.01 khá lỗi thời về mặt này. XHTML5 trích dẫn BCP 47, định nghĩa rõ ràng chuỗi rỗng là một mã ngôn ngữ có thể. –

+0

Về giá trị 'lang': Giá trị' zxx' có nghĩa là "không có nội dung ngôn ngữ", trong khi giá trị rỗng cũng có nghĩa là "không xác định" (tương tự như 'und' cho" chưa xác định ") hoặc tôi có sai không? – unor

2

Trong HTML 4.01, section 13.8 nói:

Ngôn ngữ của văn bản thay thế được xác định bởi thuộc tính lang.

Trong HTML5, it says:

Chỉ định ngôn ngữ chính về nội dung của nguyên tố này và cho bất kỳ các thuộc tính của phần tử có chứa văn bản.

Tôi không thể tìm thấy bất kỳ nội dung nào trong bản nháp HTML5 hiện tại xác định mối quan hệ giữa các thuộc tính altlang rõ ràng như thông số HTML 4.01. Hy vọng rằng nó sẽ được làm rõ sau đó, nhưng tôi sẽ giả định cho bây giờ mà không có bất kỳ thay đổi, và rằng những gì nó không nhà nước chỉ là áp dụng.

Không có thông số nào nêu rõ mối quan hệ rõ ràng giữa thuộc tính srclang, nhưng tôi không cho rằng ngôn ngữ của hình ảnh nguồn tương ứng với thuộc tính lang, vì không phải tất cả hình ảnh đều có nội dung ngôn ngữ đề cập).

Tương tự với titlelang, nhưng điều này có thể phụ thuộc vào loại phần tử, tôi không hoàn toàn chắc chắn. Một lần nữa, những gì nó không nhà nước nói chung ở trên nên được áp dụng cho title.