К простому элементу с type="xs:int"
Я хотел бы добавить ограничение и ряд атрибутов.Однако единственный способ, которым я это видел, - это двухэтапный подход:
Объявить именованный (глобальный) тип и поместить все ограничения в именованный тип
Обратитесь к именованному типу в base
<xs:extension>
и добавьте атрибуты к узлу расширения.
Было бы неплохо, если бы яможно было бы избежать объявления глобального именованного типа, поскольку схема генерируется динамически, и было бы намного чётче определять все ограничения локально.Например, вот так:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:int">
<xs:minInclusive>2</xs:minInclusive>
<xs:attribute name="myAttribute" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
или в случае строкового типа:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:enumeration Value="FOO" />
<xs:enumeration Value="BAR" />
<xs:enumeration Value="BAZ" />
<xs:attribute name="myAttribute" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
К сожалению, не похоже, что такое «комбинированное» объявление допускается.