Het inspectiemodel bepaalt hoe de te gebruiken formulieren er uit zien. Andere applicaties spreken wel over een paspoort, Kaartserver noemt dit een inspectiemodel. Het inspectiemodel is gedefinieerd in XML.

Het model voor formulieren is opgebouwd uit 3 niveaus. Het eerste niveau is het 'inspectieModel'. In een 'inspectieModel' bevinden zich onder meer 'form'-objecten, de formulieren. Een 'form'-object is weer opgebouwd uit 'item'-objecten. In het 'inspectieModel' bevinden zich ook 'template'-objecten, een template bepaalt vormgeving en inhoud van een box-selectie en het formulier onder de knop 'i'. En een 'annotation'-object, de tekst of afbeelding die verschijnt als je op de kaart met de muis over een object beweegt.

Een inspectiemodel met annotatie, 1 formulier, 1 template en 2 items ziet er als volgt uit:

<inspectieModel id="boom" name="bomen" description="Inspectie bomen" main-table="bomen" inspect-table="vta" key="id_bomen" geometrietype="point">
<annotation>
<query>select soortnaam from bomen</query>
<bgcolor>lightblue</bgcolor>
<form></form>
</annotation>
<template>
<name>bomen</name>
<object>boom</object>
<objects>bomen</objects>
<headers>
<column>
<name colspan='2'>Tabel met twee kolommen</name>
</column>
</headers>
<columns>
<column>
<name>Id</name>
<field>[id]</field>
<width>20%</width>
</column>
<column>
<name>Soortnaam</name>
<field>[soortnaam]</field>
<width>80%</width>
</column>
</columns>
</template>
<form id="vast" name="Eigenschappen" description="Eigenschappen boom" submit="Gegevens wijzigen" display="visible">
<item>
<name>Id</name>
<type>LabelInfo</type>
<table>bomen</table>
<field>id</field>
<fieldtype>bigint</fieldtype>
<width>200</width>
<display>visible</display>
</item>
<item>
<name>Soortnaam</name>
<type>Text</type>
<table>bomen</table>
<field>soortnaam</field>
<fieldtype>character</fieldtype>
<width>30</width>
<display>visible</display>
</item>
</form>
</inspectieModel>

 

Inspectiemodel

De eerste tag in het model is <inspectieModel>,  een inspectiemodel kent volgende attributen:

id verplicht Unieke identifier, wordt tevens als tekst gebruikt in meldingen om het object in enkelvoud te benoemen (bv. boom niet gevonden).
name verplicht Verkorte omschrijving, wordt tevens als tekst gebruikt in meldingen om het object in meervoud te benoemen (bv. meerdere bomen geselecteerd).
description verplicht Omschrijving.
form-height optioneel Een formulier opent standaard met een hoogte van 650px, met form-height kan een andere hoogte opgegeven worden. Waarde als getal opgeven zonder 'px'.
form-width optioneel Afwijkende waarde voor de standaard breedte van een formulier. Waarde als getal opgeven zonder 'px'.
main-table verplicht Naam van de hoofdtabel.
inspect-table verplicht Naam van de tabel met inspectie items.
key verplicht Kolom in inspectie-tabel waarin id van de hoofdtabel staat.
mapfile verplicht Naam van mapfile, de configuratie van mapserver
geometrietype verplicht Type geometrie: point, polyline of polygon
tolerantie optioneel Tolerantie in meters waarmee na het klikken op de kaart een object wordt gevonden (default 4).
presentquery optioneel Aangepaste data-query voor themalaag presentatie.

 

Annotation 

Het inspectieModel bevat een <annotation> tag die beschrijft hoe een annotation (notitie als je met de muis over een object beweegt) er uit ziet. Het definiëren van een annotation is optioneel en bevat de volgende tags:

<query> verplicht Een query waarmee de tekst van een annotatie wordt gedefinieerd, of in geval als een tag '<form>' is gedefineerd de kolommen waarmee een tabel wordt gevuld. Deze kolommen zijn dan in '<form>' beschikbaar als resp. col00, col01, col02 etc.
<bgcolor> optioneel Achtergrondkleur, in een geldige CSS-notitie. Als achtergrond niet is gedefinieerd, dan is bgcolor lichtgeel.
<form> optioneel Een formulier dat door middel van html-tags is gedefineerd. De kolomwaarden uit de query zijn beschikbaar als resp. col00, col01, col02 etc. Html-tags moeten in XML als CDATA opgenomen zijn. Voorbeeld tabel met in dit geval slechts één kolomwaarde: <![CDATA[ <table><tr><td>col00</td></tr></table> ]]>

 

Templates

Het inspectieModel bevat een of meer <template>-tags die beschrijven hoe een templates (overzicht box- of polygoonselectie) er uit zien. Een template bevat de volgende tags <header> en <columns>.

In een <headers> tag worden optioneel extra header-regels opgegeven die boven de standaard header van een tabel worden geplaatst. Een <header>-tag bestaat uit een of meerdere <column>-tags met volgend inhoud. Een attribuut 'colspan' geeft aan over hoeveel kolommen de header verspreid moet worden (bv. <column colspan='6'>).

<name> verplicht Tekst die in de header wordt getoond.
<display> optioneel Keuze uit visible of hidden, bepaalt of header getoond wordt (default visible).

 

De kolommen van een tabel worden beschreven door in een <columns>-tag een of meerdere <column>-tags te plaatsen. <column>-tags kennen de volgende inhoud:

<name> verplicht Tekst die in een header boven de kolom wordt getoond.
<width> verplicht Breedte van de kolom, waarde in 'px' of '%'.
<field> verplicht Naam van de kolom uit database-query (zie map-file) tussen brackets.
<sort> optioneel Bepaalt of kolom gesorteerd kan worden, false of true (default true).
<type> optioneel Numeriek of alfanumeriek (default alfanumeriek)
<display> optioneel Keuze uit visible of hidden, bepaalt of kolom getoond wordt (default visible).

 

Formulieren 

Het inspectieModel bevat <form> tags die de formulieren (tabs) beschrijven, een formulier kent volgende attributen:

id verplicht Unieke identifier.
name verplicht Verkorte omschrijving.
description verplicht Omschrijving.
ctype  
Type inspectie item, verplicht voor een formulier met inspectie-items:
C = controle-item
M = maatregel-item
O = nader onderzoek-item
Z = ziektes en aantastingen-item
Voor extra formulieren mag ook een andere letter gebruikt worden.
queryafter  
Sql-query uit te voeren nadat alle queries van het formulier zijn uitgevoerd. Een query kan zowel op de hoofd- als de inspectietabel worden uitgevoerd. Een query kan bv. zijn 'update hoofdtabel set kolom1=kolom2'. Of voor een joined query bv. 'update inspectietabel set kolom=hoofdtabel.kolom from hoofdtabel'. De where-clausule wordt door het script zelf verzorgd (en mag dus ook niet worden meegegeven).
submit verplicht Tekst in submit knop.
display optioneel Keuze uit visible of hidden, bepaalt of form getoond wordt (default visible).
filter optioneel Laat tab van het formulier alleen zien als aan een voorwaarde wordt voldaan. Deze voorwaarde wordt opgegeven als een sql where-statement, bv. filter="(groep='Betonstraatstenen')"
deny optioneel Ontzeg toegang, waarde is een * voor iedereen of een komma gescheiden lijst met gebruikers. 
allow optioneel Verleen toegang, waarde is een * voor iedereen of een komma gescheiden lijst met gebruikers.

 

Items

In een formulier zitten <item> tags die de items van het formulier beschrijven. Items kennen geen attributen maar bevatten de volgende tags die de eigenschappen van een item definiëren:

