[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Parsing a string


Subject: Parsing a string
From: xptm@xxxxxxx
Date: Thu, 3 Jun 2004 20:34:33 +0100

Hi guys:

I have a string like

$select = SELECT * FROM aTable WHERE aColumn='something' ORDER BY anotherColumn

and want to parse this to variables such

fields = "*"
from = "aTable"
where = "aColumn='something' "
order = "anotherColumn"

so i made this:

    <xsl:attribute name="fields">
        <xsl:value-of
select="substring-before(substring-after($select,'SELECT'),'FROM')"/>
    </xsl:attribute>
    <xsl:attribute name="from">
        <xsl:value-of
select="substring-before(substring-after($select,'FROM'),'WHERE')"/>
    </xsl:attribute>
    <xsl:attribute name="where">
        <xsl:value-of
select="substring-before(substring-after($select,'WHERE'),'ORDER BY')"/>
    </xsl:attribute>
     <xsl:attribute name="order">
        <xsl:value-of select="substring-after($select,'ORDER BY')"/>
    </xsl:attribute>

This works, off-course, when $select is writen in that way, but if it is, for
instance

SELECT * FROM aTable ORDER BY anotherColumn
SELECT * FROM aTable ORDER BY anotherColumn WHERE aColumn='something'

and worst

SELECT * FROM aTable WHERE aColumn=(SELECT aColumn FROM anotherTable WHERE
anotherColumn='somethingelse')

then it won't work. Of course i can put a lot of  xsl:if and xsl:when, but
hopefuly there's another way to do it.

Someone has any ideia?







O SAPO já está livre de vírus com a Panda Software, fique você também!
Clique em: http://antivirus.sapo.pt


Current Thread