In XSLT 2.0, use the tokenize() function.
With XSLT 1.0, try the str:tokenize template found at http://www.exslt.org/
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Philippe LAPLANCHE
[mailto:philippe(_dot_)laplanche(_at_)horus-si(_dot_)com]
Sent: 11 December 2005 20:13
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] xsl split string
Hi
I have to transform this "compressed" xml :
<root fields="CHP-CODE|CHP-TABLE|CHP-LIBELLE">
<update xi="5" xk="5" a="CHP-ORDRE" b="champs" c="Ordre"/>
</root>
Into this :
<page>
<sql:execute-query xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:querry>
UPDATE `config`
SET `CHP-CODE`='CHP-ORDRE',
`CHP-TABLE`='champs',
`CHP-LIBELLE`='Ordre'
WHERE UID='5'
</sql:querry>
</sql:execute-query>
</page>
My problem is that I don't know how to extract CHP-CODE,
CHP-TABLE and CHP-LIBELLE from the fields attribute of the
root node. I have to do something generic that would work if
the fields attribute is longer.
For now I have this stylesheet. I just don't know how to
complete the part where I put ......
<xsl:template match="/root">
<page>
<xsl:apply-templates select="*"/>
</page>
</xsl:template>
<xsl:template match="update">
<sql:execute-query
xmlns:sql="http://apache.org/cocoon/SQL/2.0">
<sql:query>
UPDATE `config`
SET <xsl:apply-templates
select="@*[not(name()='xk' or name()='xi')]" mode="update"/>
WHERE <xsl:apply-templates
select="@xk" mode="update"/>
</sql:query>
</sql:execute-query>
</xsl:template>
<xsl:template match="@*" mode="update">
`..........` = '<xsl:value-of select="."/>'
<xsl:if test="not(position()=last())">,</xsl:if>
</xsl:template>
Philippe
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--