Общеизвестно, что XML-схема не может этого сделать,
проверка элемента на основе другого элемента рассматривается как неоднозначная, поэтому невозможна.Но если вы хотите, вы можете проверить оба типа данных, игнорируя условную проверку, что-то вроде этого:
Определите новый тип данных с пользовательским именем и скопируйте и вставьте шаблон, написанный ниже.
<xs:simpleType name="new_type">
<xs:restriction base="xs:string">
<xs:pattern value="(([0-9]+)[.]([0-9]+))|(([0][1-9]|[1][0-2])/([0][1-9]|[1-2][0-9]|[3][0-1])/[1-2][0-9][0-9][0-9])"/>
</xs:restriction>
</xs:simpleType>
Это будет принимать данные типа decimal или date, но вы не можете проверить их с помощью значений атрибута,
Альтернативное решение - использовать Schematron, но вы не станете таким удобным и удобным для пользователя.удобный инструмент для этого, как вы получаете в случае XSD и XSLT.