As discussed in previous posts, the string-length() > 0 test is useful in checking to be sure null values are not passed; a validation step that raw XSD does not natively perform. This ensures the following is NOT allowed:
<nc:PersonGivenName></nc:PersonGivenName>
It also prevents the following:
<nc:PersonGivenName/>
However, if white space is not trimmed, the following WOULD be allowed:
<nc:PersonGivenName> </nc:PersonGivenName>
In order to trim leading and trailing white space, the built-in XSLT function normalize-space() can be used. This in effect eliminates the above scenario where spaces have been inserted into the string. This can be seen in the following example:
<assert test="string-length(normalize-space(nc:PersonGivenName)) > 0"/> Person's first name may not be left blank. </assert>
Be aware, that this function also eliminates redundant spaces between characters (including duplicate carriage returns and line-feeds) so a custom replace() function may be required if you wish to preserve those extra characters in your string length checks.
No comments:
Post a Comment