Skjemabasert validering i Datavalidering-eksempelskjemaet for utviklere
Skjemabasert datavalidering i Microsoft Office InfoPath 2003 avgjøres av XML-skjemaet som er knyttet til et skjema. Skjemabasert validering inntreffer som standard hver gang en bruker fyller ut et skjema. Når brukeren har angitt data i et felt og har gått ut av feltet, kontrolleres dataene umiddelbart mot XML-skjemaet.
I Datavalidering-eksempelskjemaet for utviklere brukes skjemabasert validering til å bekrefte at et tall er innen et angitt område, bekrefte datatypen i et felt, bekrefte at et felt inneholder data, og begrense antallet rader som kan legges til i en tabell.
Obs! InfoPath støtter bare oppretting av datatype og begrensninger for nødvendige felt i XML-skjemaer i utformingsmodus. Bruken av andre typer begrensninger i skjemaet støttes imidlertid. Hvis du vil opprette andre typer skjemabasert validering, må du redigere XML-skjemafilene ved hjelp av Microsoft Notisblokk eller et annet tekstredigeringsprogram.
Kontrollere område og validering av datatype i skjemaet
I Datavalidering-eksempelskjemaet for utviklere definerer XML-skjemaet validNumber-feltet med flyt-datatypen og området med godkjente verdier som mellom 1 og 50 (med disse). Nedenfor vises inndelingen i XML-skjemaet i eksempelskjemaets schema.xsd-fil, som definerer validNumber-feltet og valideringsbegrensningene:
<xsd:simpleType name="validNumber">
<xsd:restriction base="xsd:float">
<xsd:maxInclusive value="50"/>
<xsd:minInclusive value="1"/>
</xsd:restriction>
</xsd:simpleType>
Hvis den angitte verdien ikke er gyldig, merkes feltet med et innlagt varsel. Hvis brukeren lar musepekeren hvile på feltet, vises ytterligere informasjon. Brukeren kan høyreklikke feltet og klikke Fullstendig feilbeskrivelse på hurtigmenyen for å vise mer detaljert informasjon. Brukeren kan lagre skjemaet selv om feilen ikke rettes opp, men det innlagte varslet vil fortsette å vises hver gang skjemaet åpnes, til feilen er rettet opp.
InfoPath har et sett med standard feilmeldinger som brukes under validering av data basert på et XML-skjema. InfoPath gir deg imidlertid også muligheten til å overstyre disse standard feilmeldingene med egendefinerte feilmeldinger som er spesifikke for typen av valideringsbegrensninger som brukes innen et gitt skjema. Hvis du vil overstyre de standard feilmeldingene, må du endre skjemadefinisjonsfilen (XSF-fil) direkte og knytte feilmeldingsteksten til et bestemt felt i skjemaet ved hjelp av et overstyring-element med et nestet errorMessage-element. Når det gjelder validNumber-feltet i Datavalidering-eksempelskjemaet for utviklere, ble følgende overstyring-element lagt til i XSF-filen som et underordnet element for schemaErrorMessages- elementet:
<xsf:schemaErrorMessages>
<xsf:override match="/sampleData/number">
<xsf:errorMessage
shortMessage="Invalid Number.">
The value entered must be a valid number between 1 and 50.
</xsf:errorMessage>
</xsf:override>
...
</xsf:schemaErrorMessages>
Obs! Å endre XSF-filen for å overstyre standard feilmeldinger for datavalidering og legge til egendefinerte feilmeldinger er bare nødvendig for skjemabasert datavalidering. Når du bruker egendefinert eller skriptbasert validering, kan du bruke dialogboksen Datavalidering til å legge til egendefinerte datavalideringsmeldinger.
Hvis XML-skjemaet angir at et bestemt felt i et InfoPath-skjema er obligatorisk, vises en feilmelding når brukeren lagrer eller sender skjemaet hvis feltet ikke er fylt ut. I Datavalidering-eksempelskjemaet for utviklere er en nonEmptyString-datatype definert i skjemaet. Den brukes som datatypen for favoriteColor-feltet i eksempelskjemaet:
<xsd:simpleType name="nonEmptyString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
Her har typen nonEmptyString, trekt ut fra simpleType, blitt gjort obligatorisk ved å angi minLength-verdien 1.
Strukturell validering i skjemaet
I motsetning til de andre typene datavalidering som er tilgjengelig i InfoPath, forhindrer strukturell validering brukeren fra å gjøre valideringsfeil. I stedet for å tillate at strukturen blir ugyldig (for eksempel tillate for mange rader i en datatabell) og reagere med en feil, deaktiverer strukturell validering alle handlinger som kan opprette en ugyldig struktur. Den vanligste typen strukturell begrensning i InfoPath inntreffer i gjentagende rader og objekter med skjemadefinerte minimums- og maksimumsverdier.
I Datavalidering-eksempelskjemaet for utviklere er følgende strukturelle begrensning definert i XML-skjemaet og brukt for den strukturelle, gjentagende tabellen i skjemaet:
<xsd:element name="listA">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="itemA" minOccurs="1" maxOccurs="2"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
I dette tilfellet kan brukeren ikke legge til flere enn to listA-elementer (som er listen over blokker). Brukeren kan heller ikke slette den siste forekomsten av et listA-element. For brukeren gjør denne begrensningen at det kreves en tabell som ikke har flere enn to, og ikke færre enn én, databundet rad.
Obs! Egendefinerte feilmeldinger kan ikke implementeres når strukturell validering brukes i XML-skjemaet.