XHTML5 ตายหรือเป็นเพียงคำพ้องความหมายของ HTML5


87

แล้วเกิดอะไรขึ้นกับ XHTML5

http://www.w3.org/TR/html5/

หน้านั้นเป็นแบบร่างสำหรับ xhtml5 และ html5 หรือไม่ ดังนั้นจึงไม่มีความแตกต่างระหว่างหลักคำสอนเหล่านี้หรือไม่


1
ดูเหมือนว่าตั้งแต่ 2014-12-08 ที่ W3C ยังคงทำงานกับมาตรฐาน w3.org/TR/html5และw3.org/TR/html5/the-xhtml-syntax.htmlได้รับการอัปเดต 2014-10-28
Russel Winder

6
ทุกวันนี้ปี 2558 XHTML เป็นมาตรฐาน W3C! ... ดูการสนทนาที่อัปเดต
Peter Krauss

2
คุณยอมรับคำตอบที่ผิด คำตอบโดย vaxquis เป็นคำตอบที่ถูกต้อง
JacquesB

คำตอบ:


77

ในปี 2012ในขณะที่เขียนเป็นที่ชัดเจนว่า W3C ตัดสินใจที่จะละทิ้ง XHTML สำหรับ HTML 5 การตัดสินใจครั้งนี้มีสาเหตุหลายประการ:

  • มีเพียงไม่กี่คนที่สนใจ XHTML จริงๆ เว็บไซต์ส่วนใหญ่เขียนด้วย HTML ธรรมดา

  • แม้แต่น้อยที่เข้าใจจริงๆว่า XHTML เกี่ยวกับอะไรและใช้อย่างไร เว็บไซต์ที่มากเกินไปซึ่งแสร้งทำเป็นจะให้บริการ XHTML Content-Type: application/xhtml+xmlใช้ส่วนหัวผิดแทน

  • แม้ว่าคุณจะเข้าใจอย่างถ่องแท้ว่า XHTML คืออะไรและต้องเป็นส่วนหัวอะไรก็ตามเป็นเรื่องที่ยุ่งยากมากสำหรับเบราว์เซอร์เส็งเคร็งบางตัวที่ไม่ยอมรับ / สนับสนุนapplication/xhtml+xmlประเภทเนื้อหา หมายความว่าคุณต้องเปลี่ยนส่วนหัวตามเบราว์เซอร์

  • ส่วน XML ของ XHTML ยังทำให้เกิดสถานการณ์แปลก ๆ ที่นักพัฒนาต้องแก้ไข หนึ่งคือINVALID_STATE_ERR: DOM Exception 11ข้อความที่ปรากฏขึ้นเมื่อคุณกำหนดข้อความที่มีอักขระ HTML (เช่นé) ให้กับองค์ประกอบภายในหน้า XHTML เมื่อคุณพบข้อผิดพลาดนี้พร้อมกับข้อความที่เป็นประโยชน์มากในเว็บแอปพลิเคชันขนาดใหญ่หลังจากทำคำขอ AJAX คุณไม่ทราบเลยว่าเป็นความผิดของ JQuery, AJAX หรืออย่างอื่น

  • การเขียนโค้ด HTML 5 ไม่ได้หมายถึงการผสมแท็กเข้าด้วยกัน หากคุณหลงใหลเกี่ยวกับ XML และ XHTML คุณยังคงสามารถเขียนโค้ด HTML 5 ซึ่งจะใกล้เคียงกับ XML มาก

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

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


11
ผมคิดว่าสิ่งเดียวที่คำตอบของคุณจะหายไปคือการอ้างอิงถึงมาร์กอัปพูดได้หลายภาษา
Yannis

2
อย่างไรก็ตามคุณสามารถใช้ HTML5 เป็น XML และได้รับประโยชน์จากไวยากรณ์ที่เข้มงวดขึ้น
Erik Reppen

3
@ErikReppen แต่คุณจะเสียประโยชน์จากการอ้างอิงเอนทิตีเช่น 
Mr Lister

4
การตัดสินใจที่น่ากลัว เราโยนเครื่องมือ XSL ที่จะใช้งานได้กับ XML
หมดเวลา Danila

