Ik heb onderzocht in hoeverre het mogelijk is om in de schema's van een sectormodel af te dwingen dat alleen in het 'scope' element van een vraagbericht een datum type element leeg kan blijven. Hiermee zouden we in het schema kunnen afdwingen wat we in de standaard beschrijven, nl. dat datum type elementen altijd een valide datum moeten bevatten.
Dit is goed mogelijk doordat er aparte complexTypes bestaan voor objecten in de diverse contexten. Voor het object 'ZAK' heb je bijv. de complexTypes:
- ZAK-antwoord
- ZAK-historieFormeel
- ZAK-historieMaterieel
- ZAK-gerelateerdeAntwoord
- ZAK-gerelateerdeVraagScope
- ZAK-gerelateerdeVraagSelectie
- ZAK-vraagScope
- ZAK-vraagSelectie
- ZAK-kennisgeving
- ZAK-kerngegevensKennisgeving
Als je nu in alle complexTypes daar waar datum elementen worden gedefinieerd (type="StUF:Datum-e") geen nillable="true" definieert behalve voor de complexType 'ZAK-vraagScope' dan heb je al de situatie die je wil. Tenminste voor het ZAK object in zkn0310.
Natuurlijk moet je iets dergelijks voor alle objecten doen en niet alleen in zkn0310 maar ook in bg0310 en wellicht ook in andere sectormodellen.
Ik heb ook nog even gekeken of het mogelijk is om op een datum type element dat in het 'scope' element voorkomt de attributen 'StUF:exact', 'StUF:noValue' en 'StUF:indOnvolledigeDatum' te verwijderen. Die hebben daar immers geen functie. Voor 'StUF:noValue' lukt dit nog redelijk eenvoudig door een extra complexType (bijv. 'Datum-e-Scope') in het schema 'stuf0301.xsd' te definieren. Dat complexType restrict dan 'StUF:Datum-e' door het attribuut 'noValue' te prohibitten. Alle datum type elementen binnen scope zouden dan als dat type gedefinieerd moeten worden (type="StUF:Datum-e-Scope").
Helaas gaat die vlieger voor de andere twee attributen niet op omdat daar een default waarde aan toegekend is.
In dat geval is prohibitting niet toegestaan. Ik denk dat het wel mogelijk is om ook die attributen te verwijderen maar dat gaat vermoedelijk met een flinke hoeveelheid wijzigingen in het schema gepaard. De vraag is of je dat wil.