องค์ประกอบ XML และแอตทริบิวต์การเปรียบเทียบ
ใน XML และมีบทบัญญัติที่เมื่อมีการใช้แอตทริบิวต์และเมื่อใช้องค์ประกอบไม่มีบุตร
ใช้องค์ประกอบกับคุณลักษณะ
ข้อมูลที่สามารถเก็บไว้ในองค์ประกอบหรือคุณลักษณะของเด็ก
ลองดูที่ตัวอย่างเหล่านี้:
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
ในตัวอย่างแรก "เซ็กซ์" เป็นคุณลักษณะ หนึ่งในตัวอย่างกลับมาอยู่ใน "เซ็กซ์" เป็นองค์ประกอบย่อย แต่ทั้งสองให้ข้อมูลเดียวกัน
ไม่มีบทบัญญัติพิเศษสำหรับเมื่อจะใช้คุณลักษณะและเมื่อใช้องค์ประกอบของเด็ก ประสบการณ์ของฉันอยู่ที่การใช้งานของหลายแอตทริบิวต์ใน HTML หนัก แต่ในรูปแบบ XML, การใช้องค์ประกอบย่อยก็จะรู้สึกเหมือนข้อมูล
ผมชอบวิธีที่
ผมชอบที่จะเก็บข้อมูลในองค์ประกอบของเด็ก
ต่อไปนี้สามเอกสาร XML มีตรงข้อมูลเดียวกัน:
ตัวอย่างนี้ใช้แอตทริบิวต์ "วันที่":
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
ตัวอย่างนี้ใช้ "วันที่" องค์ประกอบ:
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
ตัวอย่างนี้ใช้นามสกุล "วันที่" องค์ประกอบ: (นี่คือวิธีที่ชื่นชอบของฉัน):
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
หลีกเลี่ยงการใช้แอตทริบิวต์?
คุณควรหลีกเลี่ยงการใช้แอตทริบิวต์?
แอตทริบิวต์บางคนมีปัญหาต่อไปนี้:
- คุณลักษณะที่ไม่สามารถมีค่าหลายค่า (องค์ประกอบของเด็กสามารถ)
- คุณลักษณะที่ไม่ได้ขยายได้อย่างง่ายดาย (สำหรับความต้องการในอนาคตการเปลี่ยนแปลง)
- คุณลักษณะที่ไม่สามารถอธิบายโครงสร้าง (องค์ประกอบของเด็กสามารถ)
- คุณลักษณะที่มีมากขึ้นยากที่จะจัดการกับรหัสโปรแกรม
- ค่าแอตทริบิวต์จะไม่ง่ายในการทดสอบสำหรับ DTD
ถ้าคุณใช้คุณสมบัติเป็นที่เก็บข้อมูลที่เอกสาร XML ที่เกิดจะเป็นเรื่องยากที่จะอ่านและการบำรุงรักษาพยายามที่จะใช้องค์ประกอบในการอธิบายข้อมูลเพื่ออธิบายข้อมูล. ข้อมูลเป็นเพียงการให้ข้อมูลที่ไม่เกี่ยวข้องเมื่อเราแนะนำให้ใช้สถานที่
ไม่สิ้นสุดเช่นนี้ (ซึ่งไม่ XML ควรใช้):
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
ยกเว้นกฎของสถานที่ให้บริการ
มีเสมอกฎอื่น
กฎระเบียบเกี่ยวกับคุณสมบัติฉันมีข้อยกเว้น
บางครั้งผมใช้รหัสองค์ประกอบที่ระบุ โปรแกรมเหล่านี้สามารถนำมาใช้เป็นชื่อแอตทริบิวต์ ID หรือรหัสในการเข้าถึงองค์ประกอบ XML ใน HTML ในสถานการณ์เดียวกันเป็นจำนวนมาก ตัวอย่างต่อไปนี้แสดงให้เห็นถึงวิธีการนี้:
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
เอกสาร XML ในตัวอย่างข้างต้น ID เพียงหนึ่งเคาน์เตอร์หรือตัวระบุที่ไม่ซ้ำกันในการระบุบันทึกที่แตกต่างกันมากกว่าที่จะเป็นส่วนหนึ่งของข้อมูล
ผมอยากจะบอกนี่คือเมตาดาต้าที่ (ข้อมูลเกี่ยวกับข้อมูล) ควรจะเก็บไว้เป็นคุณลักษณะและข้อมูลที่ตัวเองควรจะเก็บไว้เป็นองค์ประกอบ