Subject: [xsl] xsl split string From: "Philippe LAPLANCHE" <philippe.laplanche@xxxxxxxxxxxx> Date: Sun, 11 Dec 2005 21:13:21 +0100 |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] <empty /> vs <empty></emp, Eric Scheid | Thread | RE: [xsl] xsl split string, Michael Kay |
RE: [xsl] Problems with outputing n, Michael Kay | Date | Re: [xsl] <empty /> vs <empty></emp, Eric Scheid |
Month |