hxt-relaxng-9.1.2: The HXT RelaxNG validator

Text.XML.HXT.RelaxNG.DataTypeLibUtils

Description

exports helper functions for the integration of new datatype-libraries

Synopsis

Documentation

errorMsgParam :: LocalName -> String -> String -> StringSource

Error Message for the equality test of two datatype values

  • 1.parameter : datatype
  • 2.parameter : datatype value
  • 3.parameter : datatype value

example:

 errorMsgEqual "Int" "21" "42" -> "Datatype Int with value = 21 expected, but value = 42 found"

type FunctionTable = [(String, String -> String -> Bool)]Source

Function table type

fctTableString :: FunctionTableSource

Function table for string tests, XML document value is first operand, schema value second

fctTableList :: FunctionTableSource

Function table for list tests, XML document value is first operand, schema value second

stringValid :: DatatypeName -> Integer -> Integer -> ParamList -> CheckStringSource

Tests whether a "string" datatype value is between the lower and upper bound of the datatype and matches all parameters.

All tests are performed on the string value.

  • 1.parameter : datatype
  • 2.parameter : lower bound of the datatype range
  • 3.parameter : upper bound of the datatype range (-1 = no upper bound)
  • 4.parameter : list of parameters
  • 5.parameter : datatype value to be checked
  • return : Just "Errormessage" in case of an error, else Nothing

numberValid :: DatatypeName -> Integer -> Integer -> ParamList -> CheckStringSource

Tests whether a "numeric" datatype value is between the lower and upper bound of the datatype and matches all parameters.

First, the string value is parsed into a numeric representation. If no error occur, all following tests are performed on the numeric value.

  • 1.parameter : datatype
  • 2.parameter : lower bound of the datatype range
  • 3.parameter : upper bound of the datatype range (-1 = no upper bound)
  • 4.parameter : list of parameters
  • 5.parameter : datatype value to be checked
  • return : Just "Errormessage" in case of an error, else Nothing

numParamValid :: (Integer -> Integer -> Bool) -> String -> String -> BoolSource

tests whether a string value matches a numeric param

valid example:

 <data type="CHAR"> <param name="maxLength">5</param> </data>

invalid example:

 <data type="CHAR"> <param name="minLength">foo</param> </data>

performCheck :: CheckA a b -> a -> Maybe StringSource

run a check and deliver Just an error message or Nothing

ok :: CheckA a aSource

every thing is fine

failure :: (a -> String) -> CheckA a bSource

always failure

assert :: (a -> Bool) -> (a -> String) -> CheckA a aSource

perform a simple check with a predicate p, when the predicate holds, assert acts as identity, else an error message is generated

assertMaybe :: (a -> Maybe b) -> (a -> String) -> CheckA a bSource

perform a simple check with a Maybe function, Nothing indicates error

checkWith :: (a -> b) -> CheckA b c -> CheckA a aSource

perform a check, but convert the value before checking