<name> verplicht Omschrijving van het item.
<table> verplicht Naam van hoofdtabel of inspectietabel.
<field> verplicht Naam van kolom in tabel.
<fieldtype> verplicht
Type van kolom, wordt gebruikt om in de tabel de kolommen aan te kunnen maken:
character Tekst onbeperkte lengte.
text Tekst onbeperkte lengte.
bigint Getal zonder decimalen, -9223372036854775808 tot 9223372036854775807.
smallint Getal zonder decimalen, -32768 tot +32767.
integer Getal zonder decimalen, -2147483648 tot +2147483647.
boolean Waar of niet waar.
date Datum.
<default> optioneel
Vul vooraf in met een standaard waarde of een waarde uit een select query.
In een query kunnen volgende place holders gebruikt worden:
%x x-coordinaat van het object
%y y-coordinaat van het object
%srid standaard srid van project
<preloadtype> optioneel
Vooraf invullen van een item in inspectie form:
c Haal waarde op uit laatste controle-item.
cm Haal waarde op uit laatste controle- of maatregel-item.
laststatus Haal waarde op uit laatst ingevoerde item.
blank Laat waarde leeg.
blank_unless Laat waarde leeg als na laatste controle een maatregel-item is ingevoerd, anders neem waarde uit laatste controle-item over (te gebruiken voor maatregel/aanbeveling in vta formulier).
c_unless Neem waarde over van laatste controle-item over tenzij nadien een maatregel is geregistreerd (te gebruiken voor maatregel in maatregel formulier).
currentdate Vul in met de huidige datum.
<update> optioneel
Waarde maintable geeft aan dat voor een inspectie item de kolom met de zelfde naam in de hoofdtabel ook bij gewerkt moet worden.
<queryafter> optioneel Sql-query uit te voeren nadat veld met update-query is bijwerkt. Een query kan zowel op de hoofd- als de inspectietabel worden uitgevoerd. Een query kan bv. zijn 'update vta set veld1=veld2'. De where-clausule wordt door het script zelf verzorgd (en mag dus ook niet worden meegegeven).
<onchange> optioneel Javascript dat op een onchange-event van een item wordt uitgevoerd.
<type> verplicht
Type van invoerelement:
Label Informatie-label, toont tekst <name>.
LabelInfo Informatie-label, toont de waarde uit <table> en <field>.
LabelInfoStam Informatie-label, toont de waarde uit (stam) tabel <table> en <field>
LabelUrl Informatie-label, toont waarde uit <table> en <field> als hyperlink.
LabelInfoList Informatie-label, toont de waarde uit <list>.
LabelLookupList Informatie-label, toont de waarde uit <list>, waarde als nummer in tabel opgeslagen.
Text Invoerveld voor tekst.
Date Invoerveld voor datum. Wordt niet altijd door alle browsers ondersteund, in dat geval gedraagt dit type zich als 'Text'.
TextArea Invoerveld voor langere tekst.
List Drop down list, haalt de keuzemogelijkheden uit <list>, waarde wordt in tabel voluit weggeschreven.
LookupList Drop down list, haalt de keuzemogelijkheden uit <list>, waarde wordt in tabel als volgnummer weggeschreven.
LookupStam Drop down list, haalt de keuzemogelijkheden uit de (stam) tabel <table> en <field>
LookupStamRadio Blok met radio buttons, haalt de keuzemogelijkheden uit de (stam) tabel <table> en <field>
ListRadio Blok met radio buttons, haalt de keuzemogelijkheden uit <list>,waarde wordt in tabel voluit weggeschreven.
LookupListRadio Blok met radio buttons, haalt de keuzemogelijkheden uit <list>, waarde wordt in tabel als volgnummer weggeschreven.
ListMultiple Invoer meerder opties , haalt de keuzemogelijkheden uit <list>,waarde wordt in tabel voluit weggeschreven.
Boolean Checkbox, geeft bij aanvinken waarde=1 anders waarde=0.
Search Een ajax-alternatief voor de 'drop down' list, handig voor grote tabellen, de tabelnaam wordt in <list> gezet.
Stam Speciaal voor soortnamen, haalt met een IMAG-code een soortnaam op, de IMAG-code bestaat uit de eerste 2 letters van de geslachtsnaam aangevuld met de eerste 5 letters van de soortnaam, of als het een cultivar of hybride betreft de eerste 2 letters van de geslachtsnaam, de 1e letter van de soortnaam aangevuld met de eerste 4 letters van de cultivar of hybride. Als de cultuurvarieteit uit twee delen bestaat, dan wordt eerst de 1e letter van het eerste deel gebruikt gevolgd door de eerste 3 letters van het tweede deel.
Frequentie Drop down list specifiek voor frequentie (wordt in tabel in twee afzonderlijke kolommen contrfreq en contrlcycl geschreven), de keuzemogelijkheden staan in <list>.
Location Een tekstveld met een button waarmee een adres voor het huidige coördinaat wordt opgezocht.
ChckWithTxt Bedoeld om een blok met checkbox items te maken.
ChckWithoutTxt Bedoeld om een blok met checkbox items te maken, waarbij achter checkbox een tekstveld staat.
Html

