ทำไมไม่ XHTML5


53

ดังนั้น HTML5 คือการก้าวไปข้างหน้าอย่างยิ่งใหญ่ ขั้นตอนสุดท้ายที่เราทำคือสิ่งที่ฉันรู้คือการแนะนำ XHTML ข้อดีคือชัดเจน: ความเรียบง่าย, ความเข้มงวด, ความสามารถในการใช้ตัวแยกวิเคราะห์ XML มาตรฐานและเครื่องกำเนิดไฟฟ้าเพื่อทำงานกับเว็บเพจและอื่น ๆ

HTML5 นั้นแปลกและน่าหงุดหงิดและน่าหงุดหงิดเหลือเกิน: เราทำงานร่วมกับไวยากรณ์ที่ไม่ได้มาตรฐานอีกครั้ง อีกครั้งเราต้องจัดการกับสัมภาระในอดีตและความซับซ้อนในการแยกวิเคราะห์; อีกครั้งเราไม่สามารถใช้ไลบรารี XML ตัวแยกวิเคราะห์เครื่องกำเนิดไฟฟ้าหรือหม้อแปลงของเรา และข้อได้เปรียบทั้งหมดที่แนะนำโดย XML (ความสามารถในการขยาย, เนมสเปซ, มาตรฐานและอื่น ๆ ) ที่ W3C ใช้เวลาทศวรรษผลักดันด้วยเหตุผลที่ดีหายไป

ไม่เป็นไรเรามี XHTML5 แต่ดูเหมือนว่าจะไม่ได้รับความนิยมเหมือนการเข้ารหัส HTML5 ดูคำถาม SOเช่นนี้ แม้แต่ข้อมูลจำเพาะ HTML5บอกว่า HTML5 ไม่ใช่ XHTML5 "เป็นรูปแบบที่แนะนำสำหรับผู้แต่งส่วนใหญ่"

ฉันมีข้อเท็จจริงที่ผิดหรือเปล่า? มิฉะนั้นทำไมฉันเป็นคนเดียวที่รู้สึกแบบนี้ ทำไมคนเลือก HTML5 มากกว่า XHTML5


6
+1 ฉันเห็นว่าฉันไม่ใช่คนเดียวที่ผิดหวังกับการสูญเสียข้อดี XML ทั้งหมดใน HTML5
Arseni Mourzenko

ตอบคำถามได้ดีมาก
Konrad Rudolph

1
ฉันหวังว่าฉันไม่ใช่คนเดียวที่ยินดีกับการสูญเสียข้อเสียของ XML ทั้งหมดใน HTML5 ตัวอย่างเช่นลองเปรียบเทียบ HTML5 ที่ถูกต้องกับ XHTML ที่ถูกต้อง HTML5 <!DOCTYPE html>Hello World<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"><html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml"><head><title></title></head><body>Hello World</body></html>
:,

@zzzzBov คุณไม่ใช่คนเดียวที่ดีใจที่สุดและนั่นคือสาเหตุที่ฉันถามคำถามนี้ตั้งแต่แรก นอกจากนี้: คุณจะไม่เขียนจริงจัง<!DOCTYPE html>Hello Worldคุณจะ? ลองใช้ตัวตรวจสอบนี้
jameshfisher

1
@eegg เห็นได้ชัดว่าคุณยังไม่ได้อ่านข้อกำหนดเกี่ยวกับแท็กเริ่มต้นที่เป็นตัวเลือกเพราะฉันจะเขียนอย่างจริงจัง<!DOCTYPE html>Hello World!เนื่องจากเป็น HTML5 ที่ถูกต้องสมบูรณ์ เอกสารที่สั้นกว่าหมายถึงแบนด์วิดท์ที่น้อยกว่าซึ่งมีค่าเท่ากับเงินออมที่สำคัญสำหรับ บริษัท ขนาดใหญ่ (คุณเคยเห็นสิ่งที่ Google ส่งให้ www.google.com หรือไม่)
zzzzBov

คำตอบ:


25

ฉันอยากจะแนะนำให้อ่านว่าเรามาที่นี่ได้อย่างไร . Mark Pilgrim ให้ประวัติ HTML ที่ยอดเยี่ยมและสั้น ๆ ถึง HTML5

โดยพื้นฐานแล้วความเข้าใจของฉันคือหน้าเว็บจำนวนมากไม่ได้ใช้ประโยชน์จาก "X" ของ XHTML เพราะพวกเขาไม่ได้ระบุประเภท MIME ที่เหมาะสมสำหรับมัน


