[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [wsbpel] Issue 29 - Proposal For Vote
This proposal is only relevant if we don't decide to adopt a mechanism
to map properties to XPATH variables.
As for the desire to use XPATH 1.0 in a standard manner, unfortunately
that is quite impossible given our semantics. It is explicitly illegal
to have a null context node in XPATH 1.0. In section 1, the introduction
to XPATH 1.0, a series of requirements are listed for defining the
context in which a XPATH executes. List in there is a node (explicitly
referred to as the context node). This is then followed by a requirement
for a pair of non-zero positive integers identifying the context
position and context size. If the context is empty or null then these
two numbers would have to be 0 and that's explicitly prohibited. Hence
why we already are forced into a situation where we have to require a
BPEL specific XPATH processor.
Yaron
Assaf Arkin wrote:
> -1
>
> If we decide to manifest properties as independent XPath variables, then
> we have a syntax that is consistent in how variable values are accessed,
> directly (the entire variable) or indirectly (a property of the
> variable). I happen to be on the side that likes consistency and abhors
> making changes to XPath implementations.
>
> "We have in the past altered XPATH in order to suit our needs. For
> example, in some BPEL expressions we have banned the use of the global
> context node, a node whose presence is actually mandated by the XPATH
> specification. If we are willing to change XPATH that much I see no
> reason not to change it here as well. In for a dime, in for a dollar."
>
> Since we have nothing to pass in the context node, wouldn't it be easier
> if we use the XPath specification to achieve that instead of forcing
> implementations to deviate from the specification, write custom XPath
> implementations (only for BPEL), and so forth. The XPath specification
> mandates that you pass a context node, but the XPath specification does
> not require the context node to have any content in it. You can pass an
> empty root node (XPath 1.0) or an empty document node (XPath 2.0) and be
> in full comformance with the XPath specification and the BPEL model at
> the same time.
>
> Let's keep it simple (that's what this issue is all about). Get the
> semantics we want for expressions, but without having to change existing
> specifications or implementations.
>
> assaf
>
>
> Yaron Y. Goland wrote:
>
>> Issue 29 - Simplification of XPath expressions
>>
>> Proposal: Require that all arguments to BPEL defined XPATH functions
>> must be quoted strings that are statically defined within the XPATH
>> expression.
>>
>> Note: This proposal won't be necessary if we decide to manifest
>> properties as independent XPATH variables since this would let us get
>> rid of getVariableProperty.
>>
>> Rationale:
>> getVariableProperty(getVariableProperty(foo,bar),getVariableProperty(ick,bick))
>> is completely legal in XPATH. This is a problem because such an
>> expression makes it impossible to statically analyze the expression
>> that contains the function call and determine what variable is being
>> referenced. This is problematic for static analysis of the process
>> because it makes it impossible to determine what variable and property
>> are being accessed so there is no way to check if that variable is
>> accessible from that point in the BPEL process definition or if the
>> variable has the referenced property defined on it. Even worse (in my
>> mind anyway) is that the previous plays havoc with optimizations for
>> compensation handling. If the previous function was contained within a
>> compensation handler then there would be no way to know what variable
>> was being accessed and so the BPEL process would have no choice but to
>> persist all variables visible from the compensation handler, major yuck!
>> We have in the past altered XPATH in order to suit our needs. For
>> example, in some BPEL expressions we have banned the use of the global
>> context node, a node whose presence is actually mandated by the XPATH
>> specification. If we are willing to change XPATH that much I see no
>> reason not to change it here as well. In for a dime, in for a dollar.
>>
>> Section 9.1 -
>>
>> Add a new paragraph after the following paragraph "Any qualified names
>> used within XPath expressions are resolved by using namespace
>> declarations currently in scope in the WS-BPEL document at the
>> location of the expression.":
>>
>> The arguments to all XPATH functions defined in this specification
>> MUST be given as quoted strings. The previous requirement MUST be
>> statically enforced. It is therefore illegal to pass into a BPEL XPATH
>> function any XPATH variables, the output of XPATH functions, a XPATH
>> location path or any other value that is not a quoted string. This
>> means, for example, that getVariableProperty("varA","propB") meets the
>> previous requirement while
>> getVariableProperty($varA,string(getVariableProperty("varB","propB"))
>> does not. Note that the previous requirement institutes a restriction
>> which does not exist in the XPATH standard.
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: wsbpel-unsubscribe@lists.oasis-open.org
>> For additional commands, e-mail: wsbpel-help@lists.oasis-open.org
>>
>>
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]