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

Re: combining 2 different XML files within the same XS

Subject: Re: combining 2 different XML files within the same XSLT
From: "todd binder" <todd_binder@xxxxxxxxxxx>
Date: Wed, 28 Aug 2002 11:22:25 -0400
combining xml file
Jeni, this works perfectly with one small problem.

when using the document(//file) to fill the $mergedset variable, I am not
allowed to have file paths in front of the files

<files>
 <file>games.xml</file>
 <file>events.xml</file>
</files>

so the XML files have to be in the same directory as the XSL file, not a
huge deal, but I usually keep all the XML files in a separate directory
(cgi-bin/xml) from the XSL files..

so what I would like is
<files>
 <file>cgi-bin/xml/ncaa_games.xml</file>
 <file>cgi-bin/xml/holidays.xml</file>
</files>

but IF I do that, this doesn't work
<xsl:variable name="mergedset" select="document(//file)"/>

I have tried to use concat() inside the document(), but it doesn't seem to
work..

Is there a way to reference these files when they do not live in the same
directory?
normally I create variables for any files that are not the root file being
used for the transformation (see below)
 <xsl:variable name="entry" select="document('cgi-bin/xml/entry.xml')" />
 <xsl:variable name="teams" select="document('cgi-bin/xml/teams.xml')" />

and this works just fine, but I can't seem to achive the same thing using
the <files><file> approach....

What am I missing?
- Todd

----- Original Message -----
From: "Jeni Tennison" <jeni@xxxxxxxxxxxxxxxx>
To: "Todd Binder" <todd_binder@xxxxxxxxxxx>
Cc: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, August 28, 2002 4:44 AM
Subject: Re:  combining 2 different XML files within the same XSLT


> Hi Todd,
>
> > I would have thought that the below code you supplied would have
> > sorted ALL the nodes in $mergedset by date, not have done it
> > separately
> >
> > <xsl:apply-templates select="//date">
> >     <!-- since your criterion is your date, we'll go straight to
them -->
> >       <xsl:sort type="number"/>
> >       <!-- let's sort em while we're at it -->
> >  </xsl:apply-templates>
> >
> > why is this sort not encompassing both sets of nodes? is there a way
> > to make it sort both set's of nodes?
>
> The path "//date" says "from the root node *of the current document*,
> gather together all the date elements and apply templates to them in
> sorted order". You don't want to just sort the date elements of the
> current document -- you want to sort all of the event and game
> elements from both documents.
>
> The $mergedset variable holds the root nodes of the two documents.
> (When you could how many nodes the $mergedset variable holds, you get
> 2 because there are two files -- two root nodes.) To get all the event
> and game elements from both documents, you can use:
>
>   $mergedset/events/event | $mergedset/games/game
>
> You can then apply templates to these nodes, sorted in date order, as
> follows:
>
>   <xsl:apply-templates select="$mergedset/events/event |
>                                $mergedset/games/game">
>     <xsl:sort select="date" type="number" />
>   </xsl:apply-templates>
>
> and have a template that turns both event and game elements into app
> elements:
>
> <xsl:template match="event | game">
>   <app type="{local-name()}">
>     <xsl:copy-of select="@*" />
>     <xsl:copy-of select="*" />
>   </app>
> </xsl:template>
>
> If you want to filter the events/games, I suggest that you do so when
> you created the set of events and games, for example use:
>
>   ($mergedset/events/event | $mergedset/games/game)
>     [date > 20020814 and 20020821 > date]
>
> to get those events and games dated between 20020814 and 20020821
> exclusive.
>
> Cheers,
>
> Jeni
>
> ---
> Jeni Tennison
> http://www.jenitennison.com/
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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.