|
Subject: Re: [xsl] XML to XML From: "Rob Lugt" <roblugt@xxxxxxxxx> Date: Fri, 22 Jun 2001 11:27:02 +0100 |
> 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
gives
> 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">
<line>
<xsl:call-template name="test"/>
</line>
</xsl:template>
<xsl:template name="test">
<xsl:param name="text" select="."/>
<xsl:param name="count" select="1"/>
<xsl:variable name="x" select="translate($text, '.,', ' ')"/>
<xsl:choose>
<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
select="$word"/></word>
</xsl:if>
<xsl:value-of select="substring($text, $wordlen+1, 1)"/>
<xsl:call-template name="test">
<xsl:with-param name="text" select="substring($text,
$wordlen+2)"/>
<xsl:with-param name="count"
select="$count+boolean($wordlen)"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$text">
<word wordID="{$count}">
<xsl:value-of select="$text"/>
</word>
</xsl:when>
</xsl:choose>
</xsl:template>
Hope this helps!
~Rob
--
Rob Lugt
ElCel Technology
http://www.elcel.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] XML to XML, m . vanrootseler | Thread | RE: [xsl] XML to XML, m . vanrootseler |
| [xsl] Re: creating mutiple columns, Dimitre Novatchev | Date | [xsl] Re: HOWTO : Lookup tables, Dimitre Novatchev |
| Month |