เว้นวรรคก่อนปิดทับ?


93

ฉันเคยเห็นช่องว่างก่อนเครื่องหมายสแลชปิดในแท็ก XML และ HTML การแบ่งบรรทัด XHTML น่าจะเป็นตัวอย่างที่ยอมรับได้:

<br />

แทน:

<br/>

พื้นที่ดูเหมือนฟุ่มเฟือย อันที่จริงฉันคิดว่ามันฟุ่มเฟือย

เหตุผลที่เขียนเว้นวรรคนี้คืออะไร?

ฉันได้อ่านพบว่า Space ช่วยแก้ปัญหา "ความเข้ากันได้ย้อนหลัง" ได้ ปัญหาความเข้ากันได้ย้อนหลังใด ปัญหาเหล่านั้นยังคงมีความเกี่ยวข้องหรือเรายังคงเพิ่มช่องว่างเพิ่มเติมเพื่อประโยชน์ในการกล่าวถึงความเข้ากันได้ของ IE3? มีข้อกำหนดบางอย่างพร้อมคำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้หรือไม่?

หากไม่สามารถใช้งานร่วมกันได้ย้อนกลับจะเป็นปัญหาในการอ่านหรือไม่? คล้ายกับการอภิปราย Great Open Curly Brace?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

แน่นอนฉันสามารถเคารพความคิดเห็นเกี่ยวกับโวหารที่แตกต่างกันได้ดังนั้นฉันยินดีที่จะเรียนรู้ว่าการเขียนพื้นที่เป็นเพียงเรื่องของรสนิยม


คำตอบ:


65

คำตอบคือคนต้องการที่จะไปตามภาคผนวก C ข้อกำหนด ซึ่งคุณจะต้องทำอย่างไรถ้าคุณจะให้บริการ XHTML เป็น text ซึ่งคนส่วนใหญ่มักทำกันเนื่องจากประเภท MIME จริงของ XHTML (application / html + xml) ไม่ทำงานใน Internet Explorer

ไม่มีเบราว์เซอร์ปัจจุบันที่สนใจพื้นที่ เบราว์เซอร์มีความอดทนต่อสิ่งเหล่านี้มาก

ช่องว่างที่ต้องใช้เพื่อให้แน่ใจว่าตัวแยกวิเคราะห์ HTML ถือว่าเครื่องหมายทับเป็นแอตทริบิวต์ที่ไม่รู้จัก


2
คุณสามารถเจาะจงมากขึ้นเกี่ยวกับ "เคยเป็นไหม" ปีและ / หรือเวอร์ชันของเบราว์เซอร์จะทำขอบคุณ!
Greg Mattes

5
ฉันคิดว่าw3.org/TR/xhtml1/#C_2เป็นลิงก์ที่แม่นยำกว่าสำหรับคำตอบนี้ ดังนั้นดูเหมือนว่า XHTML 1.0 Appendix C2 จะล้าสมัยอย่างมีประสิทธิภาพและการเขียน Space นั้นเป็นเพียงเรื่องของรสชาติ
Greg Mattes

1
ขออภัยเคยหมายถึง "เป็น" - ในส่วนที่เกี่ยวกับการตรวจสอบให้แน่ใจว่าโปรแกรมแยกวิเคราะห์ HTML ถือว่าเครื่องหมายทับเป็นแอตทริบิวต์ที่ไม่รู้จักตัวแยกวิเคราะห์ HTML ทั้งหมดไม่ใช่เบราว์เซอร์ ฉันไม่ต้องการเสี่ยงต่อการเดาว่าเบราว์เซอร์เวอร์ชันใดที่สำลักถ้ามี แต่ฉันจำไม่ได้ว่า IE4 หรือ Netscape 4 บ่น
Lee Kowalkowski

3
จริงๆแล้วประเภท mime จริงคือ application / xhtml + xml
mk12

3
@ JanAagaard: ฉันไม่รู้ฉันจำได้ถ้าเป็นเช่นนั้น - ฉันเริ่มพัฒนาเว็บบน IE4 และ Netscape 4 คำตอบที่คุณเชื่อมโยงมีความคิดเห็นเกี่ยวกับเอฟเฟกต์นี้ด้วยเช่นกันมันบอกว่ามันเป็น Netscape 3 จริง ๆ
Lee Kowalkowski

31

Netscape 4.80 แสดงพฤติกรรมที่แตกต่างกันของ <br/> และ <br /> ใน HTML

สนับสนุนคำตอบของ Bobinceพร้อมภาพหน้าจอของNetscape 4.80 ที่แสดงเอกสาร

data:text/html,<title>space</title>foo<br />bar

(ด้านบนซ้าย, linebreak แสดงผล) และ

data:text/html,<title>no space</title>foo<br/>bar

(ล่างซ้าย, linebreak ละเว้น)


โพสต์เป็นคำตอบเพื่อแสดงภาพ

