Well LzDataset.setData is quite different between trunk and legals.
It seems in trunk if you passed it an array, it would arbitrarily
make the 0th element of that array the root node? In legals it looks
like you fixed that? See r1237.
On 2007-01-14, at 09:24 EST, Henry Minsky wrote:
While updating the SWF RPC code to legals, I encountered a strange
difference in the matching
of an XPATH. In one of the test apps, test/rpc/javarpc/
serverenv.lzx, there
is some code which maps
a returned dataset onto a list for display. The dataset is created
from a
hashtable, using a utlity in LzDataElement
called valueToElement:
/**
* Get LzDataElement representation of primitive type, array, or
object
value.
*/
function valueToElement ( o ) {
var n = new LzDataElement("element", { }, this.__LZv2E(o));
return n;
}
/**
* @param Type o: primitive type, array, or object value.
* @return array of LzDataElements
* @access private
*/
function __LZv2E ( o ) {
In both trunk and Legals, this returns a dataset which looks like this
(simple example)
lzx> LzDataElement.prototype.valueToElement([1,2,3])
«LzDataElement#9#16|
<element><item>1</item><item>2</item><item>3</item></element>»
In the test app, there's a dataset named envDset which gets bound
to the
dataset from valueToElement ().
In trunk, the XPATH which matches against all the values for that
dataset is
just "envDset:/*", whereas in Legals,
I had to make that XPATH say "envDset:/element/*". It seems like in
trunk,
the outer element of the dataset
"does not count" for xpath queries, whereas in Legals it does? I
had to
change the code in the test app as shown below
to get it to map over all the dataset child nodes
trunk:
<list name="env" width="250" height="200">
<textlistitem name="ti" datapath="envDset:/*"
text="$path{'name()'}">
<method event="onselect">
canvas.display.setText(datapath.xpathQuery('text()'))
</method>
</textlistitem>
</list>
legals:
<list name="env" width="250" height="200">
<textlistitem name="ti" datapath="envDset:/element/*"
text="$path{'name()'}">
<method event="onselect">
canvas.display.setText(datapath.xpathQuery('text()'))
</method>
</textlistitem>
</list>
Anyone seen something like this before? Seems pretty fundamental
incompatibility to just run into now... Maybe
there's something funny about the dataset that is being created?
--
Henry Minsky
Software Architect
[EMAIL PROTECTED]