Subject: RE: [xsl] only display if subnodes occur more than once From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 24 Jun 2005 08:35:16 +0100 |
> Anrew Welch wrote: > > > <xsl:template match="sub_a|sub_b|sub_c"> > > <xsl:variable name="copy" > > select="boolean(*/following-sibling::*[local-name() = > > preceding-sibling::*/local-name()])"/> > > > > <xsl:if test="$copy"> > > <xsl:copy-of select="."/> > > </xsl:if> > > </xsl:template> > > <xsl:if test="boolean(*/following-sibling::*[local-name() = > preceding-sibling::*/local-name()])"> works fine for my needs - thank > you very much! Could'nt have done it without you! > But it's probably O(n^3) in the number of siblings, so don't try it if there's a large fanout. Also the original post asked for all the elem_2's to be output: this code surely omits the last one? A 2.0 solution that's likely to be more efficient is <xsl:for-each-group select="*" group-by="local-name()"> <xsl:if test="current-group()[2]"> <xsl:copy-of select="current-group()"/> </xsl:if> </xsl:for-each> (However, this doesn't preserve the order of the children. The OP didn't say whether that was a requirement.) Michael Kay http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
AW: [xsl] only display if subnodes , Prerovsky, Clemens | Thread | [xsl] java xslt (saxon) + php?, Bruce D'Arcus |
RE: [xsl] Schema aware transformati, Michael Kay | Date | RE: AW: [xsl] java xslt (saxon) + p, Michael Kay |
Month |