Accesskey n ใช้เพื่อข้ามไปยัง หน้าในของ navigation. ข้ามไปยังส่วนเริ่มต้นของเนื้อหา

เอกสารฉบับนี้เป็นเอกสารฉบับแปลในกรณีที่มีข้อมูลไม่ตรงกันหรือมีข้อบกพร่อง เอกสารดั้งเดิมฉบับภาษาอังกฤษ จะถือว่าเป็นฉบับที่เป็นทางการ ลิขสิทธิ์ดั้งเดิม เป็นของ W3C, ดังที่แสดงไว้ข้างล่าง

ผู้แปล: ลาวัณย์ นันทโววาทย์ (Lawan Nuntavovat), Webstar Thai

s_gotoW3cHome Internationalization
 

การใช้ XHTML 1.0

กลุ่มเป้าหมาย: ผู้เขียนโคด XHTML/HTML(uโดยใช้โปรแกรมหรือการเขียน scriptg), ผู้เขียน script เช่น PHP หรือ JSP, Web project managers, และใครก็ตามที่ต้องการคำแนะนำเกี่ยวกับรูปแบบการเขียนเวบ แบบไม่มาตรฐานและแบบมาตรฐาน, และวิีธีการประกาศค่า DOCTYPE และ XML นอกจากนี้ยังเป็นประโยชน์เบื้องต้นสำหรับผู้ที่ต้องการ เรียนรู้เกี่ยวกับ encode ภาษาในเอกสารต่างๆ

Note: Changes have been made to the English original since this document was translated. See the change log.

บทความนี้มีการอธิบายเพียงเล็กน้อยว่า server ส่ง XHTML ไปยังตัวแสดงผล เช่น browser ได้อย่างไร, และตัวแสดงผลทำอย่างไร
กับโคดที่ได้รับ บทความนี้จะอธิบายถึงวิธีการแก้ไขปัญหามากกว่าจะพูดถึงเกี่ยวกับมาตรฐานของ W3C

ข้อมูลเหล่านี้นำมาจากวิธีการสอนเกี่ยวกับ การประกาศค่าการ encode ภาษาในเอกสาร HTML หรือ XHTML หัวข้อเหล่านี้มีความสำคัญต่อการตัดสินใจดังกล่าว ข้อมูลเหล่านี้ยังมีประโยชน์ในการอธิบายว่าทำไมการใช้
CSS ในบางครั้งจึงไม่แสดงผลออกมาตามที่ต้องการหรือแสดงผลออกมาแตกต่างกันไปตามแต่ละ browser

ประเภทของ XHTML & MIME

เมื่อ server ส่งเอกสารมายังตัวแสดงผลเช่น brow serserver ยัง ส่งข้อมูลมาในลักษณะของ Content-Type ที่รวมถึงการใช้
HTTP ที่แสดงประเภทของข้อมูลว่าเป็นรูปแบบใด ข้อมูลดังกล่าวนี้แสดงถึงการใช้ประเภทของ MIME ด้วย ตัวอย่างข้างล่างนี้เป็นตัวอย่าง
ของการใช้ HTTP สำหรับไฟล์ html เป็นลักษณะ MIME ประเภท 'text/html'. ข้อควรจำก็คือการใช้ Content-Type ยังสามารถใช้แสดง
การ encode ภาษาของเอกสารได้อีกด้วย

HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
Content-Type: text/html; charset=utf-8
Content-Language: en

โดยปกติ serverจะส่งไฟล์ HTML 4.01 ด้วยลักษณะ MIME ประเภท text/html. HTML เป็น SGML application แบบหนึ่ง

แต่การแสดงผลจะไม่แสดงผลออกมาตามตรงหากมีการนำ XHTML 1.0 ซึ่งมีพื้นฐานของ XML มาใช้

หลายคนชอบใช้ XHTML มากกว่าเพราะมีการนำประโยชน์ของ XML ในการแก้ไขและแสดงผลของเอกสาร อย่างไรก็ตามไฟล์ XML ยังไม่ support ใน browser หลักๆ จริงๆแล้วไฟล์ XHTML 1.0 จึงถูกนำไปใช้ เป็น MIME ประเภท text/html นกรณีนี้ิ Browser จะอ่านค่าไฟล์นั้นเป็น HTML

เพื่อให้แน่ใจว่าความแตกต่างเล็กน้อยระหว่าง XML และ HTML ไม่มีผลกับ Browsers แบบเก่า เราควรจะทำตาม คำแนะนำในเรื่องการใช้งานให้ตรงกันใน Appendix C ในเรื่องการกำหนด XHTML เมื่อใช้ XHTML เป็น HTML คำแนะนำดังกล่าวแนะนำไว้ว่าเราควรจะเว้นช่องว่างไว้ก่อนตัว '/>' ในส่วนท้ายของ tag เปล่าเช่น img, hr หรือ br และเราควรจะใช้ทั้ง id และชื่อของ attribute สำหรับตัวบอกค่าในแต่ละส่วน