5
คำสั่งนี้เป็นเท็จ W3C ไม่ได้ละทิ้ง XHTML ใน HTML5 ไวยากรณ์ XHTML คำศัพท์และ APIs
Rob

32

XHTML5 เป็นคำพ้องความหมายสำหรับ "HTML5 ต่อเนื่องเป็น XML"

มีไวยากรณ์ที่เป็นรูปธรรมหลายรูปแบบที่สามารถใช้เพื่อส่งผ่านทรัพยากรที่ใช้ภาษานามธรรมนี้ซึ่งมีสองประการที่กำหนดไว้ในข้อกำหนดนี้

...

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

นอกจากนี้ยังมีเอกสารที่ดีเกี่ยวกับการเขียน HTML5 polyglots (หน้าซึ่งสามารถจัดลำดับเป็นทั้ง HTML5 และ XML ปกติ) ได้ที่นี่:

http://dev.w3.org/html5/html-polyglot/html-polyglot.html#bib-HTML5

และตรวจสอบได้!

http://html5.validator.nu/

ปัจจุบันไม่ค่อยมีใครเรียก XHTML5 ในปัจจุบัน (และอาจไม่ค่อยมีใครใช้) เนื่องจากมันยังคงเป็น HTML5 โดยทั่วไป แต่ก็ยังอยู่ที่นั่น

พูดง่าย ๆ : การเปลี่ยนแปลงข้อกำหนด HTML5 ทุกอย่างก็เป็นการเปลี่ยนแปลง XHTML5 ที่เกี่ยวข้อง


10

HTML5 เป็นพฤตินัยและนิตินัยมาตรฐาน! XHTML อยู่ที่นั่นตามมาตรฐานด้วย

HTML5 - คำศัพท์และ API ที่เกี่ยวข้องสำหรับ HTML และ XHTML

คำแนะนำของ W3C 28 ตุลาคม 2014

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

XHTML ส่วนและหมายเหตุสำคัญ:


ความเข้าใจและการใช้

สรุปโดยLF Sikos

XHTML5 คือการทำให้เป็นอันดับ XML ของ HTML5 ไวยากรณ์อธิบายโดยข้อกำหนดของ HTML5 อย่างไรก็ตามสิ่งหนึ่งที่ไม่ควรสับสนเนื่องจาก XHTML5 เป็นแอปพลิเคชันของ XML กล่าวอีกนัยหนึ่ง HTML5 และ XHTML5 มีคำศัพท์ที่เหมือนกัน แต่มีการแยกวิเคราะห์กฎที่แตกต่างกัน

เอกสาร HTML5 อาจเป็นเอกสาร XML ที่ถูกต้อง มาร์กอัปนี้มักถูกเรียกว่าภาษา“ พูดได้หลายภาษา” มันเป็นภาษาที่ทับซ้อนกันของเอกสารซึ่งเป็นเอกสาร HTML5 และ XML ในเวลาเดียวกัน การทำให้เป็นอันดับ HTML5 และ XHTML5 นั้นสามารถทำงานร่วมกันได้ อย่างไรก็ตาม XHTML5 มีไวยากรณ์ที่เข้มงวดกว่า นอกจากนี้บางส่วนของ XHTML5 ไม่ถูกต้องใน HTML5 เช่นคำแนะนำในการประมวลผล

ดังนั้นการพูดอย่างเคร่งครัด (และเน้นโดย @vaxquis) "XHTML เป็นเพียงไวยากรณ์สำหรับอนุกรม XML เป็น" มีไม่มีDTD หรือชนิดอื่น ๆ ของเค้าร่าง

บางคนไม่ชอบพูดว่า "XHTML5 คือ XHTML" คำถามต้องแบ่งเป็นคำถามที่พบบ่อยเกี่ยวกับ "เมื่อฉันสามารถใช้เป็น XHTML" ได้ นี่คือ WIKI โปรดแก้ไขหากมี "ความเข้าใจผิด" บางส่วน ...


คำถามที่พบบ่อย

ฉันสามารถใช้ XHTML5 เป็น "รุ่น XHTML มาตรฐาน" ของปี 2014 ได้หรือไม่

