xsl-list
[Top] [All Lists]

Re: [xsl] XPath equivalent of a join

2007-07-14 04:53:28
BTW, if instead of 1501 classes x 1501 teacher, there are 1501 classes
x 1 teacher or 1 class x 1500 teachers, the running times are only 1
second and 3 seconds respectively.

On 7/14/07, Aaron Luke <bluenike(_at_)gmail(_dot_)com> wrote:
Hi-

Thanks for your solution... the only problem is that this solution
seems to run very slowly.
If I replicate 1500 copies of the class with id="2" and 1500 with the
teacher with id="9",
then the query takes almost 30 seconds using Saxon8 on a 2Ghz Core 2
Duo even though
the query only matches 1 record.  Any ideas on speeding that up?

I included a fixed version of the xml doc below, too.

Aaron

  <root>
     <class id="1">
           <teacher>5</teacher>
         </class>
     <class id="2">
           <teacher>9</teacher>
         </class>

     <teacher id="5">
           <gender>female</gender>
         </teacher>
     <teacher id="9">
           <gender>male</gender>
         </teacher>
  </root>



On 7/14/07, Mukul Gandhi <gandhi(_dot_)mukul(_at_)gmail(_dot_)com> wrote:
> Your input XML is not as per the XML spec (there should be double
> quotes around attribute values).
>
> If the above error is corrected in the XML, I found the following
> solution to work:
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
>
>   <xsl:output method="xml" indent="yes" />
>
>   <xsl:template match="/root">
>     <result>
>       <xsl:copy-of select="class[teacher = ../teacher[gender =
> 'female']/@id]" />
>     </result>
>   </xsl:template>
>
> </xsl:stylesheet>
>
> On 7/14/07, Aaron Luke <bluenike(_at_)gmail(_dot_)com> wrote:
> > Hi all-
> >
> > Given the following document:
> >
> > <root>
> >  <class id="1">
> >    <teacher>5</teacher>
> >  </class>
> >  <class id="2">
> >    <teacher>9</teacher>
> >  </class>
> >
> >  <teacher id=5>
> >    <gender>female</gender>
> >  </teacher>
> >  <teacher id=9>
> >    <gender>male</gender>
> >  </teacher>
> > </root>
> >
> > Is there an XPath statement that selects all of the classes taught by
> > female teachers (in this case, just the first class)?
> > The field class.teacher is an id reference to teacher.id.
> >
> > In sql, I would be looking for:
> >
> > select class.* from class c, teacher t where c.teacher=t.id and
> > t.gender='female';
> >
> > Can't seem to figure this one out- any help would be appreciated.
> >
> > Aaron
>
>
> --
> Regards,
> Mukul Gandhi
>
> --~------------------------------------------------------------------
> XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
> --~--
>
>


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>