a-Z
- недопустимый диапазон, вместо него следует использовать нижний регистр z
a-z
<xs:pattern value="[A-Za-z]{3,20}" />
Обратите внимание, что a
значение ascii равно 97, а Z
равно 90, поэтому вы фактически определяли интервал от 97 до 90 => end-point code is lower than the start-point code