Since an expresion can be in a reused group, type, or element, the downward path step may actually represent a step downward to distinct elements that happen to just have the same name/namespace, but they could be different types.
Since an expresion can be in a reused group, type, or element, the downward path step may actually represent a step downward to distinct elements that happen to just have the same name/namespace, but they could be different types.
If that is the case, for the expression to be meaningful, the path step must be ultimately result in an element of type suitable for the next operation that occurs on the element.
To insure we have referential transparency, that requires that each distinct type result in its own compilation of the expression. In a complex expression involving multiple such paths.... gets complicated.
For now, we just insist all the types are equal, and issue a SDE if they are not.
Override where we traverse/access elements.
Override where we traverse/access elements.
TODO: get more precise line and column information for pointing at sub-regions of large DPath expressions
TODO: get more precise line and column information for pointing at sub-regions of large DPath expressions
We're parsing them, so we should have access to specific locations within the expression.
Used when there is no match as part of error diagnostic message.
Used when there is no match as part of error diagnostic message. It searches the local xml scope for a prefix binding for this namespace. Returns Nil if none, a list of strings for all the available prefixes for this namespace (because there can be more than one)
The target type is defined for simple types.
The target type is defined for simple types. It gives the type that the expression must return. It is the type that the context is expecting or in attribute-grammar terms, the inherited type.
For inputValueCalc, this is the type of the element carrying that property.
For setVariable and newVariableInstance, it is the type of the variable.
For dfdl:length and dfdl:occursCount it is UnsignedInt
For the test properties of assert/discriminator it is Boolean
For the following properties, when their value is an expression the xsdTargetType is NonEmptyString byteOrder, encoding, outputNewLine, escapeCharacter, escapeEscapeCharacter, initiator, terminator, separator, textStandardDecimalSeparator, textStandardGroupingSeparator, textStandardExponentRep, binaryFloatRep, textBooleanFalseRep, textBooleanTrueRep