<img src="computer.gif"><a href="demo.html">
แอตทริบิวต์มักให้ข้อมูลที่ไม่ได้เป็นส่วนหนึ่งของข้อมูล ในตัวอย่างต่อไปนี้ ประเภทไฟล์ไม่เกี่ยวข้องกับข้อมูล แต่มีความสำคัญต่อซอฟต์แวร์ที่ต้องจัดการองค์ประกอบนี้:
<file type="gif">computer.gif</file>
ค่าแอตทริบิวต์จะต้องล้อมรอบด้วยเครื่องหมายคำพูด แต่สามารถใช้ทั้งเครื่องหมายคำพูดเดี่ยวและคู่ได้ ตัวอย่างเช่น เพศของบุคคล องค์ประกอบบุคคลสามารถเขียนได้ดังนี้:
<บุคคล เพศ = "หญิง">
หรือสิ่งนี้ก็ใช้ได้เช่นกัน:
<บุคคลเพศ='หญิง'>
หากค่าแอตทริบิวต์มีเครื่องหมายคำพูดคู่ คุณสามารถใช้เครื่องหมายคำพูดเดี่ยวได้ ดังในตัวอย่างนี้:
<ชื่ออันธพาล='จอร์จ "ปืนลูกซอง" ซีกเลอร์'>
หรือคุณสามารถใช้เอนทิตีตัวละคร:
<บุคคล sex="หญิง"><firstname>แอนนา</firstname><lastname>สมิธ</lastname></person>
<person><sex>เพศหญิง</sex><firstname>แอนนา</firstname><lastname>Smith</lastname></person>
ในกรณีแรก เพศเป็นทรัพย์สิน ในกรณีที่สอง เพศเป็นองค์ประกอบ ทั้งสองกรณีให้ข้อมูลเดียวกัน
ไม่มีกฎเกณฑ์ที่บอกเราว่าเมื่อใดควรใช้แอตทริบิวต์และเมื่อใดควรใช้องค์ประกอบ ประสบการณ์ของฉันคือใน HTML คุณลักษณะนั้นใช้งานได้สะดวกมาก แต่ใน XML คุณควรพยายามหลีกเลี่ยงการใช้แอตทริบิวต์ หากข้อมูลให้ความรู้สึกเหมือนข้อมูลมาก ให้ใช้องค์ประกอบต่างๆ
เอกสาร XML สามรายการต่อไปนี้มีข้อมูลที่เหมือนกันทุกประการ:
แอตทริบิวต์ date ถูกใช้ในตัวอย่างนี้:
<note date="10/01/2008"><to>Tove</to><from>Jani</from><heading>คำเตือน</heading><body>สุดสัปดาห์นี้อย่าลืมฉัน!</body ></หมายเหตุ>
ตัวอย่างที่สองใช้องค์ประกอบวันที่:
<note><date>10/01/2008</date><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>สุดสัปดาห์นี้อย่าลืมฉัน! </body></หมายเหตุ>
ตัวอย่างที่สามใช้องค์ประกอบวันที่ขยาย (นี่คือสิ่งที่ฉันชอบ):
<note><date><day>10</day><month>01</month><year>2008</year></date><to>Tove</to><from>Jani</from> <heading>คำเตือน</heading><body>สุดสัปดาห์นี้อย่าลืมฉัน!</body></note>
ปัญหาบางอย่างที่เกิดจากการใช้แอตทริบิวต์:
คุณสมบัติไม่สามารถมีหลายค่าได้ (องค์ประกอบสามารถ)
คุณสมบัติไม่สามารถมีโครงสร้างต้นไม้ (องค์ประกอบสามารถ)
คุณสมบัติไม่สามารถขยายได้อย่างง่ายดาย (สำหรับการเปลี่ยนแปลงในอนาคต)
คุณสมบัติอ่านและบำรุงรักษาได้ยาก โปรดลองใช้องค์ประกอบเพื่ออธิบายข้อมูล ให้ใช้แอตทริบิวต์เพื่อให้ข้อมูลที่เป็นอิสระแทน
อย่าทำอะไรโง่ๆ แบบนี้ (นี่ไม่ใช่วิธีที่ควรใช้ XML):
<note day="10" month="01" year="2008"to="Tove" from="Jani" heading="Reminder"body="สุดสัปดาห์นี้อย่าลืมฉัน!"></note>
บางครั้งการอ้างอิง ID จะถูกกำหนดให้กับองค์ประกอบ ดัชนี ID เหล่านี้สามารถใช้เพื่อระบุองค์ประกอบ XML ในลักษณะเดียวกับแอตทริบิวต์ id ใน HTML ตัวอย่างนี้แสดงให้เห็นถึงสถานการณ์นี้ให้เรา:
<messages><note id="501"><to>Tove</to><from>Jani</from><heading>คำเตือน</heading><body>สุดสัปดาห์นี้อย่าลืมฉัน!</body> </note><note id="502"><to>Jani</to><from>Tove</from><heading>Re: Reminder</heading><body>ฉันจะไม่</body></ หมายเหตุ></ข้อความ>
แอตทริบิวต์ id ข้างต้นเป็นเพียงตัวระบุที่ใช้ระบุบันทึกย่อต่างๆ มันไม่ได้เป็นส่วนหนึ่งของข้อมูลบันทึก
แนวคิดที่เราพยายามจะถ่ายทอดให้คุณทราบที่นี่คือข้อมูลเมตา (ข้อมูลเกี่ยวกับข้อมูล) ควรถูกจัดเก็บไว้เป็นแอตทริบิวต์ และข้อมูลนั้นควรถูกจัดเก็บไว้เป็นองค์ประกอบ
ต่อไปนี้เป็นกฎที่แอตทริบิวต์ XML สรุปจำเป็นต้องปฏิบัติตาม:
ชื่อแอตทริบิวต์ไม่สามารถปรากฏในแท็กเริ่มต้นเดียวกันหรือแท็กองค์ประกอบว่างได้
คุณสมบัติจะต้องประกาศโดยใช้คำนิยามประเภทเอกสาร (DTD) ที่ประกาศในแผ่นคุณสมบัติ
ค่าทรัพย์สินไม่สามารถมีการอ้างอิงเอนทิตีโดยตรงหรือโดยอ้อมไปยังเอนทิตีภายนอก
ข้อความแทนที่ของเอนทิตีใด ๆ ที่เรียกว่าค่าแอตทริบิวต์โดยตรงหรือโดยอ้อมต้องไม่มีเครื่องหมายน้อยกว่า