[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] read/write in the same xml file
Subject: RE: [xsl] read/write in the same xml file From: Américo Albuquerque <melinor@xxxxxxx> Date: Fri, 13 Jun 2003 14:03:19 +0100 |
Hi > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of abbouh > Sent: Tuesday, June 10, 2003 4:25 PM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] read/write in the same xml file > > > is there some propositions? > (...) If you only need to write a TOC you could try this stylesheet. You'll need a node-set function, so you'll need to change the microsoft namespace to the one used by your processor Hope that this helps you. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ms="urn:schemas-microsoft-com:xslt"> <xsl:variable name="head" select="'paragraph'"></xsl:variable> <xsl:template match="document"> <xsl:text>table of contents: </xsl:text> <xsl:apply-templates select="para"> <xsl:with-param name="sizes"> <xsl:apply-templates select="para" mode="psize"></xsl:apply-templates> </xsl:with-param> </xsl:apply-templates> <xsl:text> </xsl:text> <xsl:apply-templates select="para" mode="display"></xsl:apply-templates> </xsl:template> <xsl:template match="para"> <xsl:param name="sizes"></xsl:param> <xsl:variable name="pos" select="position()"></xsl:variable> <xsl:variable name="cur" select="ms:node-set($sizes)/count[position()=$pos]"></xsl:variable> <xsl:value-of select="concat($head,$pos,'	')"/> <xsl:value-of select="sum($cur/preceding-sibling::count/word) + (string-length(concat($head,$pos)) + 2) * (count($cur/preceding-sibling::count ) + 1)"/> <xsl:text>	</xsl:text> <xsl:value-of select="sum($cur/preceding-sibling::count/word) + sum($cur/word) + (string-length(concat($head,$pos)) + 2) * (count($cur/preceding-sibling::count ) + 1)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="para" mode="psize"> <count> <xsl:apply-templates mode="psize"></xsl:apply-templates> </count> </xsl:template> <xsl:template match="word" mode="psize"> <word><xsl:value-of select="string-length(.) + 1"/></word> </xsl:template> <xsl:template match="para" mode="display"> <xsl:value-of select="concat($head,position(),' ')"/> <xsl:apply-templates select="word" mode="display"></xsl:apply-templates> </xsl:template> <xsl:template match="word" mode="display"> <xsl:apply-templates></xsl:apply-templates> <xsl:text> </xsl:text> </xsl:template> </xsl:stylesheet> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] read/write in the same xm, abbouh | Thread | Re: [xsl] read/write in the same xm, Wendell Piez |
RE: [xsl] Totalling A Set of Values, Allistair Crossley | Date | RE: [xsl] Statistics - Calculating , Andrew Welch |
Month |
Keywords