พอร์ทัลข้อมูลและความบันเทิง
ค้นหาไซต์

อภิธานคำศัพท์ ความแตกต่างระหว่าง HTML และ XHTML อักขระพิเศษทั้งหมดจะต้องถูกแทนที่ด้วยเอนทิตี

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

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

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

XHTML (EXtensible HyperText Markup Language) มีวัตถุประสงค์เพื่อแทนที่ HTML และถือเป็นเวอร์ชันที่เข้มงวดกว่า โดยทั่วไป W3C กำหนด XHTML ว่าเป็น HTML เวอร์ชันล่าสุด ซึ่งจะค่อยๆ เข้ามาแทนที่ ไม่ว่ามันจะเป็นจริงหรือไม่ เวลาเท่านั้นที่จะบอกได้

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

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

ด้วยเหตุผลเหล่านี้ XHTML 1.x จึงเป็นเพียงรูปลักษณ์ของ HTML แต่มีไวยากรณ์ที่เข้มงวดกว่า และไม่ใช่ภาษามาร์กอัปที่น่าเชื่อถือซึ่งคุ้มค่าที่จะเปลี่ยนไปใช้อย่างแน่นอนเนื่องจากความสามารถเฉพาะตัวของมัน

บทความนี้อ้างอิงจากเอกสาร W3C ต้นฉบับ - XHTML™ 1.1 - XHTML ที่ใช้โมดูล - ฉบับที่สอง: W3C Working Draft 16 กุมภาพันธ์ 2550 อาจมีการเปลี่ยนแปลง แต่มีแนวโน้มที่จะแทนที่คำแนะนำที่มีอยู่ - XHTML™ 1.1 - XHTML แบบโมดูล

การปฏิบัติตามเอกสารอย่างเข้มงวด

