Re: [xsl] How to copy only the really existing <choice> branch/element? "value-of-if-exist"

Subject: Re: [xsl] How to copy only the really existing <choice> branch/element? "value-of-if-exist"
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 7 Oct 2009 13:24:41 +0100
>   If I simply write:
> 
> <xsl:value-of select=".../aaa"/>
> <xsl:value-of select=".../bbb"/>
> <xsl:value-of select=".../ccc"/>

> then ALL three elements were copied.
As Martin just said, xsl:value-of never copies elements.

I suspect you dod not simply write that but instead wrote

If I simply write:

<aaa>
<xsl:value-of select=".../aaa"/>
</aaa>
<bbb>
<xsl:value-of select=".../bbb"/>
</bbb>
<ccc>
<xsl:value-of select=".../ccc"/>
</ccc>

in which case the elements are not made by the value-of, they are made
by the literal result elements.

don't do that, just do

<xsl:copy-of select=".../top/*"/>

which will copy the child element of top which according to your schema
fragment must be aaa, bbb or ccc.

If the content of top had been more complicated but you just wanted
aaa,bbb or ccc then you could do



<xsl:copy-of select=".../top/(aaa|bbb|ccc)"/>


or (if you are still using xslt 1)


<xsl:copy-of select=".../top/*[self::aa or self::bbb or self::ccc]"/>


David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 
________________________________________________________________________

Current Thread