Я работаю над файлом транзакций покупки. Каждая транзакция может взиматься с одной или нескольких учетных записей и распределяться по одной или нескольким категориям. Например, справедливо следующее:Проверка XML, сравнивающая суммы двух разных типов childnode
<Purchase ID="1000" Date="2014-10-22">
<AccountCharge Account="CreditVoucher">40</AccountCharge>
<AccountCharge Account="Visa">160</AccountCharge>
<CategoryCharge Category="Repair">150</CategoryCharge>
<CategoryCharge Category="Parts">20</CategoryCharge>
<CategoryCharge Category="Labour">30</CategoryCharge>
</Purchase>
Это справедливо потому, что сумма AccountCharges = 200, а сумма CategoryCharges = 200.
Использование XSD, как может быть это будет правилом выражается?
Я предполагаю, что это что-то близкое к:
<xs:assert test="sum(AccountCharge)=sum(CategoryCharge)" />
Я не мог найти перечень того, какие функции могут быть использованы в XSD, так что я не уверен, что на самом деле существует «сумма», или если это правильный синтаксис для него.
Спасибо. Я не смог выполнить эту работу, и думал, что проблема была синтаксисом утверждения. Теперь, похоже, проблема связана с EditiX. Насколько я понимаю, он не поддерживает xs: assert. {В качестве примечания, я НЕ рекомендую EditiX для новых XML-схем. Это может быть мощным и эффективным в руках тех, кто силен в XML-схеме, но лично я нахожу, что это сообщения об ошибках довольно загадочные.} – Selecter
Если EditiX не принимает вышеуказанный XSD как действительный, то он не поддерживает XSD 1.1, который он должен для поддержки 'xs: assert'. – kjhughes