ที่เกี่ยวข้องกับการสัมผัส: ในความเป็นจริงผมมีคำตอบที่มีความยาวการระบุสาเหตุของการกระทำผิดกฎหมายดังกล่าวของเบราว์เซอร์โบราณ (และข้อเสนอแนะผลให้มีช่องว่าง) ในรายละเอียดเข้าใจผิด SGML คือSGML Null End Tag ( สุทธิ ) (ซึ่ง1<tag/2/3เท่ากับ1<tag>2</tag>3ดังนั้น1<tag/>2จะจริงหมายถึง1<tag>>2) แต่ ไม่เพียง แต่ฉันไม่สามารถหาข้อพิสูจน์และมาตรฐานที่เป็นรูปธรรมได้ฉันยังไม่สามารถเข้าใจพฤติกรรมการปฏิบัติตามมาตรฐานที่เหมาะสมได้ด้วยซ้ำ ลิงก์ดิบเพียงเล็กน้อยสำหรับการอ้างอิง:

(ไม่สามารถทำซ้ำได้ในขณะนี้ แต่สนับสนุนคำแถลงของ Lee Kowalkowski เกี่ยวกับเบราว์เซอร์หลายตัวที่ได้รับผลกระทบจากสิ่งนี้)

  • XML W3C Working Draft 07-Aug-97 - ร่างข้อกำหนดล่าสุดที่มีการอ้างอิงของ Null End Tag ในข้อมูลโค้ด DTD:NET "/>"

25

ปัญหาเหล่านั้นยังคงมีความเกี่ยวข้องหรือเรายังคงเพิ่มช่องว่างเพิ่มเติมเพื่อประโยชน์ในการกล่าวถึงความเข้ากันได้ของ IE3?

คุณอยู่ใกล้ - สำหรับ Netscape 4

เป็นเรื่องน่าสนใจที่จะเห็นการหาเหตุผลอื่น ๆ แต่นั่นคือทั้งหมดที่มีไว้สำหรับ


2
ขอบคุณ! คุณสามารถให้ข้อมูลอ้างอิงสำหรับสิ่งนี้ได้หรือไม่?
Greg Mattes

1
อืมยากที่จะหาแหล่งข้อมูลหลักที่เก่าแก่นี้ ... เอกสาร W3 อย่างเป็นทางการหลีกเลี่ยงการกล่าวถึง UA ใด ๆ และการอภิปรายในรายการดูเหมือนจะใช้สถานการณ์ตามที่อ่าน อาจมี UA อื่น ๆ ที่ต้องการพื้นที่เช่นกัน แต่ N4 เป็นหน่วยสุดท้ายที่ทำให้เว็บมาสเตอร์มีปัญหามานานหลายปี
Bobince

ดังนั้นเอกสาร XHTML ของคุณก็แสดงผลบน Netscape โดยเฉพาะสำหรับแท็กแบ่งและแท็กรูปภาพ แหล่งที่มาหลัก: ฉันเขียนโค้ดสำหรับความเข้ากันได้ของ IE4 และ NS3 เมื่อ 10 ปีก่อน
Philihp Busby

4

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


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

เราไม่ IE5 และเก่ากว่าเป็นส่วนใหญ่
jmucchiello

3

ใน XHTML, แท็ก br จะต้องปิดแต่พื้นที่ที่ไม่จำเป็น มันเป็นโวหาร ใน HTML ไม่สามารถปิดแท็ก br ได้ดังนั้นทั้งคู่จึงผิด


1
ภาคผนวก Cของเอกสารนั้นระบุว่าคุณควรเว้นวรรค
182764125216

3

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


0

จะเป็นอย่างไรหากมีผู้เขียน html ที่ขี้เกียจอยู่ที่นั่นหรือบางทีเขาอาจกลัวเครื่องหมายคำพูด พิจารณาสิ่งต่อไปนี้หากคุณเป็นโปรแกรมรวบรวมข้อมูลหน้าหุ่นยนต์ของเขา ...

<img src=http://myunquotedurl.com/image.jpg />

เทียบกับ

<img src=http://myunquotedurl.com/image.jpg/>

สิ่งนี้อาจดูเหมือนเล็ก แต่ดูว่ามันทำอะไรได้บ้างถ้าไม่มีที่ว่าง หุ่นยนต์จะไม่รู้ว่าสแลชเป็นส่วนหนึ่งของ url หรือเป็นส่วนหนึ่งของแท็กปิด


12
ดี แต่ควรมีเครื่องหมายคำพูดรอบ ๆ URL อยู่ดี
Florian Wendelborn

-1

ฉันคิดว่าช่องว่างเป็นวิธีตอกย้ำความคิดที่ว่าแท็กนี้ว่างเปล่าและปิดตัวเอง

วันนี้ฉันไม่ได้ใช้พื้นที่สีขาวอีกต่อไปเพราะฉันไม่เคยมีปัญหากับการไม่มีพื้นที่สีขาว


1
"เสริมกำลัง" เป็นคำที่เหมาะสำหรับ "แข็งแกร่ง"
เฮา

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