มีปัญหาบางอย่างในการแปลง "ที่สมบูรณ์แบบและทั่วไป HTML5-to-XHTML5 / XHTML5-to-HTML5" คุณต้องทำ "ตัวเลือกส่วนบุคคล" และข้อมูลที่สูญหาย เนื่องจากบริบทจะเป็นคำตอบที่แตกต่าง:

  • การพูดที่หลวม : ใช่ มีตัวอย่างมากมาย (แบบง่าย) ที่การทำแผนที่สมบูรณ์แบบและย้อนกลับได้

  • พูดอย่างเคร่งครัด : ไม่ ดูความคิดเห็น @vaxquis ด้านล่างและคำตอบเก่าในหน้านี้ ปัญหาทั่วไปบางประการ:

ฉันสามารถใช้ (ไม่ต้องกลัว!) การทำให้เป็นอนุกรม XHTML5 กับ XSLT, XPath ฯลฯ ได้หรือไม่

ใช่คุณสามารถ. แม้แต่เศษซีเรียลไลซ์เซชั่น

ฉันสามารถตรวจสอบ XHTML5 ได้หรือไม่

ใช่ แต่ไม่เร็วและง่ายกว่า DTD รุ่นเก่า ... ดูตัวตรวจสอบความถูกต้องที่ซับซ้อนเช่นvalidator.nu

ฉันสามารถใช้ XHTML5 เป็นเอาต์พุตที่ไม่ใช่เทอร์มินัลในเชน XSLT ได้หรือไม่

ใช่คุณสามารถ. มาอธิบายสิ่งที่คุณทำได้

กรอบงานบางอย่างเช่นCocoonให้ใช้ " XSLT chains " ผลลัพธ์ HTML5 และ XHTML5 สามารถใช้เป็น "ผลลัพธ์สุดท้ายในห่วงโซ่" ... แน่นอนในขั้นตอนที่เป็นสื่อกลาง HTML5 ไม่สามารถใช้งานได้เนื่องจากไม่ใช่ XML แต่สามารถใช้ XHTML5 ได้

ปัญหาการตรวจสอบข้างต้นปรากฏขึ้นอีกครั้งที่นี่: ไม่มีการประชุมที่แข็งแกร่งดังนั้นบางครั้งความชัดเจนน้อยลงของ "โครงสร้างมาตรฐาน XHTML" จะปรากฏขึ้น ในสถานการณ์นั้นคุณต้องให้ความสนใจใน "การประชุมด้วยตัวเอง" และต้องสอดคล้องกัน

เมื่อใช้ DOMDocument ของหน้า HTML5 ฉันสามารถใช้saveXML()วิธีการได้หรือไม่?

ใช่. นี่เป็นสถานการณ์ทั่วไปที่มีการใช้คำแนะนำ serializaion XML จะถูกต้องรหัส XHTML5 ถูกแมปจากสถานะ HTML5 และ DOM เดิม ... แต่ในบางโครงสร้างข้อมูลบางอย่างอาจสูญหายได้ตามความเห็นด้านบน


Nope XHTML เป็นเพียงไวยากรณ์สำหรับการทำให้เป็นอันดับ XML ของ HTML5 ซึ่งเป็นหัวข้อที่ฉันได้กล่าวไปแล้วในคำตอบเมื่อประมาณหนึ่งปีที่แล้ว ไม่มี "การผสาน" เนื่องจากถูก "ผสาน" โดยร่าง W3C / WHATWG HTML5 ก่อนหน้าหลังจากการเก็บ XHTML 2.0; คุณเข้าใจบริบทผิดที่นี่ นอกจากนี้ XPath & XSLT ก็มีการเชื่อมโยงกับเรื่องดังกล่าวเท่านั้น นอกจากนี้ MIME ที่รู้จักกันดีประเภท "XHTML ส่วนและ / หรือหมายเหตุ" เป็นอย่างไร นอกจากนี้โดยทั่วไปคุณไม่สามารถทำให้ HTML เป็นอนุกรมเป็น XHTML ได้ - วิธีแก้ปัญหาที่เสนอคือการเขียนรูปหลายเหลี่ยมเป็นอนุกรมทั้งคู่ไม่ใช่ "re-serialize"
vaxquis