นอกจากนี้ XHTML 1.0 ยังใช้เป็น XML ได้ และ XHTML 1.1 มักจะใช้เป็น XML เสมอ เมื่อเราใช้ XHTML เป็น XML เราจะใช้ MIME ประเภท application/xhtml+xml application/xml หรือ text/xml W3C แนะนำ ให้ใช้ XHTML เป็น XML โดยใช้ประเภทของ MIME แบบแรกเท่านั้นนั่นคือ. application/xhtml+xml.

ควรจะมีการแจ้งให้ทราบความจริงที่ว่าการใช้ XHTML เป็น HTML หรือ XML ทำให้เกิดความแตกต่างในการ encoding ข้อมูล

การแสดงผลแบบมาตรฐานและไม่มาตรฐาน

ฺฺฺBrowser หลักๆในปัจจุบันอาจจะมีการแสดงผล HTML ไฟล์ได้ทั้งแบบมาตรฐานและไม่มาตรฐาน นั่นหมายถึงว่ามีการใช้กฏที่แตกต่างกันในการแสดงผลของไฟล์ แบบหนึ่งคือใช้ตามการแปลความหมายตามที่ ได้มีการกำหนดไว้ตามหลักพื้นฐานของ W3C อีกแบบคือใช้ตามแบบที่ไม่ได้มาตรฐานของ browser รุ่นเก่า

การบันทึกภาพหน้าจอข้างล่างแสดงถึงความแตกต่างกันดังกล่าว

เอกสารที่ถูกอ่านค่าตามแบบมาตรฐาน เอกสารเดียวกันที่ถูกอ่านค่าตามแบบไม่มาตรฐาน
Picture of a file displayed in standards mode. Picture of the same file displayed in quirks mode.

ความแตกต่างที่แสดงไว้ตามภาพข้างบนรวมไปถึงเรื่องต่างๆดังนี้:

ภาพทั้งสองแสดงในหน้าเดียวกันโดยใช้โคดและ CSS แบบเดียวกัน ความแตกต่างเพียงอย่างเดียวของ source ทั้งสอง
ไฟล์คือไฟล์ด้านซ้ายมี การประกาศ DOCTYPE ด้านบนอีกด้านหนึ่งไม่มี ไฟล์ที่มีการประกาศ DOCTYPE ที่เหมาะสม
มักจะอ่านค่าได้ในแบบมาตรฐาน ในเวอร์ชั่นปัจจุบันของ browser ส่วนใหญ่ หากไม่มีการประกาศ DOCTYPE แล้ว
การอ่านค่าก็จะไม่ได้มาตรฐาน

Browser ที่เปลี่ยนค่าระหว่างแบบมาตรฐานและไม่มาตรฐาน นั้นเรามักจะเรียกว่าเป็นการ 'การสลับค่าการประกาศDOCTYPE'

ตัวอย่างต่อไปนี้แสดงให้เห็นถึง source ที่มีการประกาศ DOCTYPE ด้านบน (ไฮไลท์ด้วยสีแดงตัวเอียง).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xml‎ns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 
    <title>xhtml document</title> 
    <style type="text/css">
    body { background: white; color: black; font-family: arial, sans-serif; font-size: 25px; }
    p { font-size: 50%; }
    h1 { font-size: 16px; }
    div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
    </style> 
    </head> 
<body> 
    <h1>Test file for Standards Mode</h1> 
    <div>
        <p> Here is some text in a p in a div. </p>
        </div> 
    <table border="1"> 
        <tr><td><p>Text in p tag.</p></td>
              <td><p>Text in p tag.</p></td> 
              </tr> 
        <tr><td>No p tag.</td>
              <td>No p tag.</td> 
              </tr>
        </table>
    </body> 
</html> 

โดยปกติแล้วเราควรจะต้องแสดงผลแบบมาตรฐานนั่นก็คือควรจะมีการประกาศค่า DOCTYPE นั่นเอง

การประกาศค่าของ xml

เนื่องจาก XHTML 1.0 นั้นมีพื้นฐานมาจาก XML ดังนั้นเราก็ควรประกาศค่าของ XML ในส่วนบนของ
โคดด้วยเช่นกันแม้ว่าจะนำมาใช้เป็นไฟล์ HTML ก็ตาม ซึ่งจะทำให้ด้านบนของไฟล์แสดงผลออกมาดังต่อ
ไปนี้ (การแสดงผลของ xml จะไฮไลท์สีแดงตัวเอียง):

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xml‎ns="http://www.w3.org/1999/xhtml">
<head>
...

