Om: not quite. There is one implied default namespace for any XML document,
it's something with w3c in the URI, it's the namespace where 'lang'
attribute goes for example. So, what I was saying in my first response is
that Flex could've had added one default namespace too, for example for
built-in classes, such as int, Number, String etc. To be honest, I could
never understand what do these do under mx or spark namespaces. It would be
also informative and good from the educational standpoint to have flash.*
classes in a special namespace, because these are also sorts of built-ins.
And then all the rest to be whatever people want them to be.

Gordon. Oh, OK, your previous answer just sounded odd without this
explanation.

Duane, probably not a good example, because this is taken care of by DTDs
and such: the bar inside bar would be distinct from bar inside foo by the
fact it's inside bar. But these rules' complexity rises in geometrical
progression, so they are not useful for non-trivial XML documents. But, XML
is just a bad format for most purposes it's been used in 21'st century, so
these aren't news.

I think that it's not possible today to use default namespace because mx
and spark code generation work differently, and there's no way otherwise
for the compiler to know, which one to use. So, having mandatory namespace
solves the problem, but in a bad, non-generic way. It would be best if code
generation didn't rely on namespace used (because there is no logical
dependency between the two).
I would see this as a big step forward, and was advocating this before, if
the code generation mechanism was made available to developer. S.t. for
example it would be based on templates, or rule sets. The solution Adobe
came up with is a typical "enterprise" kind of thinking - trying to deal
with outcomes rather then fixing the source of the problem.
Imagine the example below:

[Mixin]
public class FlexInit {

public static function init():void {
${Accessibility initialization block}
${AMF aliases registration block}
. . .
}

This is the code that might have been used to generate FlexInit class. So
that if it was your project, and you knew you aren't going to implement
accessibility anyways, you could loose the first block. If you wanted to
override the default behavior of AMF aliases registration - again, you
would be able to do so. More yet, if you didn't want this template to be
used - you'd have to remove it, and the mention of it from other templates.

Similarly, the rules of translation of arbitrary MXML code into AS3 could
be expressed in some CFG-like language, so that if you wanted to alter the
way attributes are treated, add, for example, access modifiers, constants
usage etc. you would have something like:

identifier := ${access modifier} ${static} 'var' ${node name} ':' ${type
specifier} (initializer)*

rule, which would take certain parts of an XML node and replace the ${...}
with respective content. This would've create a really generic and reusable
system. On the other hand, having MXML templates hardcoded into compiler
has a "potential" of, for example, breaking all projects of all users in
some subtle way for the life time of the release.

Best.

Oleg

Reply via email to