RE: [xsl] XML to XML

Subject: RE: [xsl] XML to XML
From: m.vanrootseler@xxxxxxxxx
Date: Fri, 22 Jun 2001 13:07:05 +0200
Thanks Rob, this is what I needed! You've just saved me a lot of work, so I
owe you a pint :-)


-----Oorspronkelijk bericht-----
Van: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]Namens Rob Lugt
Verzonden: vrijdag 22 juni 2001 12:27
Aan: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Onderwerp: Re: [xsl] XML to XML

> I want to convert the following XML:
> <line>One two. Testing.</line>
> into:
> <line><word>One</word> <word>two</word>. <word>Testing</word>.</line>
> Problem number two. I want to add an atribute to the <word> tag which
> the position of the word in the line: <word wordID=" ">.

I think the easiest way to deal with this is to group all the characters
that you don't want a word to contain into a single character using
translate().  The result of this can be used for your tokenizing, but you
still use the original text when outputing the bits between the tokens.
It's a bit long-winded and I expect others could improve it, but this
template should do the trick:-

<xsl:template match="line">
        <xsl:call-template name="test"/>

<xsl:template name="test">
   <xsl:param name="text" select="."/>
   <xsl:param name="count" select="1"/>
   <xsl:variable name="x" select="translate($text, '.,', '  ')"/>

         <xsl:when test="contains($x, ' ')">
            <xsl:variable name="word" select="substring-before($x, ' ')"/>
            <xsl:variable name="wordlen" select="string-length($word)"/>
            <xsl:if test="$wordlen">
                <word wordID="{$count}"><xsl:value-of
            <xsl:value-of select="substring($text, $wordlen+1, 1)"/>
            <xsl:call-template name="test">
                <xsl:with-param name="text" select="substring($text,
                <xsl:with-param name="count"
         <xsl:when test="$text">
            <word wordID="{$count}">
             <xsl:value-of select="$text"/>

Hope this helps!

Rob Lugt
ElCel Technology

 XSL-List info and archive:

 XSL-List info and archive:

Current Thread