|
Subject: RE: [xsl] read/write in the same xml file From: Jarno.Elovirta@xxxxxxxxx Date: Wed, 11 Jun 2003 14:30:16 +0300 |
Hi,
> this is an example for what i want to do:
>
> i supose this is my xml file:
> <document>
> <para>
> <word>aaa</word>
> <word>bbb</word>
> <word>ccc</word>
> <word>ddd</word>
> <word>eee</word>
> </para>
> <para>
> <word>kkk</word>
> <word>fff</word>
> <word>mmm</word>
> <word>ppp</word>
> </para>
> </document>
>
> my output file should have this structure:
>
> table of contents:
> paragraph1 12 32
> paragraph2 44 59
>
> paragraph1
> aaa
> bbb
> ccc
> ddd
> eee
> paragraph2
> kkk
> fff
> mmm
> ppp
>
>
> so the first paragraph begin in character 12 and finish in
> character 32
> in the output file.
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="document">
<xsl:text>table of contents:
</xsl:text>
<xsl:call-template name="counter" />
<xsl:text>
</xsl:text>
<xsl:for-each select="para">
<xsl:text>paragraph</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text>
</xsl:text>
<xsl:for-each select="word">
<xsl:value-of select="."/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="counter">
<xsl:param name="offset" select="0"/>
<xsl:param name="node" select="para[1]" />
<xsl:param name="count" select="1"/>
<xsl:text>paragraph</xsl:text>
<xsl:value-of select="$count"/>
<xsl:text> </xsl:text>
<xsl:variable name="start" select="$offset + 11 + string-length(string($count))"/>
<xsl:value-of select="$start"/>
<xsl:text> </xsl:text>
<xsl:if test="$count = 1">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:variable name="end" select="$start + count($node/word) + boolean($node/following-sibling::para) - 1 + string-length($node)"/>
<xsl:value-of select="$end"/>
<xsl:text>
</xsl:text>
<xsl:if test="$node/following-sibling::para">
<xsl:call-template name="counter">
<xsl:with-param name="offset" select="$end"/>
<xsl:with-param name="node" select="$node/following-sibling::para[1]"/>
<xsl:with-param name="count" select="$count + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
Feels really silly to write stylesheets like this...
Cheers,
Jarno - Conjure One: Tears From The Moon
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, Mike Haarman |
| Re: [xsl] read/write in the same xm, abbouh | Date | [xsl] xsl sorting, andrew . curry |
| Month |