18
ใช่. บทสรุปของฉันเกี่ยวกับเรื่องนั้นคือ "เฮ้ไม่มีใครทำตามข้อกำหนดบางทีเราอาจทำให้พวกเขาเป็นไปตามข้อกำหนดโดยระบุว่าผู้คนสามารถทำผิดพลาดได้ตามที่ต้องการในที่สุดเอกสารทั้งหมดของเราจะปราศจากข้อผิดพลาด และเป็นไปตามมาตรฐาน " ไม่มีสิ่งใดที่ดีมาจากการเขียนสเปคที่มีข้อสันนิษฐานเบื้องต้นว่าไม่มีใครเคารพข้อกำหนด
jameshfisher

1
@eegg บรรทัดสุดท้ายของคุณแสดงถึงความไม่รู้ในความเป็นจริง จำนวนมากได้ดีได้มาแล้วจากสมมติว่าไม่มีใครสมบูรณ์แบบ แทนที่จะบอกว่า "ถ้าคุณทำผิดพลาดทุกอย่างจะพัง" แทนที่จะพูดว่า "ถ้าคุณทำ [ความผิดพลาดประเภทนี้] ดังนั้น [ผลลัพธ์นี้] คือสิ่งที่จะเกิดขึ้น" จะมีหนังสืออยู่บนชั้นวางของเรากี่เล่มหากพวกเขาต้องสะกดถูกต้องเครื่องหมายวรรคตอนและไวยากรณ์ที่ถูกต้อง 100% เพื่อให้พวกเขาตีพิมพ์
zzzzBov

6
@zzzzBov การเปรียบเทียบของคุณกับหนังสือที่ตีพิมพ์เป็นเรื่องแปลก เหตุใดตัวแยกวิเคราะห์ HTML ควรมีการให้อภัยมากกว่าตัวแยกวิเคราะห์สำหรับ [ภาษาอื่น ๆ ที่นี่] ซึ่งข้อผิดพลาดทางไวยากรณ์ถูกพบพร้อมกับข้อความแสดงข้อผิดพลาด ลองนึกภาพความโกลาหลที่เราจะอยู่ในนั้นหากคอมไพเลอร์ C ของเราพยายามอย่างเต็มที่เพื่อตีความไวยากรณ์ที่ผิดพลาด
jameshfisher

@eegg ฉันสามารถภาพสิ่งที่จะเกิดขึ้นหาก parser สำหรับภาษาอื่น ๆ ตอบสนองต่อข้อผิดพลาดทางไวยากรณ์ในลักษณะที่ให้อภัยมากขึ้น: เราจะใช้เวลาน้อยลงในการค้นหาวงเล็บเหลี่ยมที่ใส่ผิดที่และกึ่ง colons ที่ขาดหายไป ผมไม่ได้บอกว่าดีโปรแกรมเมอร์จะไม่ยังคงทำโปรแกรมของพวกเขาดีขึ้น แต่แน่นอนจะช่วยปานกลางโปรแกรมเมอร์เขียนโค้ดการทำงาน Cโปรแกรมอาจจะสิ้นสุดขึ้นมองมากขึ้นคล้ายกับPythonโปรแกรมในที่กึ่งทวิภาคและวงเล็บส่วนใหญ่จะหายไปและสิ่งที่จะถูกทิ้งไว้เป็นรหัสที่สำคัญ
zzzzBov

“ ทรัพยากรที่ร้องขอ/past.htmlไม่สามารถใช้งานบนเซิร์ฟเวอร์นี้ได้อีกต่อไปและไม่มีที่อยู่สำหรับส่งต่อ”
Marco

6

หากคุณสร้าง hml5 ที่รองรับ xml และส่งด้วย xml เป็นประเภท mime ดังนั้น xml parser จะถูกใช้ทั้งหมดที่แจ๊สดีๆกลับมา;)

แก้ไข: ดูที่สำหรับข้อมูลเพิ่มเติม: http://wiki.whatwg.org/wiki/HTML_vs._XHTML


กำหนด "แจ๊สที่ดี" AFAIK ไม่มีข้อได้เปรียบในการแยกวิเคราะห์ HTML เป็น XML การสร้างและการแปลงเป็นเรื่องอื่น ๆ สิ่งเหล่านี้สามารถทำได้อย่างสะดวก แต่การแยกวิเคราะห์ด้วยตัวเองไม่ได้ให้ประโยชน์อะไรเลยมีเพียงข้อเสียเท่านั้น
Joeri Sebrechts