hum ... @vaxquis ตกลงฉันได้แก้ไขโปรดช่วยด้วย และที่นี่ที่ความคิดเห็นเราจะพูดในภาษาเดียวกัน: คุณใช้ "การพูดอย่างเคร่งครัด" และฉันใช้ "การพูดที่กว้างกว่า" ในการแนะนำ ... ตอนนี้เราสามารถชี้ไปที่ข้อความคำตอบของสิ่งที่คุณต้องการแก้ไข
Peter Krauss

9

ใช่น่าเสียดายที่ XHTML หายไปแล้ว

เพิ่มอีก 1 เหตุผลในคำตอบที่ยอดเยี่ยมของ MainMa:

เมื่อ XHTML ถูกสร้างขึ้นมันถูกใช้โดย WebApps เพื่อให้บริการเนื้อหาที่มีโครงสร้างที่จะเข้าใจได้โดยซอฟต์แวร์ที่ไม่ใช่เบราว์เซอร์ซึ่งไม่มีแท็กซุป HTML ที่ติดแท็ก สำหรับ ScreenReaders XHTML ยังคงยอดเยี่ยม แต่สำหรับซอฟต์แวร์ประเภทอื่น ๆ WebServices เหมาะสมกับความต้องการนั้นและพวกเขาส่วนใหญ่ใช้ XML หรือ JSON SOAP นั้นมี XML Schema ของตัวเองง่ายกว่า XHTML และมุ่งเน้นการดำเนินการ

ตราบใดที่ฉันรู้ไม่มีแม้แต่ WebApp 1 แห่งในโลกที่ให้บริการข้อความ HTTP เดียวกันกับเบราว์เซอร์และไคลเอนต์อื่น ๆ แม้แต่สถาปัตยกรรม REST ซึ่งใช้แสดงเนื้อหาเดียวกันในหลายประเภทเนื้อหาตามความต้องการของลูกค้าไม่ได้ใช้เพื่อแสดง XHTML / ฟีดเบราว์เซอร์

ใน Java EE ตัวอย่างเช่นการใช้ Eclipse เราสามารถปรับใช้ไฟล์ war ที่ไม่ซ้ำกันซึ่งถือ Servlets + JSPs เพื่อให้บริการ HTML พร้อมกับ Axis2 เพื่อให้บริการเว็บเซอร์ มันง่ายกว่าในการพัฒนาซอฟท์แวร์ที่แยกกันซึ่งมีจุดประสงค์เพื่อเบราว์เซอร์และเว็บเซอร์กว่าซอฟต์แวร์ที่มีเอกลักษณ์และซับซ้อนซึ่งให้บริการทั้งหมด

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

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

หากผู้ใช้ REST บ่นเกี่ยวกับความซับซ้อนของ XML ของ SOAP ซึ่งเป็นวิธีที่ง่ายกว่า XHTML ที่มีความหมายสำหรับเบราว์เซอร์ลองจินตนาการว่าการจัดการ XHTML สำหรับไคลเอ็นต์หลายประเภทนั้นเป็นอย่างไรเซิร์ฟเวอร์และฝั่งไคลเอ็นต์

ในทางปฏิบัติ: ใช้ HTML เหมือน XML ถ้าคุณต้องการสร้างเว็บไซต์สำหรับเบราว์เซอร์และโซลูชั่น WebService ทุกประเภทสำหรับลูกค้าที่ไม่ใช่เบราว์เซอร์

แต่ฉันคิดว่าต้องสร้าง XHTML5 ด้วย XHTML 1.1 (ok, 1.0, 1.1 ใช้ไม่ได้) จะล้าสมัยด้วย HTML5 และเรายังต้องการเครื่องมือตรวจสอบที่ยอมรับองค์ประกอบของ HTML5 และตรวจสอบ XML wellformedness


1
อาจจะช้าไปหน่อย แต่ XHTML 1.1 ใช้ไม่ได้กับ 1.0 อย่างไร หากมีสิ่งใด DTD ของมันจะมีองค์ประกอบเพิ่มเติม เว้นแต่ว่าคุณกำลังพูดถึงเฟรมเซตและสิ่งต่าง ๆ เช่นนั้น
นาย Lister

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