This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Design problem - print header information only if some element exists in the detail.
- From: "Zarella Rendon" <zarella at attglobal dot net>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 26 Apr 2002 11:25:37 -0500
- Subject: RE: [xsl] Design problem - print header information only if some element exists in the detail.
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi Ming-tzung,
Try this:
<xsl:template match="Header">
<xsl:if test="contains(Detail, 'sometext')">
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
Where 'sometext' is the text match for your satisfaction criteria.
Zarella
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Dung,
> Ming-tzung
> Sent: Wednesday, April 24, 2002 12:37 PM
> To: XSLT List (E-mail)
> Subject: [xsl] Design problem - print header information only if some
> element exists in the detail.
>
>
> Hi,
> I have an input XML source as the following:
> ....
> <Header>
> ....
> <!-- could have multiple detail information. -->
> <Detail>..<Detail>
> </Header>
> I need to output the content of the Header ONLY IF certain information
> exists in the detail. (Let us called this as the satisfied
> Detail). Besides,
> each satisfied Detail needed to print out after the Header. The design
> forces also includes that the testing condition may grow complex in the
> future.
> I guess that I have two ways in solving this; however, none of
> the solution
> I come up with is not a good solution.
> <1>
> Pass the document to one XSL for filtering out the 'unsatisfied' Detail.
> Then pass the filtered XML to the XSLT again for output.
> ==>Disadvantage - the performance.
> <2>
> Use <xsl:for-each > to select the satisfied Detail node.
> ==>Disadvantage: If the condition grows complex, I am not sure whether
> the select attribute within the <xsl:for-each> can fulfill the needs. In
> addition, If there are multiple detail, how I can print the Detail element
> once only within the <xsl:for-each> body? (The only solution for
> this I can
> see is have two <xsl:for-each>. The first one is check there is any Detail
> satisfied. If yes, print the header information. Then the second print out
> the detail. )
>
> Thanks in advance!!
>
>
> Ming-tzung Dung
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list