[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] accessing multiple xml documents from within one template


Subject: Re: [xsl] accessing multiple xml documents from within one template
From: Stefan Hunziker <stefan.stanjasele@xxxxxxxxx>
Date: Fri, 16 Jan 2009 08:24:47 +0100

no, reportDef.xml is not output, but another input, the definition of
the resulting report. The output would be a list, in csv format it
would look like this:

Book title,# pages
Hamlet,120
The Perfume,230

Regards, Stefan

2009/1/16 Ganesh Babu N <nbabuganesh@xxxxxxxxx>:
> 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
>
>



--
****************************
stefan hunziker
kanalweg 10
ch-3315 bdtterkinden

tel +41 32 665 17 76
mob +41 79 455 30 62

email stefan@xxxxxxxxxxxxx


Current Thread
Keywords