Sorry, I shouldn't be answering posts without reading them to the end.
Firstly
<xs:pattern value="^[0-9]$" />
is not a valid pattern in XML Schema (I think some schema processors are very lax in the regular expression syntax that they accept however). Patterns are implicitly anchored so you don't need the "^" and "$".
Secondly, if you fix it, then it is a pattern that matches a single digit. It looks to me from your examples as if any sequence of zero-or-more digits is valid, that's value="[0-9]*".
But are you sure this is really a string of zero or more digits? Isn't it better modelled as an optional integer? There are two ways of permitting an optional integer: you can define the union of (integer, ""), or you can define a list of integers with maxLength=1.
I'm afraid if you're using a buggy schema processor then I've no idea what will work and what won't. My advice would be to get rid of it.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference