imop schematron (generieke validatie)

Versie:0.1; Datum: 2019-04-15+02:00

Aantal:40 Patronen (pattern); 43 Regels (rule); 60 Handhaven (assert); 3 Rapporteren (report)

Inhoud

variabelen; Tekststructuur; Datastructuur; Datatypering

Variabelen

aknIdentifier
'^/akn/[0-9a-zA-Z/_\-\.#;@]+(!main|!something)?$'
joinIdentifier
'^/join/[0-9a-zA-Z/_\-\.#;@]+(!main|!something)?$'
joinOfAkn
'^(/join|/akn)/[0-9a-zA-Z/_\-\.#;@]+(!main|!something)?$'
decimaalFormaat
'^[-]?\d*,?\d+$'
publicatiesToestand
  • Cvdr
  • BWB
  • publicatiesBesluit
  • Staatscourant
  • Staatsblad
  • Tractatenblad
  • Gemeenteblad
  • Provinciaal blad
  • Waterschapsblad
  • Blad gemeenschappelijke regeling
  • typeBevoegdGezag
  • Ministerie
  • Provincie
  • Gemeente
  • Regionaal Samenwerkingsorgaan
  • Waterschap
  • typeDocument
  • AMvB
  • Minreg
  • Omgevingsplan
  • Omgevingsverordening
  • Waterschapsverordening
  • collectieTypeObject
    'imop:Geometrie'
    bronType
  • overgenomen
  • achtergrond
  • zelf ingewonnen
  • berekend
  • kwalitatief
  • indicatief
  • exact
  • kenmerken
  • imop:Regelkwalificatie
  • imop:Normadressaat
  • Patronen (pattern)

    Patronen voor tekststructuur

    Artikel zonder content

    Context imop:Artikel
    Handhaven Een Artikel MOET content bevatten
    Test [child::imop:Lid | child::imop:Inhoud]
    Boodschap Element [...] @eId="[@eId]" heeft geen content.

    Besluit en Toestand: verplichte metadata, gedeeld

    Context imop:Besluit/imop:Metadata
    imop:Toestand/imop:Metadata
    Handhaven Een Besluit of Toestand MOET een uniek identificerend gegeven hebben (als AKN).
    Test [imop:Uitspraak/@eigenschap = 'imop:identificatie']
    Boodschap De identificatie van het document voor een [local-name(ancestor::imop:Besluit | ancestor::imop:Toestand)] MOET aanwezig zijn.
    Handhaven Een Besluit of Toestand MOET aangeven aan welk toepassingsprofiel de tekst voldoet.
    Test [imop:Uitspraak/@eigenschap = 'imop:conformProfiel']
    Boodschap Het Profiel voor validatie door LVBB MOET aanwezig zijn.
    Handhaven Een Besluit of Toestand MOET het type bevoegd gezag aangeven.
    Test [imop:Uitspraak[@eigenschap = 'imop:typeBevoegdGezag']]
    Boodschap Het type bevoegd gezag voor een [local-name(ancestor::imop:Besluit | ancestor::imop:Toestand)] ontbreekt.
    Handhaven Een Besluit of Toestand MOET vastleggen welk juridisch documenttype het betreft.
    Test [imop:Uitspraak[@eigenschap = 'imop:typeDocument']]
    Boodschap Het type document voor een [local-name(ancestor::imop:Besluit | ancestor::imop:Toestand)] ontbreekt.
    Handhaven Een Besluit of Toestand MAG een datacollectie hebben.
    Test [imop:Uitspraak[@eigenschap = 'imop:heeftDatacollectie']]
    Boodschap OPTIONEEL - Uitspraak "heeft datacollectie" ontbreekt.

    Besluit: verplichte metadata, soort publicatie

    Context imop:Besluit/imop:Metadata/imop:Uitspraak[@eigenschap = 'imop:soortPublicatie']/imop:Waarde
    Handhaven De vermelding van de publicatie MOET volgens de juiste schrijfwijze (volgens een vastgestelde waardelijst).
    Test [matches(., $publicatiesBesluit)]
    Boodschap [[.]] - De soort publicatie voor een Besluit is niet correct.

    Lijst: nummering afhankelijk van het type van de lijst

    Context imop:Lijst[not(@type)]
    Handhaven Een Lijst zonder type aanduiding MOET worden behandeld als een lijst van het type 'expliciet'
    Test [count(imop:Li[not(imop:LiNummer)]) = 0]
    Boodschap Een Lijst van type 'expliciet' heeft verplicht altijd LiNummer elementen.
    Context imop:Lijst[@type = 'expliciet']
    Handhaven Een Lijst van het type 'expliciet' MOET genummerde lijst items hebben.
    Test [count(imop:Li[not(imop:LiNummer)]) = 0]
    Boodschap Een Lijst van type 'expliciet' heeft verplicht altijd LiNummer elementen.
    Context imop:Lijst[@type = 'ongemarkeerd']
    Handhaven Een Lijst van het type 'ongemarkeerd' MOET lijst items hebben zonder nummering.
    Test [count(imop:Li/imop:LiNummer) = 0]
    Boodschap Een Lijst van type 'ongemarkeerd' mag geen LiNummer elementen hebben.

    Nummer voor structuur en LidNummer voor WijzigArtikel

    Context imop:Nummer
    imop:LidNummer
    Handhaven Nummer voor structuur en LidNummer voor WijzigArtikel MAG NIET op een punt '.' eindigen.
    Test [ends-with(., '.')]
    Boodschap De nummering van element [local-name(parent::node())] met id [parent::node()/@eId] eindigt bij voorkeur NIET met een punt '.'

    Toestand: Verplichte metadata, soort publicatie

    Context imop:Toestand/imop:Metadata/imop:Uitspraak[@eigenschap = 'imop:soortPublicatie']/imop:Waarde
    Handhaven De vermelding van de publicatie MOET volgens de juiste schrijfwijze (volgens een vastgestelde waardelijst).
    Test [matches(., $publicatiesToestand)]
    Boodschap [[.]] - De soort publicatie voor een Besluit is niet correct.

    Toestand: verplichte metadata

    Context imop:Toestand/imop:Metadata
    Handhaven Een Toestand MOET een soort publicatie hebben.
    Test [imop:Uitspraak[@eigenschap = 'imop:soortPublicatie']]
    Boodschap De "soort publicatie" voor een Toestand ontbreekt.
    Handhaven Een Toestand MOET een datum inwerkingtreding hebben.
    Test [imop:Uitspraak[@eigenschap = 'imop:datumInwerkingtreding']]
    Boodschap De "datum inwerkingtreding" voor een Toestand ontbreekt.
    Handhaven Een Toestand MOET de AKN-identificatie voor de totstandkoming hebben.
    Test [descendant::imop:Object[@type = 'imop:AKNIdentification-totstandkoming']]
    Boodschap De "AKN identificatie voor totstandkoming" voor een Toestand ontbreekt.
    Handhaven Een Toestand MOET de AKN-identificatie hebben.
    Test [descendant::imop:Object[@type = 'imop:AKNIdentification']]
    Boodschap De "AKN identificatie voor een Toestand ontbreekt.
    Handhaven Een Toestand MOET een datum 'geldig vanaf' hebben.
    Test [imop:Uitspraak[@eigenschap = 'imop:datumGeldigheidVanaf']]
    Boodschap De "datum geldigheid vanaf" voor een Toestand ontbreekt.
    Handhaven Een Toestand MOET een datum 'geldig tot' hebben.
    Test [imop:Uitspraak[@eigenschap = 'imop:datumGeldigheidTot']]
    Boodschap De "datum geldigheid tot" voor een Toestand ontbreekt.

    Uitspraak: correcte typen eigenschap

    Context imop:Uitspraak[@eigenschap[starts-with(., 'imop:')]]
    Handhaven De van de Eigenschap van een Uitspraak MOET conform de standaard zijn.
    Test [@eigenschap/matches(., $UitspraakEigenschap)]
    Boodschap @eigenschap [@eigenschap] is niet correct voor Uitspraak.

    Uitspraak: type bevoegdgezag

    Context imop:Uitspraak[@eigenschap = 'imop:typeBevoegdGezag']/imop:Waarde
    Handhaven Een Uitspraak van eigenschap typeBevoegdGezag MOET een bekende waarde hebben.
    Test [matches(., $typeBevoegdGezag)]
    Boodschap [[.]] - Het type bevoegd gezag voor een [local-name(ancestor::imop:Besluit | ancestor::imop:Toestand)] is NIET correct.

    Waarde (XMLIncludeRef) met verwijzing naar een id attribuut

    Context imop:Waarde[@type = 'imop:XMLIncludeRef' and not(ancestor::imop:WijzigLid)]
    Handhaven Wanneer verwezen wordt naar een id-attribuut dan moet deze daadwerkelijk aanwezig zijn.
    Test [. = $idsglobal]
    Boodschap Bij gebruik van een Waarde met referentie naar een @id in hetzelfde document ten behoeve van kopiƫren van het XML fragment moet het id waarnaar verwezen - [.] wordt ook echt aanwezig zijn.

    Waarde (textIncludeRef) met verwijzing naar een id attribuut

    Context imop:Waarde[@type = 'imop:textIncludeRef' and not(ancestor::imop:WijzigLid)]
    Variabele: idsglobal Waarde: //element()/@id
    Handhaven Wanneer verwezen wordt naar een id-attribuut dan moet deze daadwerkelijk aanwezig zijn.
    Test [. = $idsglobal]
    Boodschap Bij gebruik van een Waarde met referentie naar een @id in hetzelfde document ten behoeve van letterlijke tekstkopie moet het id waarnaar verwezen ([.]) wordt ook echt aanwezig zijn.

    WijzigBijlage: wordt versie

    Context imop:WijzigBijlage
    Handhaven Een WijzigBijlagew MOET een gegeven 'wordtVersie' hebben.
    Test [imop:Metadata/imop:Uitspraak[@eigenschap = 'imop:wordtVersie']]
    Boodschap Gegeven "Wordt versie" voor [...] [[@wId]] ontbreekt.

    WijzigBijlage: zonder een MaakinitieleRegeling

    Context imop:WijzigBijlage[not(child::imop:MaakInitieleRegeling)]
    Handhaven Indien 'MaakInitieleRegeling' ontbreekt MOET een gegeven "wasVersie" aanwezig zijn
    Test [imop:Metadata/imop:Uitspraak[@eigenschap = 'imop:wasVersie']]
    Boodschap Gegeven "Was versie" voor een [...] is verplicht wanneer er geen "Initiƫle regeling" wordt gegeven.

    Wijzigartikel: metadata

    Context imop:WijzigArtikel/imop:Metadata
    Handhaven Een WijzigArtikel MOET een datum inwerkingtreding hebben van het juiste datatype
    Test [imop:Uitspraak[@eigenschap = 'imop:datumInwerkingtreding']/imop:Waarde/. castable as xs:date]
    Boodschap Een Wijzigartikel MOET een datum inwerkingtreding hebben. [[parent::imop:WijzigArtikel/@eId]].
    Handhaven Een WijzigArtikel MOET correcte verwijzing naar een WijzigBijlage hebben van het juiste datatype
    Test [imop:Uitspraak[@eigenschap = 'imop:wijzigBijlage']//imop:Waarde/. castable as xs:anyURI]
    Boodschap Een Wijzigartikel MOET een verwijzing naar de bijlage hebben. [[parent::imop:WijzigArtikel/@eId]].
    Handhaven Een WijzigArtikel MOET een verwijzing naar een toepassingsprofiel.
    Test [imop:Uitspraak[@eigenschap = 'imop:conformProfiel']//imop:Waarde]
    Boodschap Een Wijzigartikel MOET een verwijzing naar een toepassingsprofiel. [[parent::imop:WijzigArtikel/@eId]].

    Wijzigbijlage: Een AKN identificatie is verplicht

    Een Wijzigbijlage in een Besluit MOET een AKN identificatie hebben.Een AKN identificatie moet voldoen aan de vastgestelde notatie voor AKN ('/akn/.../').
    Context imop:Besluit/imop:WijzigBijlage
    Test [imop:Metadata/imop:Uitspraak[@imop:wasVersie]/imop:Waarde/matches(., $aknIdentifier)]
    Boodschap Een wasVersie

    Patronen voor datastructuur

    Data voor GEO informatieobject

    Context imop:Object[@type = 'imop:GeoInformatieobject']
    Handhaven Een GEO informatieobject MOET een vastgestelde eigenschap collectietype hebben.
    Test [imop:Eigenschap[@naam = 'imop:collectietype']]
    Boodschap Een Object van het type "GeoInformatieobject" MOET een collectietype hebben. Zie: Object [[@oId]].
    Handhaven Een GEO informatieobject MOET een vastgestelde eigenschap noemer hebben.
    Test [imop:Eigenschap[@naam = 'imop:noemer']]
    Boodschap Een Object van het type "GeoInformatieobject" MOET een 'noemer' hebben.

    Data voor beperkingen gebiedstoedeling

    Context imop:Object[@type = 'imop:Beperkingengebiedtoedeling']
    Handhaven Een herbruikIO voor een Beperkingengebiedstoedeling MOET naar een een geldige identificatie verwijzen.
    Test [imop:Eigenschap[@naam = 'imop:herbruikIo']/imop:Waarde/matches(., $joinIdentifier)]
    Boodschap Voor een toedeling beperkingen is een herbruikIo identifier verplicht. zie: Object [[@oId]]
    Handhaven Een juridische bron voor een Beperkingengebiedstoedeling MOET naar een een geldige identificatie verwijzen.
    Test [imop:Eigenschap[@naam = 'imop:juridischeBron']/imop:Waarde/matches(., $aknIdentifier)]
    Boodschap Voor een toedeling beperkingen is een verwijzing naar een Juridische bron verplicht. zie: Object [[@oId]].

    Data voor datacollecties

    Context imop:Uitspraak[@eigenschap = 'imop:heeftDatacollectie']
    Handhaven Een datacollectie MOET een eigenschap identificatie aanwezig zijn.
    Test [descendant::imop:Eigenschap[@naam = 'imop:identificatie']]
    Boodschap De Uitspraak "heeft datacollectie" MOET een eigenschap identificatie bevatten. Zie Object [[child::imop:Object/@oId]].
    Handhaven Een datacollectie MOET een eigenschap inhoud aanwezig zijn.
    Test [descendant::imop:Eigenschap[@naam = 'imop:inhoud']]
    Boodschap De Uitspraak "heeft datacollectie" MOET een eigenschap inhoud bevatten. Zie Object [[child::imop:Object/@oId]].
    Handhaven Een datacollectie MOET een eigenschap identificatie aanwezig zijn.
    Test [descendant::imop:Eigenschap[@naam = 'imop:collectietype']]
    Boodschap De Uitspraak "heeft datacollectie" MOET een eigenschap collectietype bevatten. Zie: Object [[child::imop:Object/@oId]].

    Data voor inhoud voor een GEO informatieobject

    Context imop:Uitspraak[@naam = 'imop:inhoud']
    Handhaven Inhoud voor een GEO informatieobject MOET een geometrie bevatten.
    Test [descendant::imop:Eigenschap[@naam = 'imop:geometrie']]
    Boodschap Een eigenschap "inhoud" MOET een geometrie bevatten. Zie: Object [[child::imop:Object/@oId]].
    Handhaven Inhoud voor een GEO informatieobject MOET een brontype bevatten.
    Test [descendant::imop:Eigenschap[@naam = 'imop:brontype']/imop:Waarde/matches(., $bronType)]
    Boodschap Een eigenschap "inhoud" MOET een brontype bevatten met een toegestane waarde. Zie: Object [[child::imop:Object/@oId]].
    Handhaven Inhoud voor een GEO informatieobject MOET een nauwkeurigheid bevatten.
    Test [descendant::imop:Eigenschap[@naam = 'imop:nauwkeurigheid']]
    Boodschap Een eigenschap "inhoud" MOET een gegeven "nauwkeurigheid" bevatten. Zie: Object [[child::imop:Object/@oId]].
    Handhaven Inhoud voor een GEO informatieobject MOET een bronverwijzing bevatten.
    Test [imop:Eigenschap[@naam = 'imop:bronverwijzing'] or (imop:Eigenschap[@naam = 'imop:bronbeschrijving'] and imop:Eigenschap[@naam = 'imop:bronactualiteit'])]
    Boodschap Voor inhoud MOET 'bronverwijzing' worden gebruikt OF de combinatie 'bronbeschrijving' en 'bron-actualiteit' De samenstelling voor Object [[parent::imop:Object/@oId]] is NIET correct.

    Eigenschap: correcte typen eigenschap

    Context imop:Eigenschap[@naam[starts-with(., 'imop:')]]
    Test [@naam/matches(., $EigenschapNaam)]
    Boodschap @eigenschap [@naam] is niet correct binnen [ancestor::imop:*[@oId][1]/@oId].

    Eigenschappen FBRthis, FBRuri, hergebruik

    Context imop:Eigenschap[@naam = 'imop:FRBRthis']/imop:Waarde
    imop:Eigenschap[@naam = 'imop:herbruikIo']/imop:Waarde
    imop:Eigenschap[@naam = 'imop:FRBRuri']/imop:Waarde
    Handhaven De eigenschap FRBRthis MOET een AKN of een JOIN identificatie bevatten.
    Een AKN identificatie moet voldoen aan de vastgestelde notatie voor AKN ('/akn/.../').
    Een JOIN identificatie moet voldoen aan de vastgestelde notatie voor JOIN ('/join/.../').
    Test [matches(., $joinOfAkn)]
    Boodschap De Waarde voor een [local-name(../*/@naam)] MOET een AKN notatie zijn.

    Object: Identificatie

    Context imop:Object[@type = 'imop:AKNIdentification']
    Handhaven Een Object van het type AKNIdentification MOET een identificatie volgens AKN hebben.
    Test [descendant::imop:Eigenschap[@naam = 'imop:FRBRthis'] and descendant::imop:Eigenschap[@naam = 'imop:FRBRuri']]
    Boodschap Een AKN identificatie moet een FRBRthis en een FRBRuri bevatten.

    Object: Identificatie

    Context imop:Object[@type = 'imop:AKNIdentification-totstandkoming']
    Handhaven Een Object van het type AKNIdentification-totstandkoming MOET een identificatie volgens AKN hebben.
    Test [descendant::imop:Eigenschap[@naam = 'imop:FRBRthis'] and descendant::imop:Eigenschap[@naam = 'imop:FRBRuri']]
    Boodschap Een AKN identificatie-totstandkoming moet een FRBRthis en een FRBRuri bevatten.

    Object: correcte typen

    Context imop:Object[@type[starts-with(., 'imop:')]]
    Test [@type/matches(., $ObjectType)]
    Boodschap @type [@type] is niet correct voor Object [@oId]

    Object: in de context van een Geo datacollectie

    Context imop:Object[@type = 'imop:GeoDataCollectie']
    Handhaven Een Object van het type GeoDataCollectie MOET een oId hebben.
    Een oId MOET voldoen aan de notatie anyURI.
    Test [@oId/. castable as xs:anyURI]
    Boodschap Een Object van het type GeoDataCollectie MOET altijd een attribuut oId bevatten.

    Object: juridischGebruik

    Context imop:Object[@type = 'imop:JuridischGebruik']
    Handhaven JuridischGebruik MOET of een gegeven 'kwalitatief' OF een gegeven 'kwantitatief hebben.
    Test [imop:Eigenschap[@naam = 'imop:kwalitatief']/imop:Waarde/matches(., $kwalitatief) or imop:Eigenschap[@naam = 'imop:kwantitatief']]
    Boodschap Voor "juridisch gebruik" is een aanduiding kwalitatief of kwantitatief verplicht.

    Object: kenmerkgroep

    Context imop:Object[@type = 'imop:Kenmerkgroep']
    Handhaven Een kenmerkgroep MOET een gegeven (type van) kenmerk hebben.
    Test [imop:Eigenschap[@naam = 'imop:kenmerk']/imop:Object]
    Boodschap Voor een "kenmerkgroep" is het aangeven van een kenmerktype verplicht.
    Handhaven Een kenmerkgroep MOET een vastgesteld gegeven (type van) kenmerk hebben.

    WijzigBijlage: Artikel, kenmerkGroep

    Context imop:WijzigBijlage//imop:Artikel//imop:Uitspraak[@eigenschap = 'imop:heeftKenmerkgroep']
    Handhaven Wanneer in een Wijziging MOET een gegeven 'kenmerkGroep' aanwezig zijn.
    Test [count(imop:Object[@type = 'imop:Kenmerkgroep']) gt 0]
    Boodschap Een Object van het type 'kenmerkgroep' voor dit artikel [ancestor::imop:Artikel/@eId] ontbreekt.

    WijzigBijlage: Waarde voor gegeven 'werkingsgebied'

    Context imop:WijzigBijlage//imop:Artikel//imop:Uitspraak[@eigenschap = 'imop:werkingsgebied']//imop:Waarde
    Handhaven Wanneer in een Wijziging een gegeven 'werkingsgebied' aanwezig is dan MOET deze voldoen aan de AKN conventie.
    Test [matches(., $joinIdentifier)]
    Boodschap OPTIONEEL - Het werkingsgebied voor dit artikel [ancestor::imop:Artikel/@eId] ontbreekt.

    Patronen voor datatypering

    Uitspraak: Datum controle

    Context imop:Uitspraak[@eigenschap = 'imop:datumGeldigheidVanaf']/imop:Waarde
    imop:Uitspraak[@eigenschap = 'imop:datumInwerkingtreding']/imop:Waarde
    imop:Uitspraak[@eigenschap = 'imop:datumBekendmaking']/imop:Waarde
    imop:Uitspraak[@eigenschap = 'datumGeldigheidTot']/imop:Waarde
    Handhaven Een datum MOET het standaard formaat hebben (jjjj-mm-dd).
    Test [. castable as xs:date]
    Boodschap [[.]] - Datum voor '[name(parent::node())][parent::node()/@eigenschap]' is niet correct.

    Waarde: van het type ID (identifier, als een waarde)

    Context imop:Waarde[@type = 'ID']
    Handhaven Waarde van het type 'ID' MOET voldoen aan formaat voor identifier als een 'token' (een woord constructie).
    Test [. castable as xs:ID]
    Boodschap Identifier formaat moet conform datatype zijn.

    Waarde: van het type IDREF (Referentie naar een in hetzelfde bestand aanwezige identificatie)

    Context imop:Waarde[@type = 'IDREF']
    Variabele: refWaarde Waarde: .
    Handhaven Waarde van het type 'IDREF' MOET voldoen aan formaat voor identifier als een 'token' (een woord constructie).
    IDREF MOET een referentie naar een in hetzelfde bestand aanwezige identificatie zijn.
    Test [ancestor::imop:Besluit//*[@oId = $refWaarde] or ancestor::imop:Besluit//*[@id = $refWaarde] or ancestor::imop:Besluit//*[@eId = $refWaarde] or ancestor::imop:Besluit//imop:Waarde[@type = 'ID'] = $refWaarde or ancestor::imop:Toestand//*[@oId = $refWaarde] or ancestor::imop:Toestand//*[@id = $refWaarde] or ancestor::imop:Toestand//*[@eId = $refWaarde] or ancestor::imop:Toestand//imop:Waarde[@type = 'ID'] = $refWaarde]
    Boodschap Referentie [$refWaarde] moet verwijzen naar een onderdeel in deze tekst met de correcte identificatie.

    Waarde: van het type XMLstring

    Context imop:Waarde[element()]
    Handhaven Waarde van het type XMLstring MAG elementen sup of sub bevatten.
    Test [@type = 'imop:XMLstring']
    Boodschap Het gebruik van elementen is alleen toegestaan indien het type imop:XMLstring is.

    Waarde: van het type anyURI (identifier formaat)

    Context imop:Waarde[@type = 'xs:anyURI'][contains(., 'akn') or contains(., 'join')]
    Handhaven Waarde van het type xs:anyURI, met een AKN of JOIN string MOET aan de conventie voldoen
    Test [matches(., $joinOfAkn)]
    Boodschap De waarde met de type aanduiding 'xs:anyURI' is een niet correcte akn of join identifier.
    Context imop:Waarde[@type = 'xs:anyURI']
    Handhaven Waarde van het type 'xs:anyURI' MOET voldoen aan de notatie voor web-adressering.
    Test [. castable as xs:anyURI]
    Boodschap Identifier formaat moet conform datatype [@type] zijn.

    Waarde: van het type boolean (1 of 0)

    Context imop:Waarde[@type = 'xs:boolean']
    Handhaven Waarde van het type 'xs:boolean' MOET voldoen aan het formaat (1 of 0 / 'true' or 'false').
    Test [. castable as xs:boolean]
    Boodschap Boolean formaat moet conform datatype zijn.

    Waarde: van het type decimaal (nummer)

    Context imop:Waarde[@type = 'xs:decimal']
    Handhaven Waarde van het type 'xs:decimal' MOET een numeriek gegeven hebben.
    Test [matches(., $decimaalFormaat)]
    Boodschap Nummer formaat moet conform datatype zijn.

    Waarde: van het type language (taal aanduiding)

    Context imop:Waarde[@type = 'xs:language']
    Test [. castable as xs:language]
    Boodschap Taal formaat moet conform datatype zijn.

    Waarde: van het type string

    Context imop:Waarde[@type = 'xs:string']
    Handhaven Waarde van het type 'xs:string' MOET data inhoud hebben.
    Test [not(normalize-space(.) = '')]
    Boodschap Datum formaat moet conform datatype [@type] zijn.

    Waarde: zonder type aanduiding of type aanduiding zonder waarde

    Context imop:Waarde
    Handhaven Waarde zonder type aanduiding MOET als een string worden behandeld.
    Test [not(@type)]
    Boodschap Element Waarde voor element [local-name(parent::node())][parent::node()/@naam | parent::node()/@eigenschap] heeft geen type aanduiding. [ancestor::imop:Object[1][@oId]/@oId][ancestor::imop:Uitspraak[1][@naam]/@naam]
    Rapporteren Waarde MOET data bevatten.
    Test [normalize-space(.) = '']
    Boodschap Element Waarde voor element [local-name(parent::node())] moet data bevatten. [ancestor::imop:Object[1][@oId]/@oId][ancestor::imop:Uitspraak[1][@naam]/@naam]