XML Namespaces(İsim Uzayları)

Eyl 08, 2013

XML (Extensible Markup Language- Genişleyebilir İşaretleme Dili) bir etiketleme dilidir ve etiket isimleri programcı tarafından belirlenir. Farklı XML uygulamalarından birlikte kullanılan XML kaynakları aynı isimde etiketlere sahip olabilir. Bu çakışmayı önlemek için namespace (isim uzayı) ve prefix (ön ek) kullanılır. Namespace tanımlarken URI (Uniform Resource Identifier) namespace ismi olarak verilir. En yaygın kullanılanı URL (Uniform Resource Locator), diğeri ise URN (Uniform Resource Name) dir. URL ve URN'nin namespace olarak kullanım amacı namespacelerin tek olmasını sağlamaktır ve hangisinin kullanılacağı programcının tercihine bırakılmıştır. URL namespace olarak kullanıldığında karışıklığa sebep olabilir; ancak namespace isimleri sadece tanıtıcı etiketlerdir ve anlamlı adres işaret etmek zorunda değildirler. URN kullanıldığında bunun yanlış bir düşünce olduğu görülmektedir. Örneğin; namespace ismi  olarak;

<xmlns:xbe="urn:ISBN:0-7897-2504-5"></xmlns:xbe> ve
<xmlns:foo="urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"></xmlns:foo>

URN adresleri kullanılabilir.

Sonuç olarak namespace isimleri Web üzerinde bir şeyi ya da adresi göstermez.
Prefix ise etiketlerin başında kullanılarak aynı isimdeki etiketlerin hangi namespace’e ait olduğunu gösterir ve çakışmasını engeller.
XML verileri, HTML etiketleri içinde kullanılarak web sayfasında görüntülenebilir, ayrıca XML etiketi içerisinde HTML’in tasarım özelliklerinden de yararlanılabilir.

Aşağıdaki örnek, ITU Graduates adlı sayfanın XML kaynağını gösterir.

<h:html xmlns:gdc="http://www.itu.edu.tr/graduates"
xmlns:h="http://www.w3.org/HTML/1998/html4">
     <h:head>
          <h:title>ITU Graduates</h:title>
     </h:head>
     <h:body>
          <gdc:graduate>
               <gdc:title>2011 Graduates</gdc:title>
           <h:table>
               <h:tr>
                    <h:td>Name</h:td>
                    <h:td>Surname</h:td>
                    <h:td>Department</h:td>
               </h:tr>
               <h:tr>
                    <h:td><gdc:name>Name1</gdc:name></h:td>
                    <h:td><gdc:surname>Surname1</gdc:surname></h:td>
                    <h:td><gdc:department>mathematics engineering</gdc:department></h:td>
               </h:tr>
           </h:table>
          </gdc:graduate>
     </h:body>
</h:html>

Örnekte kullanılan namespace adı "http://www.itu.edu.tr/graduates" adresidir. Bu namespace’in prefix’i “gdc” dir. Bir diğer namespace "http://www.w3.org/HTML/1998/html4" ise HTML'indir ve prefix'i "h" dir.