If I have an RNC file which looks like this:
start =
   element foo {
      element bar { text },
      element baz { xsd:date }
   }
and try to validate against this schema an XML which looks like this:
<foo>
  <bar>haha!</bar>
  <baz>2008-09-09T22:00:00</baz>
</foo>
(Note that the value of 'baz' should have been a date, not a date-time)
I get the following error/backtrace:
`NIL' is not of the expected type `NUMBER'
   [Condition of type TYPE-ERROR]
Restarts:
  0: [ABORT-REQUEST] Abort handling SLIME request.
  1: [ABORT] Abort entirely from this (lisp) process.
Backtrace:
  0: (SWANK::DEBUG-IN-EMACS #<TYPE-ERROR @ #x117dba9a>)
  1: (SWANK:SWANK-DEBUGGER-HOOK #<TYPE-ERROR @ #x117dba9a> #<Function 
SWANK-DEBUGGER-HOOK>)
  2: (ERROR TYPE-ERROR :DATUM NIL :EXPECTED-TYPE NUMBER :FORMAT-CONTROL 
"~@<`~s' is not of the expected type `~s'~:@>" :FORMAT-ARGUMENTS (NIL 
NUMBER))
  3: (CXML-TYPES::PARSE-TIME NIL NIL NIL NIL #1="0" #1# #1# NIL NIL ...)
  4: ((METHOD CXML-TYPES::PARSE/XSD (CXML-TYPES:DATE-TYPE T T)) 
#<CXML-TYPES:DATE-TYPE > "2008-09-09T22:00:00" #<CXML-RNG::VALIDATOR @ 
#x117cb302>)
  5: ((METHOD CXML-TYPES::PARSE/XSD :AROUND (CXML-TYPES:XSD-TYPE T T)) 
#<CXML-TYPES:DATE-TYPE > "2008-09-09T22:00:00" #<CXML-RNG::VALIDATOR @ 
#x117cb302>)
  6: ((:INTERNAL (:EFFECTIVE-METHOD 3 NIL NIL T T) 0) 
#<CXML-TYPES:DATE-TYPE > "2008-09-09T22:00:00" #<CXML-RNG::VALIDATOR @ 
#x117cb302>)
  7: ((METHOD CXML-TYPES:VALIDP (CXML-TYPES:XSD-TYPE T)) 
#<CXML-TYPES:DATE-TYPE > "2008-09-09T22:00:00" #<CXML-RNG::VALIDATOR @ 
#x117cb302>)
  8: ((METHOD CXML-RNG::|DATA'| (T CXML-RNG:DATA T)) 
#<CXML-RNG::VALIDATOR @ #x117cb302> #<CXML-RNG:DATA @ #x117c65a2> 
"2008-09-09T22:00:00")
Attached is a patch which fixes this. Now I get the expected error:
text node not valid,
was expecting a text node of type #<DATE-TYPE >
  [ Error at line 3, column 33 in #<PURI:URI
                                    file://+/Users/chaitanya/tmp/test.xml> ]
   [Condition of type CXML-RNG:RNG-ERROR]
On a side note, I think that the error reporting can be improved a bit. 
e.g. the element inside which the validation error was encountered, can 
that also be reported?
Chaitanya
diff --git a/types.lisp b/types.lisp
index 26f89fa..1d481c6 100644
--- a/types.lisp
+++ b/types.lisp
@@ -1049,11 +1049,11 @@
 	 (num (str)
 	   (and str (parse-number:parse-number str))))
     (setf (values y m d h min s tz-h tz-m)
-	  (values (* (int y) (if minusp -1 1))
+	  (values (and y (* (int y) (if minusp -1 1)))
 		  (int m) (int d) (int h) (int min)
 		  (num s)
 		  (int tz-h) (int tz-m))))
-  (let ((day-limit (day-limit m y)))
+  (let ((day-limit (and m y (day-limit m y))))
     ;; check ranges
     (cond
       ((and y m d h min s