เอกสารที่สอดคล้องกับ XHTML 1.1 อย่างสมบูรณ์จะต้องเป็นไปตามเกณฑ์ต่อไปนี้:

  • องค์ประกอบรากของเอกสารจะต้องเป็นองค์ประกอบ
  • องค์ประกอบรูทของเอกสาร () ต้องชี้ไปที่เนมสเปซ XHTML โดยใช้แอตทริบิวต์ xmlns ตัวบ่งชี้เนมสเปซสำหรับ XHTML คือ "http://www.w3.org/1999/xhtml" กล่าวคือ แท็กเปิด html ควรมีลักษณะดังนี้:
  • องค์ประกอบรูทอาจมีแอตทริบิวต์ schemaLocation คุณลักษณะ schemaLocation สำหรับ XHTML ถูกกำหนดเป็น: "http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd"
  • จะต้องมีการประกาศประเภทเอกสาร DOCTYPE นำหน้าองค์ประกอบรูท ตัวระบุที่รวมอยู่ในการประกาศ DOCTYPE จะต้องชี้ไปที่ DTD ที่เกี่ยวข้อง ตัวระบุนี้อาจมีลักษณะดังนี้:
  • นี่คือตัวอย่างเอกสารที่สอดคล้องกับ XHTML 1.1:

    ห้องสมุดเสมือนจริง

    ย้ายไปที่ example.org

    โปรดทราบว่าในตัวอย่างนี้ การประกาศ XML จะรวมอยู่ด้วย ไม่จำเป็นต้องมีการประกาศ XML เหมือนกับที่กล่าวข้างต้นในเอกสาร XML ทั้งหมด เราขอแนะนำให้ผู้เขียนเอกสาร XHTML ใช้การประกาศ XML ในเอกสารทั้งหมดของตน จำเป็นต้องมีการประกาศนี้เมื่อการเข้ารหัสของเอกสาร XML เป็นแบบอื่นที่ไม่ใช่ UTF-8 หรือ UTF-16

    เอกสาร XHTML 1.1 ควรระบุประเภทเนื้อหาเอกสารเป็น text/html หรือ application/xhtml+xml

    โดยปกติแล้ว ตัวแทนผู้ใช้ (เช่น เบราว์เซอร์) ในส่วนของตนควรคำนึงถึงคำแนะนำเหล่านี้ด้วย

    ประเภทเอกสาร XHTML 1.1

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

    ประเภท XHTML 1.1 ประกอบด้วยโมดูล XHTML ต่อไปนี้

    เนื้อความของโมดูลโครงสร้าง, หัว, html, โมดูลหัวเรื่องสำหรับการทำงานกับข้อความ abbr, ตัวย่อ, ที่อยู่, blockquote, br, อ้างอิง, รหัส, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var Hypertext module a List module dl, dt, dd, ol, ul, li Object module object, param โมดูลของวิธีการแสดงต่างๆ b, big, hr, i, small, sub, sup , tt การแก้ไขโมดูล del, ins โมดูลสนับสนุนข้อความแบบสองทิศทาง bdo ปุ่มโมดูลแบบฟอร์ม, ชุดฟิลด์, แบบฟอร์ม, อินพุต, ป้ายกำกับ, คำอธิบายแผนภูมิ, เลือก, กลุ่มทางเลือก, ตัวเลือก, พื้นที่ข้อความ คำอธิบายโมดูลตาราง, col, กลุ่มคอล, ตาราง, tbody, td, tfoot, th , thead, tr โมดูลรูปภาพ img พื้นที่โมดูลแผนที่รูปภาพฝั่งไคลเอ็นต์ แผนที่ โมดูลแผนที่รูปภาพฝั่งเซิร์ฟเวอร์ คุณลักษณะ ismap รวมอยู่ใน img โมดูลเหตุการณ์ภายใน คุณลักษณะเหตุการณ์ โมดูลข้อมูล Meta เมตาสคริปต์โมดูล noscript สคริปต์ สไตล์ชีต สไตล์โมดูล สไตล์แอตทริบิวต์ โมดูล (เลิกใช้แล้ว) สไตล์ แอ็ตทริบิวต์ลิงก์ ลิงก์โมดูล ฐานโมดูลฐาน

    XHTML ยังใช้โมดูล Ruby Annotation:

    โมดูลคำอธิบายประกอบ Ruby ruby, rbc, rtc, rb, rt, rp

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

    ความแตกต่างจาก XHTML 1.0 เข้มงวด

    XHTML 1.1 แตกต่างจากทั้งเทคโนโลยี HTML 4 และ XHTML 1.0 สิ่งที่สำคัญที่สุดคือการกำจัดองค์ประกอบที่ล้าสมัย โดยทั่วไป มีกลยุทธ์ในการกำหนดภาษามาร์กอัปจากมุมมองเชิงโครงสร้างและการทำงาน โดยไม่คำนึงถึงสไตล์ชีตที่ใช้สำหรับการออกแบบเอกสาร

    ความแตกต่างสามารถกำหนดได้ดังนี้:

  • แอตทริบิวต์ lang ถูกแทนที่ด้วยแอตทริบิวต์ xml:lang
  • ในองค์ประกอบ a และ map คุณลักษณะ name จะถูกแทนที่ด้วยแอตทริบิวต์ id
  • คอลเลกชันขององค์ประกอบ Ruby ได้รับการขยาย
  • ดังนั้นประเภท XHTML 1.1 จึงไม่แตกต่างจาก XHTML 1.0 Strict มากนัก อย่างไรก็ตามความแตกต่างเหล่านี้ค่อนข้างสำคัญและต้องนำมาพิจารณาด้วย

    เมื่อเลือก DOCTYPE คุณต้องตัดสินใจอย่างชัดเจนว่าควรเลือกมาตรฐานใดจากสองมาตรฐาน: HTML หรือ XHTML และเพื่อให้คุณเลือกได้ง่ายขึ้น ฉันจึงตัดสินใจดูความแตกต่างระหว่าง HTML และ XHTML

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

    ตอนนี้เรามาดูคุณสมบัติของไวยากรณ์ XHTML แบบจุดต่อจุด:

    1. ทุกแท็กจะต้องปิด

    แท็กที่จับคู่ต้องปิดด้วย HTML เช่นกัน แต่เราทุกคนรู้ดีว่าใน HTML มีแท็กเดี่ยวๆ มากมาย (เช่น ) และเราสามารถเขียนได้อย่างปลอดภัยด้วยวิธีนี้:

    อย่างไรก็ตาม ใน XHTML แท็กทั้งหมดจะต้องปิด แม้แต่แท็กเดียว และปิดดังนี้:

    ข้อแตกต่างเพียงอย่างเดียวคือเครื่องหมายทับก่อนวงเล็บมุมที่สอง

    2. อักขระพิเศษทั้งหมดจะต้องถูกแทนที่ด้วยเอนทิตี

    นั่นคือคุณไม่สามารถเขียนแบบนี้ได้: "&" คุณต้องเขียนสัญลักษณ์นี้โดยมีสาระสำคัญเท่านั้นนั่นคือ "&" ไม่มีกฎดังกล่าวใน HTML

    3. ค่าแอตทริบิวต์ทั้งหมดจะต้องอยู่ในเครื่องหมายคำพูด

    เราทุกคนรู้ดีว่าใน HTML คุณสามารถเขียนได้ดังนี้:

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

    4. แท็กและแอตทริบิวต์ทั้งหมดจะต้องเขียนด้วยตัวพิมพ์เล็ก

    พูดตามตรง ฉันไม่เคยเข้าใจเลยว่าทำไมผู้คนถึงเขียนแท็กด้วยตัวพิมพ์ใหญ่ ในความคิดของฉัน สิ่งนี้จะทำให้โค้ดเสียโฉม และรู้สึกเหมือนถูกเขียนโดยไม่ต้องกด "CAPSLOCK" แต่ถ้ามันเป็นเรื่องของรสนิยมใน HTML ดังนั้นใน XHTML ก็เป็นกฎ: เขียนด้วยตัวพิมพ์เล็กเท่านั้น

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

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

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

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

    XHTML เข้ากันได้กับ HTML ภายใต้กฎเกณฑ์บางประการ ซึ่งมีคำอธิบายอยู่ในมาตรฐาน ซึ่งหมายความว่าแม้แต่เบราว์เซอร์ที่เก่าแก่ที่สุดที่เข้าใจ HTML ก็ยังทำงานกับ XHTML ได้เช่นกัน

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

    ความแตกต่างระหว่าง XHTML 1.0 และ HTML มีข้อกำหนดหลายประการที่นักพัฒนาซอฟต์แวร์ต้องปฏิบัติตาม:
    • ต้องระบุหนึ่งใน DTD ที่เป็นไปได้ (คำจำกัดความประเภทเอกสาร) ที่จุดเริ่มต้นของเอกสาร:
    • เนื้อความของเอกสาร XHTML ต้องมีแท็กต่อไปนี้: html, ศีรษะ, ชื่อและ ร่างกาย;
    • ต้องมีแอตทริบิวต์ xmlnsในองค์ประกอบ html;
    • ชื่อแท็กและแอตทริบิวต์จะต้องเขียนด้วยตัวพิมพ์เล็ก
    • ค่าแอตทริบิวต์ทั้งหมดจะต้องอยู่ในเครื่องหมายคำพูด
    • ต้องปิดแท็กทั้งหมด หากองค์ประกอบไม่มีแท็กปิด คุณควรเพิ่มเครื่องหมายทับ (
      หรือ
      — พื้นที่สำหรับความเข้ากันได้กับเบราว์เซอร์รุ่นเก่า)
    • จำเป็นต้องสังเกตการซ้อนแท็กที่ถูกต้อง ( ข้อความ - ไม่ถูกต้อง; ควรจะเขียน ข้อความ );
    • ห้ามมิให้ใช้คุณลักษณะย่อเล็กสุด ( ตอนนี้แรปควรถูกแทนที่ด้วย nowrap = "โนห่อ"- รายการคุณลักษณะดังกล่าวทั้งหมด: ตรวจสอบแล้ว, กะทัดรัด, ประกาศ, เลื่อนออกไป, พิการ, อิสแมป, ขนาดจมูก, ไม่มีสี, ตอนนี้แรป, หลายรายการ, อ่านเท่านั้น, เลือกแล้ว.
    • องค์ประกอบต่อไปนี้อยู่ภายใต้ข้อจำกัดในการรวมองค์ประกอบอื่นๆ ไว้ภายใน:
      • ;
      • รูปร่างไม่สามารถมีองค์ประกอบอื่นได้ รูปร่าง;
      • ฉลากไม่สามารถมีองค์ประกอบอื่นได้ ฉลาก;
      • ก่อนไม่สามารถมีได้ รูปภาพ, วัตถุ, ใหญ่, เล็ก, ย่อยหรือ จีบ;
      • ปุ่มไม่สามารถมีองค์ประกอบได้ ป้อนข้อมูล, เลือก, พื้นที่ข้อความ, ฉลาก, ปุ่ม, รูปร่าง, ชุดสนาม, ไอเฟรมหรือ isindex;
    • อักขระพิเศษในความหมายที่แท้จริงจะต้องแทนที่ด้วยอักขระที่เทียบเท่า:
      • & บน & ;
      • < บน < ;
      • > บน > .

    นอกจากนี้ ยังมีคำแนะนำเพิ่มเติมอีกมากมายที่นักพัฒนาไม่จำเป็นต้องปฏิบัติตามในเวอร์ชัน XHTML 1.0 แต่ในเวอร์ชันต่อๆ ไปของภาษานี้ คำแนะนำอาจพัฒนาเป็นข้อกำหนด:

    • การประกาศเอกสาร XML ที่จุดเริ่มต้นของโค้ดก่อน DTD ( );
    • องค์ประกอบต่อไปนี้ ชื่อทันทีหลังจากเปิดแท็ก ศีรษะ;
    • การใช้คุณลักษณะ รหัสแทน ชื่อ(ชื่อถือเป็นแอตทริบิวต์ที่เลิกใช้แล้ว)
    • การมีอยู่ของแอตทริบิวต์ type ในองค์ประกอบของไฟล์ที่รวมอยู่ (สไตล์ชีทและสคริปต์)
    • ปฏิเสธที่จะใช้แอตทริบิวต์ เป้า.

    นี่คือรหัสขั้นต่ำสำหรับหน้า XHTML ที่ถูกต้อง:

    ชื่อเรื่อง เนื้อหาเอกสาร

    หากคุณวางโค้ดนี้ลงในไฟล์ บันทึกเป็น "file.html" และเปิดผ่านเว็บเซิร์ฟเวอร์ จากนั้นไคลเอ็นต์จะได้รับข้อมูลทั้งหมดเป็น >text/html*/-->

    ไวยากรณ์นี้เป็นสากล รหัสนี้จะทำงานอย่างถูกต้องสำหรับทั้งสอง.

    วิธีแก้ปัญหาที่ดีและง่ายที่สุดคือการเชื่อมต่อไฟล์ภายนอกของสไตล์ชีทและสคริปต์ ใน XHTML จะทำในลักษณะเดียวกับใน HTML: