[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: XPath equivalent of a join

Subject: Re: XPath equivalent of a join
From: "Aaron Luke" <bluenike@xxxxxxxxx>
Date: Sat, 14 Jul 2007 01:47:55 -1000
Re:  XPath equivalent of a join
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.mukul@xxxxxxxxx> 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@xxxxxxxxx> 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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.