3
@Joeri ความจริงที่ว่ามันง่ายกว่าในการแยกวิเคราะห์เป็นข้อได้เปรียบในหนังสือของฉันด้วยเหตุผลหลายประการ (การแยกวิเคราะห์อย่างเข้มงวดช่วยให้การค้นหาข้อผิดพลาดสนับสนุนเครื่องมือที่ดีกว่าเพราะเครื่องมือง่ายต่อการเขียน
Konrad Rudolph

นอกจากนี้คุณยังสามารถให้ฟังก์ชันการทำงานบางอย่างไม่พร้อมใช้งานใน html มาตรฐานเช่น micin xhtml ที่มีเนื้อหา xml อื่น ๆ และ Generaly ใช้ฟังก์ชั่น xml ทั้งหมด, namespaces สำหรับ exemple ตัวแยกวิเคราะห์ html สามารถแก้ไขซอร์สโค้ดที่ไม่ดี - บั๊กเครื่องสำอางตามที่คุณเรียกว่า - แต่การแก้ไขเหล่านั้นมีราคา ราคาคือเบราว์เซอร์จำเป็นต้องรู้ว่ามีอะไรน่าจะพบในโค้ดดังนั้นจึง จำกัด ฟังก์ชั่นปริมาณข้อมูลที่มีอยู่
deadalnix

3

HTML5 เป็นข้อสรุปที่สมเหตุสมผลและหลีกเลี่ยงไม่ได้สำหรับเบราว์เซอร์ที่ใช้กฎหมายของ Postel ("มีอิสระในสิ่งที่คุณยอมรับ")

เมื่อเบราว์เซอร์หนึ่งที่มีส่วนแบ่งการตลาดที่เพียงพอนำหลักการนี้มาใช้เบราว์เซอร์อื่น ๆ จะถูกบังคับให้ทำตามไม่เพียง แต่จะเปิดเสรีเท่านั้นโดยยอมรับเนื้อหาที่ไม่สอดคล้อง แต่ยังแสดงผลในลักษณะเดียวกับที่คู่แข่งทำ HTML5 เป็นผลลัพธ์เชิงตรรกะของสถานการณ์ดังกล่าว: ผู้ขายเบราว์เซอร์ได้ตัดสินใจว่าเนื่องจากพวกเขาจะไม่ปฏิเสธเนื้อหาใด ๆ ที่ไม่ถูกต้อง (อย่างน้อยไม่ได้อยู่ในระดับ HTML - Javascript เป็นอีกเรื่องหนึ่ง!) ตารางและยอมรับการตีความสำหรับสิ่งที่ผู้เขียนเนื้อหาอาจโยนไปที่พวกเขา ในสภาพแวดล้อมเช่นนี้พวกเขาไม่ได้ตอบโต้ด้วยความสุภาพต่อผู้ที่มีมาตรฐานบอกพวกเขาว่าหากพวกเขาปฏิเสธเนื้อหาที่ไม่เหมาะสมจากคำว่าไปพวกเขาจะไม่เข้ายุ่งกับเรื่องนี้

ดังนั้นคุณและฉันสามารถตะโกนออกมาจากข้างสนามและบอกผู้จำหน่ายเบราว์เซอร์และผู้ใช้ของพวกเขาว่าโลกน่าจะดีกว่านี้หากพวกเขาไม่เชื่อจอห์นโพสเทล แต่ความเสียหายเกิดขึ้นและยากที่จะยกเลิก


3
เรื่องราวของความไม่ลงรอยกันในการแข่งขันของเบราว์เซอร์นั้นเป็นจริงเพียงพอ แต่นี่คือสิ่งที่: นั่นเป็นเหตุผลที่ geeks มาตรฐานอยู่ หากเบราว์เซอร์ทั้งหมดถูกบังคับใช้อย่างตรงไปตรงมาและแคบลงตั้งแต่เริ่มต้นองค์กรเช่น W3C ไม่จำเป็นต้องอยู่ที่นี่เพื่อควบคุมทุกสิ่ง จุดทั้งหมดของมาตรฐานคือการควบคุมความเสียหาย สำหรับร่างกายมาตรฐานในการให้และยอมรับความโลภเอาชนะจุดประสงค์ของมัน
jameshfisher

1
@eegg: HTML5 กำหนดกฎการแยกวิเคราะห์ใหม่เพื่อให้การป้อนข้อมูลทั้งหมดถูกต้องและยังคงมีผลที่คาดการณ์ได้ หากข้อผิดพลาดทางไวยากรณ์เป็นไปไม่ได้คลาสของบั๊กทั้งหมดจะถูกตัดออกจากจุดเริ่มต้น ความสามารถของ XML ในการมีข้อผิดพลาดในการแยกวิเคราะห์เป็นข้อบกพร่องในการออกแบบและควรได้รับการยอมรับเช่นนี้
Joeri Sebrechts

1
@ Joeri ตำแหน่งของคุณน่าจะเป็นข้อมูลจำเพาะของ HTML5 ซึ่งนำไปสู่ข้อสรุปเชิงตรรกะที่บ้า "HTML5 กำหนดกฎการแยกวิเคราะห์ใหม่เพื่อให้การป้อนข้อมูลทั้งหมดถูกต้อง" - ไม่ใช่ แนวคิดของการแยกวิเคราะห์ข้อผิดพลาดยังคงมีอยู่ "หากข้อผิดพลาดทางไวยากรณ์เป็นไปไม่ได้ข้อบกพร่องของคลาสทั้งหมดจะถูกตัดออกจากจุดเริ่มต้น" - นี่อาจเป็นการล้อเลียน? ตรรกะนี้เป็นสิ่งที่ฉันถอดความเสียดสีในความคิดเห็นของฉันที่จะตอบ @pthesis ' ใช่ระดับของข้อผิดพลาดไวยากรณ์จะถูกลบออกจะถูกแทนที่โดยชั้นขนาดใหญ่ของเบราว์เซอร์ข้อผิดพลาดการแก้ไขไวยากรณ์
jameshfisher

2

ข้อมูลจำเพาะ HTML5 ได้รับการปรับปรุงอย่างมากเหนือข้อกำหนด HTML4 โดยเฉพาะอย่างยิ่งการจัดการเงื่อนไขข้อผิดพลาดและมาร์กอัปที่ไม่ถูกต้องเป็นมาตรฐานจริงซึ่งหมายความว่าเบราว์เซอร์ทั้งหมดที่ใช้มาตรฐานถูกต้องจะจัดการมาร์กอัปที่ไม่ถูกต้องในลักษณะเดียวกัน

HTML เขียนโดยมนุษย์บ่อยกว่าไม่ใช่ (โดยทั่วไปจะใช้ร่วมกับภาษาของการสร้างเท็มเพลต) และมนุษย์ทำผิดพลาด ตราบใดที่เบราว์เซอร์ทุกตัวจัดการข้อผิดพลาดทางไวยากรณ์ในทางเดียวกันกฎ "แบบเสรีในสิ่งที่คุณยอมรับ" ก็เป็นที่ยอมรับอย่างสมบูรณ์

มีข้อได้เปรียบเล็กน้อยในการสร้าง XML ที่ถูกต้องเนื่องจากเครื่องมือและไลบรารีเพื่อจัดการ HTML นั้นเกือบจะพร้อมใช้งานและ HTML ก็ง่ายกว่าที่มนุษย์จะเขียนได้ง่ายกว่า XML


เหนือข้อกำหนดของHTML4ใช่ แต่ประเด็นของฉันคือ XHTML1.1 ได้รับการปรับปรุงแล้ว เครื่องมือ / ไลบรารีเพื่อจัดการ HTML มีแนวโน้มที่จะเป็นBeautifulSoup - ในขณะที่เครื่องมือที่ยอดเยี่ยมพวกเขาควรจะตายพร้อมกับหน้าเว็บที่พวกเขาทำเพื่อแยกวิเคราะห์
jameshfisher

1

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

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

ในฝั่งเซิร์ฟเวอร์คุณยังสามารถใช้ประโยชน์จากเครื่องมือ XML ได้เช่น สร้าง XHTML โดยใช้ XSLT แต่ถ้าคุณไม่ได้ใช้ XML toolchain โดยเฉพาะจะไม่มีประโยชน์ในการใช้ไวยากรณ์ XML มากกว่า HTML

(คุณไม่ถูกต้องว่า HTML นั้นเป็นไวยากรณ์ "ที่ไม่ได้มาตรฐาน" ไวยากรณ์ของ HTML ถูกระบุในรายละเอียดที่อุตสาหะใน spec ของ HTML5 ดังนั้นมันจึงเป็นมาตรฐานเดียวกับไวยากรณ์ XML)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.