Voor het modelleren van AFD verbandcontroles heeft SIVI een aantal richtlijnen opgesteld. Hieronder volgen een aantal richtlijnen.
AFD verbandcontrole Hoofdvalidatieregel. |
|
Conditionele expressie |
Een van de belangrijkste richtlijnen binnen de AFD-definitie Standaard is dat een AFD verbandcontrole altijd een conditionele expressie moet zijn. Hierdoor evalueert een AFD verbandcontrole altijd naar true of false. |
if (‘logische expressie’ ) then ‘logische expressie’ else true() |
Achter ‘if’ |
De conditie waaraan voldaan moet worden om een validatie binnen het XML-bericht uit te voeren. In bovenstaand voorbeeld (zie paragraaf 6.2.2) is dat ‘CA_VERZSOM > 40000’. Binnen de expressie kan een reeks van XPath-operatoren worden gebruikt, waarmee ook naar meerdere attributen kan worden verwezen. Voorbeeld: if (//CA_VERZSOM > 50000 and //CA_GEBIED = E) then // CA_ERB > 1000 else true() |
Achter ‘then’ |
In deze expressie staat de validatie die moet worden uitgevoerd als de eerdere if-conditie waar is. In bovenstaand voorbeeld (zie paragraaf 6.2.2) is dat ‘ERB > 500’. Ook hier kan een reeks van operatoren worden gebruikt en kan naar meerdere attributen worden verwezen. Voorbeeld: if (//CA_GEBIED = E) then //CA_VERZSOM > 30000 and //CA_ERB > 1000 else true() |
Achter ‘else’ |
De logische expressie achter het else-gedeelte wordt actief als niet wordt voldaan aan de if-conditie om een verbandcontrole uit te voeren. Dit betekent dat er geen reden is om deze verbandcontrole (het then-gedeelte) verder uit te voeren. Voor de verbandcontrole in XPath binnen AFD Berichtvalidatie geldt dat het else-gedeelte altijd wordt ingevuld met ‘true()’. Bij de verwerking van deze XPath-regel betekent dit, dat de regel geen effect heeft als niet wordt voldaan aan de condities voor validatie. |
AFD-richtlijnen Aanvullende validatieregels. |
|
Vergelijkingen met XPath |
Met de XPath-functie FN:DOC kan worden verwezen naar nodes van een ander XML-bericht en kunnen waarden van nodes worden vergeleken. Vergelijkingen van elementen mogen echter niet over meerdere XML-berichten heen worden uitgevoerd. Een AFD verbandcontrole wordt namelijk altijd uitgevoerd op één AFD XML-bericht. |
Chaining van output |
Een outputcontrole waarbij validatieregel 1 de input is van validatieregel 2, is niet toegestaan. AFD verbandcontroles mogen geen gebruik maken van chaining. Processingsnelheid wordt daarmee te negatief beïnvloed en fouten terugzoeken te gecompliceerd. |
Custom functies |
In custom functies is het technisch mogelijk om andere programmeertalen te gebruiken dan de W3C XML-standaard. Voor het opmaken van een expressie is het verplicht gesteld om alleen XPath 2.0 expressies te gebruiken en geen andere programmeertalen. De reden is dat partijen die een XPath-expressie gaan gebruiken waar andere programmeertalen zijn gehanteerd, vastlopen in het applicatieonderdeel van de AFD-definitie Standaard. Een custom functie kan wel worden aangevraagd bij SIVI. SIVI kan de expressie vervolgens in de AFD XPath Library ter beschikking stellen aan alle marktpartijen. |
Rekenkundige operatoren |
Rekenkundige operatoren moeten ge-escaped worden aangegeven in een AFD verbandcontrole. Dit voorkomt dat operatoren zoals ”>=” foutief worden gelezen door applicatieonderdelen die XML-technieken ondersteunen. Het kan voorkomen dat het XML-document met rekenkundige operatoren foutief wordt ingelezen door geïmplementeerde XML-componenten. |
Operator |
Operator AFD XPath | |
> |
gt | |
< |
lt | |
Rekenkundige operatoren |
>= |
ge |
<= |
le | |
= |
eq | |
!= |
ne |
Geef uw reactie op dit onderwerp.