Hello,

I have been working on a tree control that's driven by an xml file. 
What I have be trying to do is to select an item in the tree by first
searching the dataProvider, the XML object that represents the xml file.

What I have noticed is that the expressions >, <, and == don't seem to
work on attributes in nodes that do not have any children. Remember,
this is an xml file for a tree control and I may have items that don't
have any children.

This to me seems very odd, especially since >= and <= seem to work just
fine...

I submitted a bug report on the Adobe site but since they won't respond
to a bug submittal I figured I'd post it here to see if anyone had a
response or experience with my issue.  It's really frustrating since
this issue is preventing me from accessing a single node in the xml
directly.

Below is a code example, as simple as possible, I took the file and the
tree control out of the equation.  (I also based my XML for the example
off of sample code from the Flex help docs.)

You'll notice what is broken that you'd think would work is trace
examples 3,4,and 5 for myXML1 and myXML3.

-Jun

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml";
     layout="absolute"
     creationComplete="onCreationComplete()">
     <mx:Script>
         <![CDATA[
             private var myXML1:XML=<order>
                 <book ISBN="1">
                     <title>Baking Extravagant Pastries with
Kumquats</title>
                     <author>
                         <lastName>Contino</lastName>
                         <firstName>Chuck</firstName>
                     </author>
                     <pageCount>238</pageCount>
                 </book>
                 <book ISBN="2" />
                 <book ISBN="3">
                     <title>Emu Care and Breeding</title>
                     <editor>
                         <lastName>Case</lastName>
                         <firstName>Justin</firstName>
                     </editor>
                     <pageCount>115</pageCount>
                 </book>
             </order>;

             private var myXML2:XML=<order>
                 <book ISBN="1">
                     <title>Baking Extravagant Pastries with
Kumquats</title>
                     <author>
                         <lastName>Contino</lastName>
                         <firstName>Chuck</firstName>
                     </author>
                     <pageCount>238</pageCount>
                 </book>
                 <book ISBN="3" />
                 <book ISBN="2">
                     <title>Emu Care and Breeding</title>
                     <editor>
                         <lastName>Case</lastName>
                         <firstName>Justin</firstName>
                     </editor>
                     <pageCount>115</pageCount>
                 </book>
             </order>;

             private var myXML3:XML=<order>
                 <book ISBN="1" ></book>
                 <book ISBN="2" ></book>
                 <book ISBN="3" ></book>
             </order>;

             private function onCreationComplete():void
             {
                 // Trace out pieces of myXML1
                 trace('~~~~ myXML1 START ~~~~');
                 trace('myXML1 EXAMPLE 1: ' + myXML1.book[0]);
                 trace('myXML1 EXAMPLE 2: ' + myXML1.book.(@ISBN >= 1 &&
@ISBN <= 3));
                 trace('myXML1 EXAMPLE 3: ' + myXML1.book.(@ISBN > 1 &&
@ISBN < 3));
                 trace('myXML1 EXAMPLE 4: ' + myXML1.book.(@ISBN==2));
                 trace('myXML1 EXAMPLE 5: ' +
myXML1..*.(attribute('ISBN')==2));
                 trace('~~~~~~~~~~~~~~~~~~~~~~');

                 // Trace out pieces of myXML2
                 trace('~~~~ myXML2 START ~~~~');
                 trace('myXML2 EXAMPLE 1: ' + myXML2.book[0]);
                 trace('myXML2 EXAMPLE 2: ' + myXML2.book.(@ISBN >= 1 &&
@ISBN <= 3));
                 trace('myXML2 EXAMPLE 3: ' + myXML2.book.(@ISBN > 1 &&
@ISBN < 3));
                 trace('myXML2 EXAMPLE 4: ' + myXML2.book.(@ISBN==2));
                 trace('myXML2 EXAMPLE 5: ' +
myXML2..*.(attribute('ISBN')==2));
                 trace('~~~~~~~~~~~~~~~~~~~~~~');

                 // Trace out pieces of myXML3
                 trace('~~~~ myXML3 START ~~~~');
                 trace('myXML3 EXAMPLE 1: ' + myXML3.book[0]);
                 trace('myXML3 EXAMPLE 2: ' + myXML3.book.(@ISBN >= 1 &&
@ISBN <= 3));
                 trace('myXML3 EXAMPLE 3: ' + myXML3.book.(@ISBN > 1 &&
@ISBN < 3));
                 trace('myXML3 EXAMPLE 4: ' + myXML3.book.(@ISBN==2));
                 trace('myXML3 EXAMPLE 5: ' +
myXML3..*.(attribute('ISBN')==2));
                 trace('~~~~~~~~~~~~~~~~~~~~~~');
             }
         ]]>
     </mx:Script>
</mx:Application>



Reply via email to