Out of pure random chance, I was starting the migration of WebService which had
a dependency on XMLUtil which contained the comment:
//xml.attribute(QName) will also return local no-namespace attributes
//even if we are looking for a specific full qualified name.
So, still could be a bug in Flash, but maybe we should just make our
implementation work the same way to reduce migration effort in case someone is
relying on this behavior.
Thoughts?
-Alex
On 9/4/19, 1:47 PM, "Alex Harui" <[email protected]> wrote:
I read the example incorrectly. So yeah, it should return 0 and empty
string in both cases, IMO. There might be some subtlety in how the namespaces
are specified for a QName or how QName works in child().
HTH,
-Alex
On 9/4/19, 11:33 AM, "Greg Dove" <[email protected]> wrote:
Good idea. I'll check the swf output, although probably tomorrow as I
need
to focus on something else today.
' I would have expected both to return "1" and the node. '
In that example I would expect the opposite (because the the link node
being returned by the second query is not in the specified explicit
namespace of the QName), so I am curious to understand why you think
that... maybe it will help me understand.
When I use feed.atom::link I expect only links that are bound to the
atom
namespace (uri). Because <link ... /> node has no prefix bound to the
uri
that the atom namespace defines, and it is in the default namespace, I
would not expect it to be included.
At the moment the atom::link part is working the same as swf, so I'm
happy
with that at least for what I am working on. All the explicit calls to
child(name) or descendants(name) in the app I am working on use string
args
so these all work correctly as well.
I'm just trying to cover things for the future... while my head is
still in
this stuff.
On Thu, Sep 5, 2019 at 6:11 AM Alex Harui <[email protected]>
wrote:
> Speaking of multinames, what is the ABC code generated by the Flex
> compiler for the two cases? It might contain some clues. I would
have
> expected both to return "1" and the node. But I did see in the spec
the
> notion of "InScopeNamespaces". I generally hate reading specs like
these
> so I am not very knowledgeable about what the spec says.
>
> HTH,
> -Alex
>
> On 9/4/19, 11:05 AM, "Greg Dove" <[email protected]> wrote:
>
> 'Have you rummaged through the spec?'
> Yes, if anything I probably need to step away from it and
experience
> the
> world a bit more! I have been focused on each portion of the spec
as I
> create unit tests and verify things between the player and the
Royale
> implementation.
> I've also glanced a few times in the avmplus code, and that has
> provided
> some clues where things were intentionally implemented slightly
off
> spec,
> but still a few things to figure out. However I am making
progress - I
> think I have everything covered for the codebase I am working
on....
> but I
> will keep going beyond that. For that example above, I might be
wrong,
> but
> I suspect it is using a multiname with default namespace included
for
> the
> explicit call case in the player, but not for the implicit one,
but I
> am
> not yet sure why. I will double-check the spec though...
>
>
> On Thu, Sep 5, 2019 at 4:02 AM Alex Harui
<[email protected]>
> wrote:
>
> > Don't know. Have you rummaged through the spec?
> >
> >
>
https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ecma-international.org%2Fpublications%2Ffiles%2FECMA-ST-WITHDRAWN%2FEcma-357.pdf&data=02%7C01%7Caharui%40adobe.com%7Cde670f3380f94b8fd82708d7317915d3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C1%7C637032268439916076&sdata=lY0hDgIEf68pv9fzW6NopGDv5cBdR2wfB49npPDcT7Y%3D&reserved=0
> >
> > HTH,
> > -Alex
> >
> > On 9/4/19, 3:11 AM, "Greg Dove" <[email protected]> wrote:
> >
> > This is particularly for Harbs and Yishay, as I think you
are
> both (or
> > both
> > have been) using XML quite a bit. I have quite a few fixes
> coming. All
> > with tests that match on swf and js.
> >
> > I am currently working to demonstrate proof of concept to a
> prospective
> > client for migration of a Flex app. The app makes extensive
use
> of e4x
> > and
> > uses a bunch of features that I expect had not received
attention
> > previously, because they were originally either not working
with
> the
> > codebase I am porting, or i think some even caused errors
in the
> > javascript
> > output.
> >
> > So I have spent the last several days almost full time
figuring
> things
> > out
> > and working on fixes, between the compiler and emulation
classes.
> > All the previous XML tests continue to pass, but I have many
> more unit
> > tests and fixes lined up for the following:
> >
> > namespace directives
> > default xml namespace
> > use namespace (multiple)
> >
> > a number of fixes for xml filtering, including:
> > -'this' resolves correctly in filters that include external
> references
> > from
> > the fitler expression to the 'this' scope
> > -handles alternate ordering of comparisons between XML
'getters'
> and
> > literals
> > e.g. something.(name() = "cat") or something.("cat" =
name())
> (these
> > are
> > the same)
> > -it (will) now handle XML e4x references in nested function
calls
> > inside
> > the filter, e.g. things like:
> > e.g.
> > var people:XML = <people>
> > <person>
> > <name>Bob</name>
> > <age>32</age>
> > </person>
> > <person>
> > <name>Joe</name>
> > <age>46</age>
> > </person>
> > </people>;
> > var findJoeByAge:Function = function (i:int):Boolean {
> > return i > 40;
> > };
> > people.person.(findJoeByAge(parseInt(age))).name
> >
> >
> > I have lots more granular tests in QName, Namespace, and
XML with
> > tuning to
> > improve reliability.
> > toXMLString XML node output also matches flash more
correctly in
> what I
> > have coming.
> >
> > One thing that I am trying to figure out, which I would
> appreciate
> > input on
> > if someone has an answer:
> > For the example:
> >
> > var feed:XML = new XML(
> > '<feed xmlns:atom="
> >
>
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2005%2FAtom&data=02%7C01%7Caharui%40adobe.com%7Cde670f3380f94b8fd82708d7317915d3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637032268439916076&sdata=65p3lsTIh3r%2BUB86WbQ%2F75Fcj8WhIAr9SuWxSS5se8k%3D&reserved=0
> > "
> > xmlns:m="nothing">\n' +
> > ' <link rel="no_namespace"
> > href="blah/12321/domain/"/>\n' +
> > '</feed>\n');
> > var atomSpace:Namespace = new Namespace('
> >
>
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2005%2FAtom&data=02%7C01%7Caharui%40adobe.com%7Cde670f3380f94b8fd82708d7317915d3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637032268439916076&sdata=65p3lsTIh3r%2BUB86WbQ%2F75Fcj8WhIAr9SuWxSS5se8k%3D&reserved=0
> '
> > );
> >
> > Can anyone explain why this (in SWF, as a reference
> implementation):
> > trace(feed.atomSpace::link.length())
> > trace(feed.atomSpace::link.toXMLString())
> > //output:
> > 0
> > {empty string}
> > is different to:
> > trace(feed.child(new QName(atomSpace,'link')).length())
> > trace(feed.child(new QName(atomSpace,'link')).toXMLString())
> > //output:
> > 1
> > <link rel="no_namespace" href="blah/12321/domain/"
xmlns:atom="
> >
> >
>
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.w3.org%2F2005%2FAtom&data=02%7C01%7Caharui%40adobe.com%7Cde670f3380f94b8fd82708d7317915d3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637032268439916076&sdata=65p3lsTIh3r%2BUB86WbQ%2F75Fcj8WhIAr9SuWxSS5se8k%3D&reserved=0
> "
> > xmlns:m="nothing"/>
> >
> > I had assumed the above cases would be the same, but the
second
> one is
> > behaving as if it has the default namespace included with
the
> specified
> > namespace in the QName matching (it does correctly match the
> namespace
> > specifically as well -with e.g. <atom:link nodes where the
> prefix atom
> > is
> > bound to the uri, but also seems to include link nodes with
the
> default
> > namespace, whether or not it is declared). I can
accommodate this
> > difference to make them behave the same, I just would like
to
> > understand
> > the basis for the actual rules if anyone knows....
> >
> > I should be in a position to push the updates this coming
> weekend I
> > think.
> >
> >
> >
>
>
>