«1» - допустимая строка, поэтому проверка не возвращает ошибку.Если вы хотите указать какое-то ограничение (например, «id должен начинаться с буквы»), вам нужно объявить свой тип и указать шаблон:
<xsd:simpleType name="myID">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z].*"/>
</xsd:restriction>
</xsd:simpleType>
....
<xsd:attribute name="id" type="myID"/>
....
Если вы хотите указать ограничение уникальности, вы можетеиспользуйте элемент xsd: unique, например:
<xsd:element name="root" type="myList">
<xsd:unique name="myId">
<xsd:selector xpath="./a"/>
<xsd:field xpath="@id"/>
</xsd:unique>
</xsd:element>
Это будет означать, что элемент «root», объявленный как «myList», должен содержать подэлементы «a» с уникальными атрибутами «id»