1. Referenties: Direct en relatief

Referenties vormen de basis van al het beïnvloedbaar formuliergedrag. Via referenties kan verwezen worden naar antwoorden op vragen. Zo kan worden aangegeven dat een vraag alleen gesteld mag worden, dus relevant is, als bij een eerdere vraag bijvoorbeeld de waarde “10” is ingevuld.

U kunt refereren naar een specifiek antwoord in een

  • invoerveld,
  • vrij tekstblok,
  • blok voor radiobuttons,
  • blok voor checkboxes.

Als de label van het antwoordveld 'antwoord' is dan kan met $antwoord naar dat antwoord gerefereerd worden. Een nieuwe vraag wordt bijvoorbeeld alleen gesteld als

relevantie: $antwoord='man'

Ook kunt u refereren naar een blok met meerdere antwoordvelden. Als 'blok' de label property van het betreffende blok is, wordt met $blok naar het hele blok gerefereerd. $blok/error_count telt alle fouten in een blok en evalueert dus voor het hele blok of alle verplichte vragen zijn beantwoord, of aan alle beperkingen zijn voldaan en of de antwoorden van het juiste datatype zijn. Een nieuw blok of tab wordt alleen getoond als bijvoorbeeld

relevantie: number($blok/error_count) = 0

Onderstaande figuur geeft bovenstaande twee opties schematisch weer. Het tweede tabblad wordt alleen getoond als het eerste tabblad met label T1 géén fouten bevat ($T1/error_count=0), dus als alle (verplichte) vragen in het donkergrijze blok goed zijn ingevuld. Het blok voor Postadres wordt alleen getoond als het antwoord op vraag 3 (met label 'PA') 'ja' is.
 

 

Referenties naar specifieke antwoorden kunnen in tekstvelden worden gebruikt om eerder (voor)ingevulde waarden in een tekst te gebruiken. Als de gebruiker zijn naam invult in een invoer veld met label 'naam' kan de naam in een tekstregel getoond worden. Bijvoorbeeld:

concat('bedankt' , $naam, ' voor het invullen')

Directe referenties
Een directe referentie is niet meer dan een directe verwijzing naar een bepaald formulieronderdeel. Hiervoor wordt gebruik gemaakt van de property “label”.

U kunt ook zelf een label invoeren, dat maakt een formulier leesbaarder. U kunt dan bijvoorbeeld de referenties: $klant of $partner introduceren. Een label moet uniek zijn. Als 2 maal dezelfde label in een formulier voorkomt wordt een foutmelding getoond bij het opslaan van het formulier.

Relatieve referenties
Relatieve referenties verwijzen naar formulieronderdelen (blokken, tabbladen, antwoordvelden), op basis van de eigen positie. Zo kan naar het vorige formulieronderdeel worden verwezen, of kan naar het eerste invoerveld uit hetzelfde blok worden verwezen.

Voor relatieve referenties kunnen de volgende elementen worden gebruikt:
 . (een punt verwijst naar het huidige element)

Deze worden gebruikt voor expressies in een beperking property om het antwoord te begrenzen:
string-length(.)<10
number(.) < 100

.. (een dubbele punt verwijst naar het “moeder” element)
*[x] (verwijst naar de blok of bouwsteen op plaats x)

Deze worden gebruikt in een relevantie property:
../*[2] = 'xxx'
Dit verwijst naar het tweede bouwelement in het moederelement (meestal een Standaard Blok) van element waar de expressie in staat.

Het gebruik van . en .. is vergelijkbaar met hoe in UNIX of DOS door de mappen structuur wordt gebladerd.

Aangezien relatieve referenties de standaard volgen van Xpath-expressies kunnen deze onbeperkt worden uitgebreid.
Zo kan bijvoorbeeld de volgende referentie worden samengesteld:
../../*[2]/*[2]/*[1] = ‘a’

De hierna volgende afbeelding geeft bovenstaande schematisch weer. Vragen 3 en 4 worden alleen getoond als het antwoord op vraag 2 'man' is. In de [[label]] [[relevantie]] van het lichtgrijze standaard blok om vragen 3 en 4 staat een relatieve referentie die met .. verwijst naar het middelgrijze moederelement (standaard blok), vandaar met .. naar het donkergrijze hoofdelement. Van dit hoofdelement wordt met *[2] verwezen naar het tweede middelgrijze element (standaard blok). In dit tweede middelgrijze element wordt met *[1] verwezen naar het eerste en enige element (standaard invoerveld voor vraag 2).

U bent hier