Фильтр Flex 4 E4X по атрибутам имеет неопределенную переменную
У меня есть XML и я пытаюсь отфильтровать его с помощью e4x. Мое утверждение e4x выглядит так:
model.config.source.fees..fee.(@min<amount).@amount
Мой XML выглядит так:
<flex>
<fees>
<fee type="credit" min="0.00" max="200.00" amount="6.00"/>
<fee type="credit" min="200.01" max="370.00" amount="10.00"/>
</fees>
</flex>
Когда выполняется оператор e4x, я получаю сообщение об ошибке: Ошибка № 1065: переменная @min не определена.
Но если я изменю свое утверждение на model.config.source.fees..fee.@ Min, оно вернет xmllist всех значений атрибута min, поэтому min определено, по крайней мере, в этом утверждении. Почему оригинальное утверждение не работает?
1 ответ
Когда вы используете @min<amount
это требует, чтобы у всех платных узлов был определен атрибут min. Это работает для вашего примера XML, но, возможно, вы пропали без вести @min
в других ваших тестовых данных.
Однако, если вы используете этот формат:
model.config.source.fees..fee.(parseFloat(attribute('min')) < amount).@amount
Он будет обрабатывать все узлы независимо от того, есть ли этот атрибут или нет.