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

Re: accessing multiple xml documents from within one

Subject: Re: accessing multiple xml documents from within one template
From: Ganesh Babu N <nbabuganesh@xxxxxxxxx>
Date: Fri, 16 Jan 2009 09:47:55 +0530
Re:  accessing multiple xml documents from within one
As per my understanding the input is books.xml  and output is reportDef.xml.

You have to write the templates matching books.xml and wrap the
content with the reporDef elements/attributes.

If you have multiple XML files as input you should use  collection() of xslt2

Regards,
Ganesh


On Fri, Jan 16, 2009 at 4:38 AM, Stefan Hunziker <stefan@xxxxxxxxxxxxx> wrote:
> hi
>
> In my main books.xml document being processed I have a number of
> books, as follows:
>
> <books>
>        <book>
>                <title>Hamlet</title>
>                <author>Shakespeare</author>
>                <publisher>Peares</publisher>
>                <pagecount>120</pagecount>
>                <weight>500g</weight>
>        </book>
>        <book>
>                <title>The Perfume</title>
>                <author>Sueskind</author>
>                <publisher>ABC</publisher>
>                <pagecount>230</pagecount>
>                <weight>256g</weight>
>        </book>
> </books>
>
> in a second reportDef.xml I want to define a report list, as follows:
>
> <reportDef>
>        <col title="Book title" field="title" type="text"/>
>        <col title="# pages" field="pagecount" type="number"/>
> </reportDef>
>
>
> Now, with xsl I like to generate a report. Until now it looks like:
>
> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>        <xsl:output  method="text" indent="no" encoding="ISO-8859-1"/>
>        <xsl:variable name="reportDef" select="document('reportDef.xml')"/>
>
>        <xsl:template match="books">
>                <xsl:apply-templates select="$reportDef" mode="header"/>&#xA;
>                <xsl:apply-templates select="book"/>
>        </xsl:template>
>
>        <xsl:template match="book">
>                <xsl:apply-templates select="$reportDef" mode="data"/>&#xA;
>        </xsl:template>
>
>        <xsl:template match="col" mode="header">
>                <xsl:value-of select="@title"/>; <!-- this one is no problem-->
>        </xsl:template>
>
>        <xsl:template match="col" mode="data">
>                <xsl:variable name="fieldname" select="@field"/>;
>                <!-- here I want to print the book property $fieldname, but I can't
> access the main xml books -->
>        </xsl:template>
> </xsl:stylesheet>
>
>
> The problem is, that I don't see the books.xml from within the
> reportDef templates (<xsl:template match="col" mode="data">). Also
> when I pass the book node by param to the template there is no content
> in this node!
>
> I would be very happy if anybody could give me a hint
>
> Thanks very much
> Stefan

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.