Validatie

Als het XML-schema informatie bevat over de waarden die zijn toegestaan voor een element of kenmerk (en dus ook voor het overeenkomende veld in de sjabloon), bevat het veld dat wordt gegenereerd een JavaScript-validatiescript waarmee wordt gecontroleerd of de waarde ook volgens de definitie in het schema is toegestaan. Deze informatie kan worden opgegeven met het gegevenstype van het element of kenmerk maar ook door middel van de beperkingen die op het basistype worden toegepast. Dit wordt aangetoond in het volgende voorbeeld:

<xsd:element name="Number"> 
    <xsd:simpleType> 
        <xsd:restriction base="xsd:integer"> 
            <xsd:minInclusive value="4"/> 
            <xsd:maxInclusive value="9"/> 
        </xsd:restriction> 
    </xsd:simpleType> 
</xsd:element>

De omzetting heeft als resultaat dat er een numeriek veld genaamd 'Getal' wordt gegenereerd met een validatiescript waarmee wordt gecontroleerd of de waarde een geheel getal tussen 4 en 9 is.

Vele van de beperkingen die in een XML-schema zijn gedefinieerd, bevatten informatie die kan worden gebruikt om een validatiescript te genereren. Deze informatie wordt uitsluitend gebruikt om validatiescripts te maken wanneer de informatie niet rechtstreeks kan worden omgezet in een eigenschap. Zo wordt de beperking maxLength voor een tekenreekstype bijvoorbeeld omgezet in <text maxChars="">.

Scripts voor numerieke typen

Alle numerieke typen in een XML-schema worden omgezet in afzonderlijke numerieke velden. De aanvullende beperkingen die echter door een numeriek type in een XML-schema worden opgelegd, blijven behouden doordat validatiescripts worden gemaakt om ervoor te zorgen dat de numerieke waarde binnen het bereik valt dat in het oorspronkelijke XML-schema is toegestaan voor het type. Met een type 'byte zonder positief/negatief-aanduiding' in het XML-schema wordt een numeriek veld gegenereerd met een script waarmee wordt gecontroleerd of de waarde ook een bytewaarde zonder positief/negatief-aanduiding is. Het gegenereerde script ziet er als volgt uit:

this.rawValue >= 0 && this.rawValue <= 255;

Voor de volgende waarden worden testscripts gegenereerd om te controleren of de waarde in het toegestane bereik valt:

  • integer

  • positief geheel getal

  • negatief geheel getal

  • niet-positief geheel getal

  • niet-negatief geheel getal

  • lang int-getal

  • short

  • byte

  • lang geheel getal zonder positief/negatief-aanduiding

  • int-getal zonder positief/negatief-aanduiding

  • kort geheel getal zonder positief/negatief-aanduiding

  • byte zonder positief/negatief-aanduiding

Scripts voor insluiten en uitsluiten

Wanneer voor een numeriek type minimale of maximale waarden voor insluiten en/of uitsluiten zijn opgegeven, wordt er een script gegenereerd om te controleren of de ingevoerde waarde binnen het bereik valt dat door deze beperkingen is gedefinieerd. In het geval van een veld waarvoor reeds een script voor een numeriek bereik is gedefinieerd zoals in Scripts voor numerieke typen, zal het script de controle uitvoeren op basis van het meest restrictieve bereik voor het gegevenstype of het bereik voor insluiten/uitsluiten.

Scripts voor length, minLength en maxLength

In een tekenreekstype in een XML-schema kan een beperking voor de lengte worden opgelegd (length), of een minimale of maximale lengte (minLength en maxLength). Als het knooppunt in het schema wordt omgezet in een tekstveld, worden de waarden voor de beperkingen length en minLength gebruikt om een validatiescript te genereren. Met dit script wordt gecontroleerd of de lengte van het tekstveld overeenkomt met de waarde die is opgegeven voor length of ten minste met de waarde die is opgegeven voor minLength.

Merk op dat de eventuele waarde voor de beperking maxLength bij tekstvelden wordt omgezet in de waarde maxChars.

Wanneer een tekenreeks wordt omgezet in een pop-uplijst (omdat het een opsomming van waarden betreft), worden de waarden voor length of minLength/maxLength in het validatiescript gebruikt om na te gaan of de waarde die in de lijst is geselecteerd een lengte heeft die geldig is volgens de beperkingen voor lengte, en minimale en maximale lengte.

Scripts voor totalDigits en fractionDigits

Met de beperking totalDigits wordt het maximum aantal cijfers opgegeven dat voor een decimaal getal of elk type geheel getal mag worden gebruikt (met andere woorden: voor de gegevenstypen decimaal getal, geheel getal, positief geheel getal, negatief geheel getal, niet-positief geheel getal, niet-negatief geheel getal, lang geheel getal, int-getal, kort geheel getal, byte, lang geheel getal zonder positief/negatief aanduiding, int-getal zonder positief/negatief aanduiding, kort geheel getal zonder positief/negatief aanduiding en byte zonder positief/negatief aanduiding). De beperking fractionDigits is alleen van toepassing op waarden van het gegevenstype decimaal getal en hiermee wordt opgegeven hoeveel cijfers na de komma maximaal mogen worden gebruikt.

Als er een waarde voor totalDigits of fractionDigits wordt opgegeven voor een element of kenmerk dat in een numeriek veld wordt omgezet, wordt een validatiescript gegenereerd waarmee wordt gecontroleerd of het totale aantal cijfers en/of decimalen volgens deze beperkingen is toegestaan.