با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه گذشته کار با Attributes ها در DTD را فرا گرفتیم و در جلسه پیش از آن نیز به کار با عناصر در DTD آشنا شدیم؛ لذا وقت آن رسیده به که مقایسه این دور بپردازیم و این جلسه یعنی بررسی و مقایسه Attributes ها و عناصر در DTD به همین منظور تهیه شده و ارائه می گردد.
در XML هیچ گونه قانونی مبنی بر زمان استفاده از attributes و نیز زمان استفاده از عناصر فرزند child وجود ندارد.
داده ها را می توان در عناصر child یا attributes ها ذخیره کرد.
نگاهی به این مثالها بی اندازید:
1 2 3 4 | <person sex="female"> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> |
1 2 3 4 5 | <person> <sex>female</sex> <firstname>Anna</firstname> <lastname>Smith</lastname> </person> |
در مثال اول جنسیت یک attribute است. اما در گذشته، جنسیت یک عنصر child محسوب می شد.
البته هر دو نمونه اطلاعات مشابهی را ارائه می دهند.
هیچ زمان مشخصی در مورد استفاده از attributes ها و یا استفاده از عناصر child وجود ندارد. اما تجربه من این است که ویژگی ها در HTML مفید هستند، اما در XML سعی کنید از آنها اجتناب نمایید.
البته زمانی که با اطلاعات feels یا information feels مانند داده ها سر و کار دارید می توانید از عناصر child استفاده نمایید.
راه مورد علاقه من این است که داده ها را در عناصر child ذخیره کنم.
سه اسناد XML زیر دقیقا یکسان هستند:
یک ویژگی تاریخ date attribute در مثال اول استفاده می شود:
1 2 3 4 5 6 | <note date="12/11/2002"> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> |
یک عنصر تاریخ date element هم در مثال دوم استفاده می شود:
1 2 3 4 5 6 7 | <note> <date>12/11/2002</date> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note> |
حالا هم یک عنصر تاریخ گسترش یافته expanded date element نیز در سومین مورد استفاده می شود: (این یکی بیش از همه مورد علاقه من است):
1 2 3 4 5 6 7 8 9 10 11 | <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> |
در ادامه به برخی از مشکلات و کاستی های attributes اشاره می نماییم:
اگر از attributes ها به عنوان ظروفی حاوی داده ها استفاده می کنید در آن صورت در انتها با اسنادی رو به رو می شوید که قابلیت خوانایی و تفسیر پایینی دارند.
لذا توصیه می کنم از attributes ها فقط برای ارائه اطلاعاتی که مربوط به داده ها نیست استفاده کنید.
کار زیر را انجام ندهید (این عمل را درستی برای استفاده از XML نیست):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <messages> <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> |
ID در این مثال فقط یک شمارنده یا یک تعیین کننده منحصر به فرد برای شناسایی یادداشت های مختلف در فایل XML است؛ نه بخشی از داده های note.
آنچه که می خواهم بگویم این است که متادیتاها ( داده ای که در مورد داده است) باید به عنوان attributes ذخیره شود و آن داده نیز خودش به عنوان عنصر.
در این جلسه به بررسی و مقایسه Attributes ها و عناصر در DTD پرداختیم.
در جلسه بعد که آخرین جلسه از این سر فصل آموزشی است به کار بر روی Entities ها خواهیم پرداخت.
با پی وی لرن همراه باشید.