xsl-list
[Top] [All Lists]

xsl split string

2005-12-11 13:13:21
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>