
... But are we all happy that the result of dfdl:property when the property value is an expression, is the result of executing that expression? How complicated is that going to make implementations?
Well, what is the use case for dfdl:property() at all? One example would be where there is a choice, and different record formats as the alternatives of the choice depending on the length or number of occurrences of some element. So a discriminator expression would refer to dfdl:property("length",...) for example. However, I do believe we could drop dfdl:property(....), and just say "use variables if you want this behavior". E.g., if I have dfdl:length="{....}" then as the schema author I can always introduce a variable myLen, set its value to that of the expression, change to dfdl:length="{ $myLen }" and where I would have used dfdl:property("length", path), instead just reference the variable as $myLen. I will have to define the variable, and use newVariableInstance so that the variable goes into and out of scope appropriately just like a property value does, but this isn't horribly complex. ...mikeb