Gebruik van de DiWoo-XSD

Deze pagina beschrijft hoe de XML-bestanden die voldoen aan de diwoo-metada.xsd gestructureerd zijn.

Sitemap

De diwoo-metadata.xsd is een extensie van het sitemap-protocol. Dat betekent dat een sitemap-XML-document allereerst de sitemap-structuur volgt, met de default namespace http://www.sitemaps.org/schemas/sitemap/0.9:

<?xml version="1.0" encoding="utf-8"?>
<urlset 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  <url><loc><!-- URL van document --></loc></url>
  <url>...</url>
  <url>...</url>
 ... 
</urlset> 

Om de extensie te gebruiken moet de namespace van diwoo worden gedeclareerd. Dit kan op verschillende manieren; hieronder worden twee gebruikelijke manieren getoond.

Namepace op de root

In XML kan een namespaces aan een prefix worden gekoppeld via een namespace binding die over het algemeen aan het root-element wordt gegeven, in dit geval urlset:

<?xml version="1.0" encoding="utf-8"?>
<urlset 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:diwoo="https://standaarden.overheid.nl/diwoo/metadata/"  
  <url><loc><!-- URL van document --></loc></url>
  <url>...</url>
  <url>...</url>
 ... 
</urlset> 

De DiWoo-metadata wordt opgenomem in een kind van <url>, diwoo:Document

<?xml version="1.0" encoding="utf-8"?>
<urlset 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:diwoo="https://standaarden.overheid.nl/diwoo/metadata/"  
  <url>
    <loc><!-- URL van document --></loc>  
    <diwoo:Document>
      <diwoo:DiWoo>
         <!-- hier de metadata van het bestand op <loc> -->         
      </diwoo:DiWoo>
    </diwoo:Document>
  </url>
  ...  
</urlset>  

Namespace op element diwoo:Document

De namespace mag ook op het element diwoo:Document worden gedeclareerd; daarmee is de namespace-binding op het root-element niet meer nodig:

<?xml version="1.0" encoding="utf-8"?>
<urlset 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"  
  <url>
    <loc><!-- URL van document --></loc>  
    <Document xmlns="https://standaarden.overheid.nl/diwoo/metadata/">
      <DiWoo>
         <!-- hier de metadata van het bestand op <loc> -->
      </DiWoo>
    </Document>
  </url>
  ...  
</urlset>  

XSD-aanroep

Een sitemap-XML-document moet voldoen aan twee XSD's:

  • de standaard sitemap.xsd en
  • de diwoo-metadata.xsd. Dit kan worden uitgedrukt door in het attribuut xsi:schemaLocation de namespaces te koppelen aan beide XSDs:
<?xml version="1.0" encoding="utf-8"?>
<urlset 
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:diwoo="https://standaarden.overheid.nl/diwoo/metadata/"  
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="
    http://www.sitemaps.org/schemas/sitemap/0.9
      http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd
    https://standaarden.overheid.nl/diwoo/metadata
      https://standaarden.overheid.nl/diwoo/metadata/0.9.1/diwoo-metadata.xsd"  
  <url>
    <loc><!-- URL van document --></loc>
    <diwoo:Document>
      <diwoo:DiWoo>
         <!-- hier de metadata van het bestand op <loc> -->
      </diwoo:DiWoo>
    </Document>
  </url>
  ...  
</urlset>  

diwoo:Document

diwoo:Document is het containerelement van de metadata van het document dat op <loc> te vinden is.

Een Document kan op verschillende manieren van metadata worden voorzien:

  • diwoo:DiWoo volgens de DiWoo-standaard
  • diwoo:extraMetadata met naam-waarde-paren
  • diwoo:extraMetadata in een eigen gedefinieerd XML-formaat, verplicht in een eigen namespace. Voor dit eigen formaat mág wel maar hóeft geen eigen XSD gedeclareerd te worden.

Algemene eigenschappen van de diwoo-metadata.xsd

  • Alleen diwoo:Document heeft een globale declaratie; alle andere elementen hebben géén globale maar alleen een lokale declaratie. Dit heeft als gevolg dat alleen diwoo:Document mag dienen als root-element van de extension, dus als kind-element van sitemap:url.
  • De TOOI-URIs worden genoteerd in het attribuut @resource, de "mensleesbare" labels (rdf:Literals) zijn de inhoud van het element.
  • Het attribuuut @resource van een beperkt aantal elementen kent een waardelijst. Deze zijn uitgedrukt in een eigen diwoo-metadata-lijsten.xsd met daarin xs:simpleTypes met xs:enumerations. Deze enumeraties komen één-op-één uit de corresponderende TOOI-waardelijsten.
  • Sommige gerelateerde eigenschappen zijn verzameld in een "-collectie"-container (zoals titelcollectie of classificatiecollectie). Deze collectie-elementen kennen geen semantiek en derhalve geen tegenhanger in TOOI.
  • De volgorde van metadata-elementen ligt niet vast in XSD. In technische termen: er is zoveel als mogelijk gebruik gemaakt van xs:all voor "onbepaalde volgorde", en dus geen xs:sequence in de content-modellen waarin verschillende eigenschappen worden opgesomd en ook voor de "collectie"-elementen. De XSD-standaard zelf dwingt af dat er "meervouds-containers" nodig zijn voor alle elementen die meer dan ééns mogen voorkomen. Dit komt overeen met een veelgebruikt patroon voor JSON-arrays.