Element vs Attribute

ตอนเขียนเรื่อง EDXL เกิดคำถามว่าทำไมถึงใช้ element มากกว่า attribute

เคยอ่านมา (แบบลืมๆ) ว่าถ้าต้องการ order ของข้อมูลให้ใช้ element ถ้าไม่ต้องการก็อาจใช้ attribute ได้ แต่มันน่าจะมีคำตอบที่ดีกว่านี้สิ

ลองค้นดูก็พบว่านี่เป็นคำถามคลาสสิคของ XML (ย้อนไปถึง SGML) ที่ไม่มีคำตอบตายตัวซะด้วย

หลักการที่ชี้ชัดได้ว่าต้องเป็นแบบไหน เป๊ะๆ ไม่มีสิทธิ์เถียง

  • ถ้าต้องการข้อมูลที่เรียงลำดับหรือมี structure ก็ใช้ element
  • ถ้าสนใจ whitespace ให้ใช้ element (การใช้ whitespace ใน attribute อาจถูก parse ผิด)​อันนี้เพิ่งรู้

หลักการที่แนะนำเฉยๆ ไม่ใช้ตามก็ได้

  • element จะอ่านง่ายกว่า attribute ดังนี้ควรใช้ element ถ้าเป็นไปได้
  • "data goes in elements, metadata in attributes"
  • ใช้ attribute ในการขยายความ element อีกที

ตัวอย่างง่ายๆ ที่ไม่รู้จะใช้อันไหนดีก็คือ ID เช่น

<book id="1">
    <title>My Book</title>
</book>

กับ

<book>
    <id>1</id>
    <title>My Book</title>
</book>

เพราะเราไม่สามารถชี้ชัดไปได้ว่า id ในที่นี้เป็น metadata หรือไม่ ขึ้นกับการใช้งาน อันนี้คนออกแบบ schema ต้องเป็นคนตัดสินใจเอง (สเปกของ W3C บางอย่างก็ยังขัดกับหลักการข้างต้นเลย)

ที่มา

Keyword:

Comments

ตามมาอ่านห่าง ๆ

กำ ลืม preview ดู ไปแก้เองละกันนะ mk เหอๆ

Add new comment