Re: [xsl] multiple outputs

Subject: Re: [xsl] multiple outputs
From: "Shadab" <mohammad.shadab@xxxxxxxxxxx>
Date: Wed, 18 Feb 2004 19:01:54 +0530
thanks for your answer but i will try to rephrase the problem

[Input] -> {XSL}      ---->  [Good data]
                                 ---->  [Bad data]
                                 ---->  [Exception data]
                                 ---->  [Log file]

here based on some filter conditions which can be applied at any hierarchy
multiple outputs need to be rendered.

Is it possible from a single xsl or transformation needs to be applied
different number of times for as many outputs desired?

processor is xalan 2.

----- Original Message -----
From: <cknell@xxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Wednesday, February 18, 2004 5:49 PM
Subject: RE: [xsl] multiple outputs


> It's not clear from your message, but I think you are looking to serialize
more than one document from a single transformation. This is not provided
for in XSL 1.0. Some processors implement this as an extension, so whether
or not this can be done depends on which XSL processor you use. How the
extension is called will vary from processor to processor, so check the docs
on yours to find out if this is possible and how it is done. This is a FAQ,
so search this list's archives for answers.
>
> Now a comment on your style. Based on the question and the use of
<xsl:for-each> in your stylesheet, I surmise that you are relatively new to
XSLT. You will be well served to spend the time to incorporate XSLT's
programming worldview into your own thinking. Search the archives for "push
model" and "pull model". XSLT is more like SQL than it is like C. That is to
say, your templates should describe what is to be done and not how to do it.
The primary use <xsl:for-each> is to permit sorting rather than to loop
through sets of elements as you would in an imperative language.
> --
> Charles Knell
> cknell@xxxxxxxxxx - email
>
>
>
> -----Original Message-----
> From:     Shadab <mohammad.shadab@xxxxxxxxxxx>
> Sent:     Wed, 18 Feb 2004 10:12:43 +0530
> To:       <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Subject:  [xsl] multiple outputs
>
> Hi,
>
> I am having problem creating xsl which would render multiple outputs from
a
> single source file.
>
> eg.
>
> say source xml is:
>
> <Root>
> <Record><one>1</one></Record>
> <Record><one>2</one></Record>
> </Root>
>
> and xsl is:
>
> <?xml version="1.0"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
>     <xsl:template match="/">
>         <Sheet>
>              <xsl:for-each select="Root/Record">
>
>                 <xsl:if test="one=1">
>                 <sheet1>
>                   <col1>
>                     <xsl:value-of select="one"/>
>                  </col1>
>                 </sheet1>
>                </xsl:if>
>
>                 <xsl:if test="one=2">
>                 <sheet1>
>                   <col1>
>                     <xsl:value-of select="one"/>
>                  </col1>
>                 </sheet1>
>                </xsl:if>
>                 <!--for both conditions the output has to be sent to
> different stream and output should be from root downwards.-->
>
>             </xsl:for-each>
>         </Sheet>
>     </xsl:template>
> </xsl:stylesheet>
>
> now based on the 'if' condition applied below the 'for' loop the output is
> to be redirected to different output streams.
>
> So one solution is to have a sequence of ifs to direct output using
> different result fragments but this will only send a fragment of the
output
> to the stream and not the whole well formed xml starting from <Sheet>
> downwards.
>
> so two outputs could be
>
> <Sheet>
>      <col1>1</col1>
> <Sheet>
>
> and
>
> <Sheet>
>     <col1>2</col1>
> <Sheet>
>
> Any ideas how to have the complete output in any number of streams based
on
> conditions which may not be at root level but further down.
>
> Thanks,
> Shadab
>


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


Current Thread