Publicatie:XML Namespaces
Een eenvoudige manier om XML-elementen en -attributen op een eenduidige manier door een computer te laten identificeren, is gebruik maken XML-namespaces. XML-namespaces zijn verzamelingen van "namen" voor XML-elementen die eenduidig identificeerbaar gemaakt worden door die namen op te nemen in een Standaard:URI.
De naam
"boek"
wordt in een namespace bijvoorbeeld aangeduid met:
"http://www.projectcest.be/catalogus/boek”
Door de elementen in een namespace te publiceren, kunnen deze elementen gedeeld worden door verschillende computersystemen en digitale inventarissen en wordt de data in digitale inventarissen makkelijk uitwisselbaar.
Homonymie
XML-namespaces werden aanvankelijk ontwikkeld als een oplossing voor het probleem van homonieme XML-elementen. Stel dat je in eenzelfde XML-document de beschrijving van een roman en een stel speelkaarten identificeert met de tag <boek>, zoals in het volgende voorbeeld:
De tag (<boek>) bevat in dit voorbeeld uiteenlopende XML-elementen met een heel andere conceptuele inhoud. Een computersysteem wordt in verwarring gebracht omdat het een beschrijving van een roman ontvangt, terwijl het een beschrijving van een stel speelkaarten verwacht. Het computersysteem zal je data dus niet correct kunnen lezen (interpreteren), presenteren en verwerken.
Een manier om een computersysteem onderscheid te laten maken tussen beide "boek"-elementen is de naam op te nemen in een Standaard:URI, bijvoorbeeld:
Het eerste deel van de URI is de identifier voor de namespace: http://www.projectcest.be/kaart vertelt de computer dat deze namespace de verzameling is van alle namen waarmee de organisatie "CEST" speelkaarten beschrijft. http://www.projectcest.be/catalogus is een namespace van dezelfde organisatie die namen bevat om boeken te beschrijven. Daarna volgt de naam van het specifieke element. In dit voorbeeld is dat dus "boek". Door URI's te gebruiken in plaats van enkel de naam voor het element, kan een computer onderscheid maken tussen een boek dat een roman beschrijft en een boek dat speelkaarten beschrijft.
Prefix
Om niet steeds de volledige URI op te nemen in een XML-tag, maken XML-documenten gebruik van een prefix waaraan de identifier van de namespaces wordt gekoppeld. Bekijk het volgende voorbeeld:
Merk op hoe de elementen die de roman beschrijven een prefix "cat:" bevatten en de elementen die de speelkaart beschrijven een prefix "bo:". Bovendien wordt de identifier van de namespace vastgelegd door het attribuut "xmlns:prefix" in de moedertag van de beschrijving: het prefix “cat:” is gekoppeld aan de URI “http://www.projectcest.be/catalogus”, het prefix “bo” is gekoppeld aan de URI “http://www.projectcest.be/kaart”.
De keuze van de prefixen en de URI's voor de identificatie van de namespace is volledig vrij. Het staat de maker van een XML-document vrij om de prefix van de namespace te veranderen. Ook voor het maken van URI's heb je de volledige vrijheid. Ze dienen enkel om namen van XML-elementen formeel te laten identificeren door een computersysteem. Als je de URI's uit bovenstaand voorbeeld klikt, leiden ze naar onbestaande pagina's.
Standaard Namespaces
Om je data uitwisselbaar te maken, moet de namespace van je data natuurlijk wel bekend zijn bij andere computersystemen. Dat kan door je namespace op het web te publiceren of, nog beter, gebruik te maken van standaard namespaces. Vaak zijn de grote bewaarinstellingen binnen een bepaalde sector hierin richtinggevend. De Library of Congress beheert bijvoorbeeld een reeks standaarden voor de uitwisseling van data die elk hun eigen namespace hebben (zie bijvoorbeeld Standaard:MODS en Standaard:EAD). Deze namespaces hebben een standaard namespace identifier en een standaard prefix waardoor je data meteen leesbaar is voor computersystemen die bijvoorbeeld de standaard MODS en EAD implementeren.
Het bekendste voorbeeld van een XML-namespace is de Dublin Core namespace (prefix: dc). De Dublin Core namespace wordt gebruikt voor de identificatie en beschrijving van resources die beschikbaar worden gemaakt op het internet. Ook wanneer je digitale representaties van je collectieobjecten op het web publiceert, vragen zoekmachines vaak om de bijhorende metadata beschikbaar te maken als Dublin Core. Dit betekent dat je (een selectie van) de data uit je collectiebeheersysteem eerst moet mappen naar een XML-document met elementen ontleend aan de Dublin Core namespace, vooraleer je de data kan uitwisselen met de zoekmachine. Het bekendste voorbeeld van een dergelijke zoekmachine is Europeana. Europeana is een Europese zoekmachine voor cultureel erfgoed die de data over cultureel erfgoed uitwisselt met behulp van Dublin Core elementen.