Hello Rob,

you simply must add a predicate to the context:

<rule context="/data/number[/data/selected = 'number']">
  <assert test="number(.)=.">
    You must specify a valid number.
  </assert>
</rule>

Furthermore I think you should change the test pattern. If someone writes 5.0, it can return false. I have in mind 5.0 and 5, if the transformer tests on strings and not on numbers. (I had the same problem a few days ago with XSLT. Is the behaviour simply processor dependent or specified anywhere?) If you change the test to "number() = number()" you are on the safe side, because "NaN = NaN" returns always false.

Regards,

Joerg

Rob Johnston wrote:
Hello -- I have a quick Schematron/XMLForm question.

Let's say I have the following XPath:

/data/selected    which can be either "text" or "number"
/data/number      a valid number

I want to write a validation pattern that will assert iff /data/selected
is 'number' and /data/number must be a number.

For instance:

<rule context="/data/number">
  <assert test="number(.)=.">
    You must specify a valid number.
  </assert>
</rule>

works fine, but I want the above to happen ONLY if /data/selected is the
value "number".  So if /data/selected is the value "text", it will
completely ignore the check to see if the /data/number field is a
numeric value.

Any help would be appreciated.

thanks,
rob

--


System Development
VIRBUS AG
Fon  +49(0)341-979-7419
Fax  +49(0)341-979-7409
[EMAIL PROTECTED]
www.virbus.de


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to