(Dit verzoek is ingediend door gemeente Den Haag en gemeente Amsterdam).
Gevraagde wijziging: T.b.v. ‘vrije’ berichten geen gebruik maken van XSD-gegevensdefinities met attribuut nillable=true.
Toelichting:
In de StUF schemas (zie bijvoorbeeld alle complexTypes in bg0310_ent_basis.xsd) worden de attributen nillable and minOccurs tegelijkertijd gebruikt. Dit zorgt voor complexere code en grotere XML berichten. De attributen nillable and minOccurs geven aan dat een element optioneel is. Het gebruik van beide attributen voor een element is overbodig. In webservices standaarden wordt het gebruik van het nillable=true attribuut afgeraden. Hiervoor kan beter minOccurs=0 gebruikt wordt. Doordat minOccurs=0 de aanwezigheid van een element in een XML bericht niet afdwingt, vergroot dit de kans dat nieuwe schema definities backwards compatible zijn met oude schema definities. (zie: http://www.ibm.com/developerworks/xml/library/ws-tip-null/index.html, http://xml.coverpages.org/HP-StephensonSchemaBestPractices.pdf).
Het attribute nillable is nodig, omdat StUF als mogelijke waarden voor een element dmv het attribute StUF:noValue ook definieert geenWaarde, waardeOnbekend en waardeVastgesteldOnbekend. In antwoordberichten wordt daarnaast nog gebruikt nietGeautoriseerd en nietOndersteund. Lang niet alle simpleTypes voor een element staan het opnemen van een leeg element met het attribute StUF:noValue toe. Het wordt wel mogelijk door nillable="true" op te nemen. Dit is toch een iets andere functie dan minOccurs="0", want het weglaten van een element dient in StUF geïnterpreteerd te worden als het niet bekend zijn van de waarde.
Eens met Maarten van de Broek. In StUF heeft optioneel (minOccurs = 0) een iets andere betekenis dan een lege waarde (nillable=true). Een bepaald element kan in het ene bericht optioneel zijn (minOccurs = 0) en in een ander bericht verplicht (minOccurs = 1). Als het element in de tweede situtaie geen waarde heeft, dan kan met de combinatie nillable=true en StUF:GeenWaarde aangegeven worden dat het verplichte element geen waarde heeft en waarom. Voorbeeld: als een BAG object wordt opgevoerd dan mag het niet inOnderzoek zijn (minOccors = 0). Maar als het BAG object via een wijzigkennisgeving inOnderzoek wordt genomen dan moet het element verplicht aanwezig zijn in het was en het wordt voorkomen (minOccurs = 1), waarbij het element in het was voorkomen geen waarde heeft (xsi:nil="true" StUF:noValue="geenWaarde") en in het wordt voorkomen een waarde J heeft.
Dit RFC is opgevoerd in de onderhoudsverzoeken als RFC0133.
De lijst met onderhoudsverzoeken vind je op:
gemmaonline.nl/index.php/StUF-Expertgroep#Documenten
Tijdens de StUF Expertgroep van 20-5-2015 is besloten dit RFC af te voeren.