browser Mozilla Netscape Opera และอื่นๆแม้ว่าจะมีการประกาศค่าของ xml หรือไม่ก็ตามหากมี การประกาศค่า DOCTYPE หน้าเวบดังกล่าวจะถูกอ่านค่าแบบมาตรฐาน

อย่างไรก็ตามสำหรับ Internet Explorer หากมีสิ่งใดปรากฎก่อนการประกาศค่า DOCTYPE หน้าเวบดัง กล่าวจะถูกอ่านค่าแบบไม่มาตรฐาน เนื่องจากมีจำนวนผู้ใช้ Internet Explorer จำนวนมากจุดนี้จึงเป็น เรื่องสำคัญ หากเราต้องการแน่ใจว่าหน้าเวบของเรามีการอ่านค่าของ browser แบบมาตรฐานเราจะต้อง คำนึงถึงเรื่องนี้ว่าเราจะต้องทำอย่างไรบ้าง

มีทางเลือกอีกทางหนึ่งคือ แน่นอนว่าหากเอกสารของคุณประกอบไปด้วยโครงสร้างที่ไม่มีผลกับความแตกต่าง ระหว่างการแสดงผลแบบมาตรฐานและไม่ได้มาตรฐานก็จะไม่มีผลกระทบอะไร ในทางกลับกันก็ไม่ใช่กรณีที่ เราจะต้องเพิ่มเติมแก้ไข CSS เพื่อให้ไม่เห็นความแตกต่างหรือการไม่แสดงการประกาศค่า XML

การกำหนด XHTML ยังเป็น การเตือน ว่าการส่งผ่านคำสั่งได้ถูกอ่านค่าใน Browsers บางตัว นอกจากนี้ browser
บางตัวอ่านการประกาศค่า XML ว่าเอกสารดังกล่าวเป็น XML ที่ไม่รู้จักแทนที่จะเป็น HTML ดังนั้นเอกสารดังกล่าว จะไม่ได้ถูกอ่านค่าตามแบบที่ได้คาดไว้ เราควรจะทดสอบในหลายๆ browser เพื่อตัดสินว่าจะเป็นปัญหาหรือไม่

ข้อควรจำก็คือ หากเราตัดสินใจจะไม่ประกาศค่า XML เราควรจะเลือก UTF-8 หรือ UTF-16 ในการ encodeให้ กับหน้าเวบ(ให้ดูในส่วน ชุดตัวอักษรและการ encodeใน XHTML HTML และ CSSสำหรับข้อมูลเพิ่มเติม เกี่ยวกับผลกระทบจากการ encode และการประกาศค่า)

บทสรุป

XHTML 1.0 สามารถใช้เป็นได้ทั้ง HTML หรือ XML ถ้าเราใช้เป็น XML ให้ใช้ MIME ประเภท xhtml+xml


โดยทั่วไปแล้วการประกาศค่า DOCTYPE ในส่วนบนของ HTML หรือ XHTML ไฟล์เป็นสิ่งที่ควรกระทำเพื่อที่ว่า เอกสารดังกล่าวจะได้ถูกอ่านค่าแบบมาตรฐานใน browsers ล่าสุดส่วนใหญ่

การแสดงการประกาศค่า XML ในไฟล์ XHTML 1.0 โดยให้ใช้เป็น HTML จะทำให้ไฟล์ของเราอ่านค่าแบบ ไม่มาตรฐานใน Internet Explorer (ซึ่งน่าจะเป็นกลุ่มเป้าหมายส่วนใหญ่)

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับหัวข้อเหล่านี้ให้ดูจาก ลิงค์ที่เกี่ยวข้อง และตรวจสอบหน้าที่ได้ระบุไว้

บอกเราด้วยว่าคุณคิดอย่างไร (ภาษาอังกฤษ)

ลงทะเบียนรับข่าวสาร RSS ฟีด

เว็บใหม่

โฮมเพจรายงานข่าว

Twitter (โฮมเพจรายงานข่าว)

‎@webi18n

อ่านเพิ่มเติม

ผู้แต่ง: Richard Ishida, W3C ผู้แปล: ลาวัณย์ นันทโววาทย์ (Lawan Nuntavovat), Webstar Thai

XHTML 1.0!ที่อ่านค่าได้
CSS! ที่อ่านค่าได้
ได้รับการแปลงโคดเป็น UTF-8! แล้ว

แปลมาจากบทความภาษาอังกฤษลงวันที่ 2005-07-04. เวอร์ชั่นแปลฉบับที่เปลี่ยนแปลงลครั้งล่าสุด 2010-08-20 9:38 GMT

สำหรับการเปลี่ยนแปลงเอกสารเก่า, ค้นหา article-serving-xhtml ในบล๊อก i18n