По сути, у вас есть тип, который является базовым элементом, который вы расширяете различными способами. Пожалуйста, извините, если код немного отключен, я не пытался проверить схему, и я пишу ее из памяти, не очень хороший способ написания схемы, но вы должны понять.
<xsd:complexType name="field">
<xsd:simpleContent>
<xsd:extension>
<xsd:attribute name="name" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
для определения базового элемента с именем атрибута (без ограничений на тип атрибута). Это проверит все примеры в оригинальном сообщении.
тогда вы можете попробовать расширить это:
<xsd:complexType name="idField">
<xsd:complexContent>
<xsd:extension base="field">
...restrict it in here
</xsd:extension>
<xsd:complexContent>
</xsd:complexType>
И делать что-то подобное для каждого варианта, по существу делая их подтипами основного определения.
Я понимаю, что этот «ответ» на самом деле не дает окончательного ответа, но, надеюсь, он подтолкнет вас в правильном направлении.
Если это не удастся, я не вижу, что вы можете сделать, кроме как заставить продавца переписать их XML.