استفاده از فضاهاي نام در XML در دو فصل گذشته چگونگي تعريف الگو مجموعهاي از عناصر و ويژگيهاي تشكيل دهنده اسناد XML را ياد گرفتيد. حالا فرض كنيد كه ميخواهيد اسناد خود را با اسناد شخص ديگري تركيب نماييد. ولي ا ن شخص در الگوهاي خود از نامهايي استفاده كرده كه شما براي عناصر سراسري خود در نظر گرفتهايد. براي مثال سند Endangered Specise مطرح شده در اين كتاب از "source" براي نشان دادن منبع دادههاي سايت World Wildlife Fund's به كار رفته است. در حالي كه شايد شما از Source براي نمايش منابع ا ب رودخانهها استفاده كرده باشيد. اگر بخواهيم اين اسناد را با يكديگر تركيب كنيم داده عنصر Source بي معني خواهد شد. راه حل اين مشكل ايجاد يك superlabel است كه قادر به تشخيص عناصر افراد مختلف باشد. براي مثال ميتوان عبارت "Liz:" را براي تمام عناصر يك سند در نظر گرفت. بنابراين عنصر Liz: Source از يك سند با عنصر your:source از سند ديگر اشتباه نميشود. البته Liz حالت انحصاري ندارد. نام superlaber از يك ا درس URL بر اساس نام دامنه مناسب انتخاب ميشود تا منحصر به فرد باشد. زيرا اسامي دامنهها انحصاري ميباشند. به superlabel در اصطلاح نام فضاي نام ميگويند. فضاي نام مجموعهاي از نامهاي عناصر مرتبط است. به دليل اينكه عناصري كه به صورت محلي اعلان ميشوند منحصر به فرد ميباشند (صفحه ٧١) كمتر به استفاده از فضاي نام نياز پيدا ميكنند. ٨ شكل ١-٨. در الگوي فرضي "RiversML" تمام عناصر به صورت سراسري در بالاي سند اعلان شدهاند و سپس در تعريف نوع پيچيده به ا نها ارجاع داده شده است. شكل ٢-٨. در اين الگو تمام عناصر به صورت سراسري اعلان گشتهاند. اگر اسناد ايجاد شده توسط اين الگو را با اسناد ايجاد شده توسط شكل ١-٨ تركيب كنيم عناصر name و source دو گروه با يكديگر تداخل نخواهند داشت.
XML ١١٤ استفاده ازفضاهاي نام در XML طراحي يك نام فضاي نام به دليل اينكه فضاهاي نام بخشهاي مشابه عناوين عناصر را از يكديگر تشخيص ميدهند بايد نام منحصر به فردي داشته باشند. در XML نامهاي فضاهاي نام شكلي از URL هستند. براي طراحي يك نام فضاي نام : ١- كار نامگذاري را با نام دامنه خود ا غاز نماييد. ٢- براي منحصر به فرد بودن نام فضاي نام اطلاعات توضيحي بيشتري (مانند يك مسير (URL اضافه كنيد. عمليترين روش براي ايجاد نام منحصر به فرد فضاي نام يك ا درس URL است. اگر بخواهيد ميتوانيد به فضاي نام اطلاعات توضيحي اضافه كنيد. استفاده از دامنه شخصي به عنوان اساس نامگذاري فضاهاي نام راه مطمي ني براي ايجاد نامهاي منحصر به فرد است زيرا نام دامنهها انحصاري هستند. در ابتداي نام فضاي نام از نام دامنه هيچ شخص ديگري استفاده نكنيد. دليل استفاده از ا درسهاي URL براي نامهاي فضاهاي نام انحصاري بودن ا نهاست. از ا نجا كه يك URL ممكن است به يك DTD يا يك الگو نيز اشاره كند اين روش از طرف W3C روش تا ييد شما و قطعي نيست. بهتر است از ا درسي استفاده كنيد كه هيچگاه تغيير نكند و به هيچ فايلي ارجاع داده نشود. اطلاعات فهرست فضاهاي نام اختياري نام دامنه شما توضيح كوتاه اين فضاي نام شماره نگارش (اختياري) پروتكل شروع شكل ٣-٨. يك فضاي نام ميتواند شكلي از يك ا درس URL باشد. براي مثال با پروتكل استاندارد HTTP ا غاز شود و در ادامه ا ن نام دامنه شما قرار گيرد. ميتوان يك توضيح كوتاه و يك شماره نگارش نيز به طور اختياري به ا ن اضافه نمود. ا درس URL نبايد به يك فايل اشاره كند.
فصل هشتم: استفاده از فضاهاي نام در شكل استفاده از فضاهاي نام در XML ١١٥ XML اعلان فضاهاي نام پيش فرض پس از طراحي يك نام فضاي نام ميتوان ا ن را براي تمام سند يا هر بخش از ا ن به صورت پيش فرض اعلان كرد. به منظور اعلان يك فضاي نام پيش فرض براي يك عنصر و تمام فرزندان ا ن. -١-٢ در برچسب شروع عنصري كه ميخواهيد فضاي نام داشته باشد عبارت xmlns= را تايپ كنيد. سپس "URL" شماست (صفحه ١١٤). را تايپ كنيد. URL نام فضاي نام اختصاص دادن فضاي نام براي يك عنصر به صورتي كه در بالا گفته شد نه تنها بر ا ن عنصر بلكه بر تمام عناصر تشكيل دهنده ا ن نيز اثر ميگذارد. البته در صورتي كه به اين عناصر فضاهاي نام ديگري تخصيص داده نشده باشد. اگر يك فضاي نام پيش فرض براي عنصر ريشه يك سند در نظر بگيريد تمام عناصر ا ن سند تحت پوشش فضاي نام مذكور قرار ميگيرند. البته به شرطي كه به عناصر ديگر فضاي نام ديگري اختصاص دهيد (صفحههاي ١١٦ و ١١٧). فضاي نامي كه براي تمام (يا بخشي از) سند به كار رود فضاي نام پيش فرض ناميده ميشود زيرا بر تمام عناصر سند (يا بخشي از ا ن) اثر ميگذارد. مگر ا نكه براي برخي از عناصر فضاي نام ديگري در نظر گرفته شود. با تعيين فضاي نام پيشوندي براي يك عنصر ميتوانيد از فضاي نام پيش فرض صرفنظر كنيد (صفحههاي ١١٦ و ١١٧). اين عمل بر عناصر فرزند اثري نميگذارد. عنصر ٨-٤. Source جزي ي از فضاي نام http://www.cookwood.com/ns/end_species1 شده است. براي عناصر ديگر هيچ فضاي نامي در نظر گرفته نشده است. شكل ٥-٨. در اين مثال با اعلان فضاينام در عنصر ريشه تمام عناصر سند به فضاينام زير اختصاص يافتهاند: http://www.cookwood.com/ns/end_species1 در صفحات ١١٦ و ١١٧ درباره صرفنظر كردن از فضاي نام پيش فرض صحبت شده است.
XML ١١٦ فضاهاي نام براي عناصر جداگانه استفاده ازفضاهاي نام در XML اگر ميخواهيد در سند خود به عناصر جداگانه فضاهاي نام جداگانه اختصاص دهيد به گونهاي كه روي عناصر فرزند ا نها اثر نگذارد بايد ابتدا براي فضاي نام يك پيشوند در نظر بگيريد و سپس ا ن پيشوند را براي عناصر جداگانه به كار بريد. به منظور اعلان يك پيشوند براي نام فضاي نام : در عنصر ١- ريشه سند عبارت xmlns:prefix -٢ كنيد. منظور از prefix پيشوند فضاي نام است. سپس عبارت ="URL" را تايپ نماييد. URL نامي است كه پيشوند را براي ا ن در نظر گرفتهايد. را تايپ فضاي در پيشوند نميتوان از حروف كوچك و بزرگ m x و l استفاده كرد. ميتوانيد يك پيشوند را براي هر يك از عناصر تشكيل دهنده عنصري كه پيشوند را براي ا ن اعلان كردهايد به كار بريد. يعني اگر پيشوندي را براي عنصر ريشه در نظر بگيريد ا ن پيشوند براي تمام عناصر و ويژگيهاي سند كه از ا ن عنصر ريشه مشتق شدهاند قابل استفاده است. اگر پيشوندي را در عنصر ديگري اعلان كنيد تنها براي همان عنصر و عناصر فرزند ا ن قابل استفاده است. تعداد فضاهاي نام پيشوندي در هر عنصر به نياز شما بستگي دارد. شكل ٦-٨. با اعلان فضاي نام rivers1 در عنصر ريشه سند و نسبت دادن ا ن به يك پيشوند ميتوان عناصر متعلق به فضاي نام revers1 را براي عناصر جداگانه در نظر گرفت (شكل ٨-٨). اعلان فضاي نام rivers1 در عنصر endangered_species بر فضاي نام عنصر endangered_species اثري نميگذارد. شكل. ٨-٧ چون فضاي نام rivers1 rivers:habitat در عنصر اعلان شده است تنها براي عنصر و عناصر تشكيل دهنده ا ن قابل استفاده است و بر عناصر خارج از عنصر rivers:habitat اثر نميگذارد.
فصل هشتم: استفاده از فضاهاي نام در استفاده از فضاهاي نام در XML ١١٧ XML پس از اعلان يك پيشوند و فضاي نام مربوط به ا ن ميتوان ا ن پيشوند را براي عناصر جداگانه با فضاهاي نام گوناگون در سند XML مورد استفاده قرار داد. اين امر اثري بر عناصر فرزند عناصر مذكور نخواهد گذاشت. به منظور تخصيص فضاهاي نام گوناگون براي عناصر جداگانه : -١-٢ -٣-٤ براي ا غاز اعلان عنصر علامت < را تايپ كنيد. سپس عبارت prefix: را تايپ نماييد. prefix مشخصه فضاي نام عنصري است كه اعلان خواهيد كرد. واژه element را تايپ كنيد. element نام عنصري است كه ميخواهيد به كار بريد. اعلان عنصر را كامل نماييد. با توجه به وجود يا فقدان ويژگي از برچسب پايان > يا </ استفاده كنيد (فصل اول). عنصري به يك فضاي نام مربوط ميگردد كه پيشوند ا ن با پيشوند فضاي نام يكسان باشد. اگر فضاي نام پيش فرض (صفحه ١١٥) وجود داشته پردازشگر باشد XML عناصر بدون پيشوند را به ا ن نسبت ميدهد. يك پردازشگر XML پيشوند را به عنوان بخشي از نام عنصر در نظر ميگيرد. بنابراين بايد چسبهاي شروع و پايان يكسان باشند. يعني اگر برچسب شروع <rivers:source> است براي برچسب پايان نيز از </rivers:source> استفاده نمود. اگر عناصر و ويژگيهاي يك قسمت از يك فضاي نام استفاده ميكنند بهتر است براي بالاترين عنصر ا ن قسمت يك فضاي نام پيش فرض تعريف كرد.(١١٥ شكل ٨-٨. هر عنصر متعلق به فضاي نام rivers1 با rivers: مشخص ميگردد. مكرر تايپ گاهي rivers: وقتگير و خسته كننده ميشود و در مورد تايپ مكرر عبارتهايي شبيه عبارت زير وضع از اين هم بدتر ميشود:. http://www.cookwood.com/ns/rivers1 (صفحه
XML ١١٨ تا ثير فضاهاي نام بر ويژگيها يك ويژگي را به يك فضاي نام خاص با پيشوندي مناسب ميتوان نسبت داد ولي ضرورتي ندارد زيرا ويژگيها توسط عناصري كه شامل ا نها هستند منحصر به فرد ميشوند. براي مثال هنگامي كه ويژگي sectionid در عنصر source ديده ميشود يعني به عنصر source كه متعلق به فضاي نام end_species1 است تعلق دارد. اگر در عنصر orange نيز استفاده ازفضاهاي نام در XML ويژگي sectionid ببينيد بي هيچ ترديدي و بدون نياز به توضيح بيشتر در مييابيد كه اين ويژگي به عنصر orange تعلق دارد زيرا در عنصر orange قرار دارد. فضاهاي نام پيش فرض براي ويژگيها كاربردي ندارند. به ندرت اتفاق ميافتد كه ويژگيها پيشوند داشته باشند. اگر ويژگي پيشوند نداشته باشد فضاي نامي براي ا ن در نظر گرفته نميشود و به صورت محلي توسط عناصر در بر گيرنده معرفي ميگردد. در حقيقت موقعيت ويژگيها در عناصر محلي تفاوت زيادي ندارد. بيشتر توسط عناصري كه شامل ا نهاست و گاهي با يك فضاي نام معرفي ميگردند. شكل ٨-٩. عناصر source و orange هر دو داراي ويژگي sectionid هستند ولي هيچ مشكل و تداخلي بهوجود نميا يد زيرا هريك توسط عنصر جداگانهاي معرفي شدهاند. در نتيجه معرفي ا نها به فضاي نام نياز ندارد.
١١٩ فصل هشتم: استفاده از فضاهاي نام در XML فضاهاي نام DTDها و سندهاي معتبر اگر چه شما يك عنصر را تنها با نام ا ن تصور ميكنيد ولي پردازشگر XML عناصر را به صورت prefix:element در نظر ميگيرد. براي مقايسه سند با يك DTD بايد تمام عناصر پيشوندي را در DTD اعلان كنيد. همچنين اگر يك ويژگي با يك فضاي نام معرفي شده بايد ا ن را با عبارت xmlns يا xmlns:prefix مشخص نمود. به دليل عدم پشتيباني مستقيم از فضاهاي نام DTDها به الگوهايي كه در XML Schema نوشته ميشوند ترجيح داده ميشوند. براي بهدست ا وردن اطلاعات بيشتر درباره DTDها به فصل دوم (صفحه ٣٣) مراجعه كنيد. استفاده از فضاهاي نام در XML