phax / ph-schematron

Java Schematron library that supports XSLT and native application
Apache License 2.0
110 stars 36 forks source link

pure: Evaluate variables in the order they are declared #178

Closed bertrand-lorentz closed 3 weeks ago

bertrand-lorentz commented 3 weeks ago

Store the variables from the Schematron in a linked hashmap, to preserve their order. They are then evaluated in the order they are declared.

Before this, variables were sorted with the longest first. We were replacing variable references with their expressions, so starting with the longest was needed. With the new way of evaluating variables, this caused problems when a variable referenced another variable that has a shorter name.

This changes the IPSXPathVariables interface to return maps and sets, instead of navigable maps and sorted sets. It does not seem that the specifics of these types were used.

Add unit test that checks the correction of this bug.

Fixes #177.

phax commented 3 weeks ago

Thanks, highly appreciated @bertrand-lorentz