I have a few points to belatedly make on this thread:
1. The 'specifications' folder of the 'flex-external' repository has a spec for
MXML 2006 and 2009. It's incomplete, but it's the best one that exists. If you
find that it doesn't answer your questions about which elements are allowed
inside which elements, please let me know where specific information is missing
or wrong and I'll try to improve the spec.
2. In the new Falcon compiler, MXMLNodeBase, the abstract base class for all
nodes in the MXML syntax tree, has a method called processChildTag() which gets
overridden in each subclass to process the allowed child tags (i.e., elements).
For example, if you look at this method in MXMLDeclarationsNode (which
represents <fx:Declarations>) you can see that MXMLComponentNode (representing
<fx:Component>), MXMLModelNode (representing <fx:Model>), and MXMLInstanceNode
(representing tags like <s:Button> and <fx:int>) are allowed, while all other
tags are disallowed. Since Falcon hasn't been completed, this may or may not
match the logic in the old compiler and in the spec, but the information still
may be of some use to you. In any case, if you're using Falcon, your code
hinting will match what the compiler allows. Are you working to incorporate
Falcon into an IDE, or the old compiler?
3. In my opinion, code-hinting logic belongs in Falcon, and it would be great
it you would add it there rather than in one particular IDE. Falcon was always
intended to be a code-intelligence engine to support IDE editing, and not just
a compiler.
- Gordon