Subject: Re: [xsl] Remove Duplicates from Recursive Template Calls From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 3 May 2005 15:12:02 +0100 |
> I can't use the ".=preceding" because I'm using recursive template > calls. Why does the test for whether this is teh first node in a document depend on whether the template invocation is recursive? <xsl:for-each select="//component/@id[.=$idRef]//.."> that's a very odd XPath. selecting the parent of every node below $idRef. As a side issue I note that you are combining indent="yes" with explictly addded indentation eg <xsl:value-of select="$indent"/> (<xsl:value-of select="@estimate"/>) which adds the value of $indent followed by 10 spaces and a ( before the estimate. Results are usually more consistent across systems if you either turn off automatic indent and do it all by hand or make sure that there is no white space in the output and just let the system do it. The specification for what indentation is supposed to do in the presence of mixed content is rather under-specified. > I tried to find a way to set an attribute in the source document to > indicate that the component has been processed, but I can not find a > method to do that. I tried to flag the processed nodes, but I can't > find a method to do that either The input tree is read-only in XSLT. If you need to omit elements if they have been processed earlier rather than if they occur earlier in teh document it's probably simpler to do two passes. First do your existing stylesheet into a variable, and then do a second pass to remove duplicates. <xsl:template match="/"> <xsl:variable name="x"> <xsl:apply-templates/> </xsl:variable> <xsl:apply-templates select="xalan:node-set($x)"/> </xsl:template> The templates in the second pass (which you can put in a separae mode if they would clash with your first pass) just need to be an identity transform with extra templates to filter out whatever needs filtering. David ________________________________________________________________________ This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Remove Duplicates from Recurs, Patrick Lademan | Thread | Re: Re: [xsl] Remove Duplicates fro, Patrick Lademan |
RE: [xsl] if child element does not, Mikael Petterson \(K | Date | Re: [xsl] design question on functi, Bruce D'Arcus |
Month |