Subject: Re: How to copy only the really existing <choice> branch/element? "value-of-if-exist"
From: "Ben Stover" <bxstover@xxxxxxxxxxx>
Date: Wed, 07 Oct 2009 15:16:52 +0200
|
You are right.
I simplified too much :-)
But your solution is perfect for me
Thank you
BS
On Wed, 7 Oct 2009 13:24:41 +0100, David Carlisle wrote:
>> 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.
>________________________________________________________________________
|