Een Html-tag geeft aan dat een tekst met html opgemaakt moet worden. De op te maken tekst is in een content-tag geplaatst. Omdat html per definitie altijd lees-tekens kent die door xml verkeerd worden geïnterpreteerd plaats je de tekst altijd altijd als CDATA.

Dus: <content><b><![CDATA[Voorbeeld</b>]]></content>

File Uploaden van afbeelding.
<list>   Afhankelijk van <type> een komma gescheiden lijst van waarden of de naam van de tabel waaruit de list wordt opgebouwd.
<option> optioneel
De mogelijke opties zijn:
locatie Geeft aan dat in het informatie formulier het item onder het kopje "Locatie Gegevens" wordt gezet.
<width>   Breedte van het invoer-element.
<height>   Hoogte van het invoer-element, wordt gebruikt bij <type> TextArea.
<placeholder> optioneel Een placeholder verschijnt als aanwijzing in een leeg invoerveld van het type 'Search', 'Text' of 'TextArea'.
<filter> optioneel Filter op bepaalde waarden in een list die uit een tabel wordt gehaald (where-statement in een query). Een filter kan ook basis van een ander veld worden gedefineerd als dit veld met '#' is gemarkeerd. Bijvoorbeeld '#wijk#', in dit geval wordt '#wijk#' vervangen met de waarde van veld 'wijk' in het formulier.
<order> optioneel Bepaald de volgorde in een list die uit een tabel wordt gehaald (order-statement in een query).
<show item=""> optioneel  
<hide item=""> optioneel  
<display> optioneel Keuze uit visible of hidden, bepaalt of item getoond wordt (default visible).
<template_width> optioneel Alleen te gebruiken bij toepassing 'Beeldbestek'. Geeft voor een overzicht opgevraagd met een box- of polygoon-selectie aan hoe breed een kolom in percentage dient te zijn.
<template_kwaliteit> optioneel Alleen te gebruiken bij toepassing 'Beeldbestek'. Geeft voor een overzicht opgevraagd met een box- of polygoon-selectie aan met welke kwaliteit gerekend wordt. Keuze tussen A+, A, B, C of D.
<score> optioneel Berekent een score. De waarde van de score wordt opgegeven in een komma gescheiden lijst. De waarden in deze lijst lopen paralel met de waarden in <list>. Een score kan worden toepast in items van het type List, LookupList, ListRadio en LookupListRadio.

 

Gereserveerde tekens

In xml mogen bepaalde tekens niet gebruikt worden. Hiervoor zijn volgende vervangingen beschikbaar:
 
> (groter dan) &gt;
< (kleiner dan) &lt;
& (ampersand) &amp;
' (apostrof) &apos;
" (aanhalingsteken) &quot;
- (zacht scheidingsteken) &#173;

 

In XML kunnen niet toegestane tekens ook als zogenaamde CDATA met tag <![CDATA[...]]> opgenomen worden. Bijvoorbeeld:

<![CDATA[Door het gebruik van een CDATA-tag zijn tekens als '<', '>' en '&' toegestaan]]>