This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Supress


Kanthi Damodaran wrote:

> A really newbie question but I want to supress a section only if all the 
> elements are empty.
> 
> For example if the xml looks like below :-
> <Contents>
> <FirstSection>
>   <Content1>Data<Content1>
>   <Content2>Data<Content2>
>   <Content3>Data<Content3>
> </FirstSection>
> 
> <SecondSection>
>   <Content1>  <Content1>
>   <Content2>  <Content2>
>   <Content3>  <Content3>
> </SecondSection>
> </Contents>
> Since all the elements in <SecondSection> is empty I want to supress this 
> from the display page but if the <Contenti> elements are not empty then it 
> needs to be displayed.  Any elegant way of doing this in XSL?

First note that your example is not a well-formed xml document.

The one-line solution is:

<xsl:template match="/*/*[not(*[not('' = normalize-space())])]"/>

The above empty rule will match all children of the top element )in your case
"FirstSection", "SecondSection", ...)  that do not have any element child whose
string value is not whitespace-only. And because the rule is empty, all matching
nodes will simply be ignored. 

Hope this helped.

Cheers,
Dimtre Novatchev.



__________________________________________________
Do You Yahoo!?
Make international calls for as low as $.04/minute with Yahoo! Messenger
http://phonecard.yahoo.com/

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]