You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Sudeep Gandhe <ga...@usc.edu> on 2007/12/09 02:46:05 UTC
[SCXML] problems with Data() function in Jexl
I tried the following scxml file with the StandaloneJexlExpressions. I don't get the correct value for "Data(d, '//tar/@name')". Can you explain, what's wrong ?
-- Sudeep
SCXML file :
<?xml version="1.0"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate="first">
<datamodel>
<data name="d">
<foo xmlns="">
<bar>
<tar name="po">12</tar>
</bar>
</foo>
</data>
<data name="p">
<one xmlns=""/>
</data>
</datamodel>
<state id="first">
<onentry>
<log label="//tar" expr="Data(d, '//tar')"/>
<!-- //tar/@name doesn't work -->
<log label="//tar/@name" expr="Data(d, '//tar/@name')"/>
<log label="foo/bar/tar" expr="Data(d, 'foo/bar/tar')"/>
<!-- foo/bar/tar/@name works -->
<log label="foo/bar/tar/@name" expr="Data(d, 'foo/bar/tar/@name')"/>
</onentry>
<transition event="first.done" target="second"/>
<onexit>
<assign location="Data(p, 'one')" expr="Data(d, '//bar')"/>
</onexit>
</state>
<state id="second" final="true">
<onentry>
<log label="//tar" expr="Data(p, '//tar')"/>
<!-- //tar/@name doesn't work -->
<log label="//tar/@name" expr="Data(p, '//tar/@name')"/>
<!-- one/tar/@name works -->
<log label="one/tar/@name" expr="Data(p, 'one/tar/@name')"/>
</onentry>
</state>
</scxml>
Re: [SCXML] problems with Data() function in Jexl
Posted by Rahul Akolkar <ra...@gmail.com>.
On 12/8/07, Sudeep Gandhe <ga...@usc.edu> wrote:
> I tried the following scxml file with the StandaloneJexlExpressions. I don't get the correct value for "Data(d, '//tar/@name')". Can you explain, what's wrong ?
>
<snip/>
We use some Xalan APIs internally to be able to resolve prefixes in
XPath expressions (since XPath expressions in SCXML documents can have
different context nodes, say <assign>, <log> etc. and hence different
prefixes, than the <data>s they refer to).
It is not immediately evident why the behavior you describe is only
seen when a combination of descendent-or-self and attribute axes are
used in the expression, I suspect this is either:
a) A bug or inconsistency in the Xalan processing (quite unlikely), or
b) A bug in the usage of Xalan APIs by Commons SCXML (more likely)
In any case, can you please attach a complete JUnit test case addition
to the Commons SCXML test suite that illustrates this, to the issue
tracker [1]? That will help us dig deeper. Thanks in advance.
-Rahul
[1] http://commons.apache.org/scxml/issue-tracking.html
> -- Sudeep
>
> SCXML file :
>
> <?xml version="1.0"?>
> <scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate="first">
>
> <datamodel>
> <data name="d">
> <foo xmlns="">
> <bar>
> <tar name="po">12</tar>
> </bar>
> </foo>
> </data>
> <data name="p">
> <one xmlns=""/>
> </data>
> </datamodel>
>
> <state id="first">
> <onentry>
> <log label="//tar" expr="Data(d, '//tar')"/>
> <!-- //tar/@name doesn't work -->
> <log label="//tar/@name" expr="Data(d, '//tar/@name')"/>
> <log label="foo/bar/tar" expr="Data(d, 'foo/bar/tar')"/>
> <!-- foo/bar/tar/@name works -->
> <log label="foo/bar/tar/@name" expr="Data(d, 'foo/bar/tar/@name')"/>
> </onentry>
> <transition event="first.done" target="second"/>
> <onexit>
> <assign location="Data(p, 'one')" expr="Data(d, '//bar')"/>
> </onexit>
> </state>
>
> <state id="second" final="true">
> <onentry>
> <log label="//tar" expr="Data(p, '//tar')"/>
> <!-- //tar/@name doesn't work -->
> <log label="//tar/@name" expr="Data(p, '//tar/@name')"/>
> <!-- one/tar/@name works -->
> <log label="one/tar/@name" expr="Data(p, 'one/tar/@name')"/>
> </onentry>
> </state>
> </scxml>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org