XSD выполняет то, что вы хотите (условная проверка), используя вложенность.
Таким образом, пока вы не можете использовать XSD, чтобы сделать значения одного атрибута условными относительно значений другого (как говорит Федор Сойкин)в его ответе ) вы можете использовать XSD, чтобы сделать значения атрибута условными для самого элемента:
<propertyNameA value="x"/>
<propertyNameB value="xx"/>
В этом случае каждое свойство является своим собственным элементом, и каждый атрибут «значения»имеет собственное перечисление.
Это дает вам дополнительное преимущество, заключающееся в том, что вы можете ограничить количество каждого именованного свойства, которое вы можете иметь, но недостатком является то, что вам нужно управлять большим количеством элементов.
В зависимостив зависимости от конкретной ситуации, использование XSD таким способом может быть лучшим вариантом, или может быть лучше внедрить другую систему, которая может выполнить проверку имени / значения, которая вам нужна.