RELOAD – open source Metadata editor (deel 2)

Zoals bij deel 1 aangegeven vinden er regelmatig discussies plaats rond de exacte implementatie van (onderdelen) van de specificaties die door de RELOAD editor moeten worden ondersteund. In deel 2, “xml:base”
Binnen een contentpackage kan door middel van absolute urls of relatieve urls verwezen worden naar de resources die in de package gebruikt worden.
Zo verwijst http://www.gorissen.info/pierre/files/images/51_Reload_01.png bijvoorbeeld met behulp van een absolute url naar een schermafdruk (resource).
Een relatieve url zou zijn: /pierre/files/images/51_Reload_01.png of files/images/51_Reload_01.png.
Binnen een contentpackage zou het verwijzen naar een aantal resources met absolute urls er zou uit kunnen zien:

<resources>
<resource identifier="RES01" type="webcontent" href="http://www.mydomain.com/resources/res01.html">
<file href="http://www.mydomain.com/resources/res01.html" />
<file href="http://www.mydomain.com/resources/res02.html" />
<file href="http://www.mydomain.com/resources/res03.html" />
<file href="http://www.mydomain.com/resources/res04.html" />
</resource>
</resources>

Met behulp van xml:base is het mogelijk dat zo op te slaan:

<resources>
<resource identifier="RES01" type="webcontent" href="res01.html" xml:base="http://www.mydomain.com/resources/">
<file href="res01.html" />
<file href="res02.html" />
<file href="res03.html" />
<file href="res04.html" />
</resource>
</resources>

De voordelen zijn direct zichtbaar: de notatie is duidelijker en het is eenvoudiger (indien gewenst) de locatie van de resources aan te passen.

Waarom dan problemen? Nou, voornamelijk door de keuze van de elementen waar je allemaal een xml:base eigenschap aan mag toevoegen: <manifest>, <resources> en <resource>. Voor het <manifest> is daarbij een probleem voor de RELOAD editor. Want de editor zal straks zowel geneste manifesten aan moeten kunnen én een viewer bevatten (dus in staat moeten zijn de adressen van resources correct te vertalen naar absolute adressen).
Kijk bijvoorbeeld eens naar het volgende (vereenvoudigde) voorbeeld:

<manifest xml:base="http://www.test.com/">
   <resources xml:base="folder1/">
     <resource xml:base="here/" href="foo.doc">
       <file href = "foo.doc"/>
     </resource>
   </resources>
   <manifest xml:base="/rootfolder/">
     <resources xml:base="folder2/">
       <resource xml:base="there/"
href="bar.doc">
         <file href = "bar.doc"/>
       </resource>
     </resources>
   </manifest>
</manifest>

Wat is nu de juiste absolute url voor bar.doc ? De W3C documentatie over xml:base en ook RFC2396 behandelen geen van beide deze situatie op een eenduidige manier. Ook de IMS Contentpackaging specificatie biedt hier geen antwoord op. De voorbeelden van IMS bevatten deze situatie niet. Het ziet er naar uit dat de RELOAD mensen dit voorlopig ofwel even moeten negeren (voor zover dat mogelijk is), ofwel gewoon zelf een keuze moeten maken.
IMS raadt het gebruik van relatieve urls die beginnen met ‘/’ (zie ook hierboven) binnen de specificatie overigens af.

Overigens gebruik ik in dit voorbeeld resourcenamen als “res01.html”, “res02.html”. Over het uniek identificeren van resources is ook e.e.a. te zeggen. Daarover een volgende keer meer.