W3C home > Mailing lists > Public > xml-dist-app@w3.org > July 2001

xml tranformation through asp and xsl

From: puja <lalitha_nutakki@hotmail.com>
Date: Tue, 10 Jul 2001 07:06:21 -0400 (EDT)
To: <xml-dist-app@w3.org>
Message-ID: <DAV31x6JSjbnOitUaxA000052bd@hotmail.com>
hai,
i am sending my code where i am getting problems
i am using asp and xsl to transform an xml file.
my original xml
 is

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="secondxsl.xsl"?>

<query>

<fields>state</fields>

<table>pardetails</table>

<conditions>

<condition>

<attribute>state</attribute>

<operator>lessthan</operator>

<value>2</value>

</condition>

</conditions>

</query>

my first xsl is
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="VBScript">

<xsl:script ><![CDATA[


public function tablemapping() 

Dim newval

Dim xmlDoc 

Dim def 


newatr=me.text


newop=me.nextSibling.text

newoperator=getfromdictionary(newop)

newval=me.nextSibling.nextSibling.text

if(newatr="state") then


if newoperator="=" then

tablemapping=newatr&" "&newoperator&" "&newval

else 


tablemapping=inserttable(newoperator,newval,0) 

end if


else


if newoperator="=" then

tablemapping=newatr&" "&newoperator&" "&newval

else 

tablemapping=inserttable(newoperator,newval,1)



end if


end if

end function


public function inserttable(newop,newval,childnumber) 


set objxmlDoc=CreateObject("Microsoft.XMLDOM")

objxmlDoc.async="false"

objxmlDoc.load("note1.xml")


set newnode=objxmlDoc.createElement("operator")

set newtext=objxmlDoc.createTextNode(newop)

newnode.appendChild(newtext)


objxmlDoc.documentElement.childNodes(childnumber).childNodes(0).childNodes(2).childNodes(0).childNodes(2).childNodes(0).appendchild(newnode)


set newnode=objxmlDoc.createElement("value")

set newtext=objxmlDoc.createTextNode(newval)

newnode.appendChild(newtext)


objxmlDoc.documentElement.childNodes(childnumber).childNodes(0).childNodes(2).childNodes(0).childNodes(2).childNodes(0).appendchild(newnode)


inserttable=objxmlDoc.documentElement.childNodes(childnumber).childNodes(0).xml


end function



function getfromdictionary(objtext)

dim dictionaryobject

set dictionaryobject=CreateObject("Scripting.Dictionary")

dictionaryobject.Add "equalto","="

dictionaryobject.Add "lessthan","lessthan"

dictionaryobject.Add "greaterthan","greaterthan"

dictionaryobject.Add "lessthanorequal","lessthanequalto"

dictionaryobject.Add "greaterthanorequal","greaterthanequalto" 

dictionaryobject.Add "ename","ENAM" 

dictionaryobject.Add "eid","ID" 

dictionaryobject.Add "esalary","SALARY" 

dictionaryobject.Add "edepid","DEPID" 

dictionaryobject.Add "state","state" 

dim newvalue


newvalue=dictionaryobject.Item(objtext)

getfromdictionary=newvalue


end function

]]></xsl:script>


<xsl:template match ="/">

<xsl:apply-templates/>

</xsl:template> 

<xsl:template match ="query">

<xsl:element name="query">

<xsl:apply-templates/>

</xsl:element>

</xsl:template> 


<xsl:template match ="table">

<xsl:element name="table">

<xsl:value-of select="."/>

<xsl:apply-templates/>

</xsl:element>

</xsl:template> 


<xsl:template match ="fields">

<xsl:element name="fields">

<xsl:value-of select="."/>

<xsl:apply-templates/>

</xsl:element>

</xsl:template> 



<xsl:template match ="conditions">

<xsl:element name="conditions">

<xsl:attribute name="boolean">

<xsl:value-of select="@boolean"/>

</xsl:attribute>

<xsl:apply-templates/>

</xsl:element>

</xsl:template> 


<xsl:template match="condition">

<xsl:element name="condition">


<xsl:attribute name="boolean">

<xsl:value-of select="@boolean"/>

</xsl:attribute>


<xsl:for-each select="attribute">


<xsl:eval>tablemapping</xsl:eval>


</xsl:for-each>


</xsl:element>

<xsl:apply-templates/> 

</xsl:template> 


</xsl:stylesheet>

and note1.xml is
<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="c.xsl"?>

<match>

<state>

<condition>

<attribute>stateid</attribute>

<operator>in</operator>

<value>

<query>

<fields>stateid</fields>

<table>state</table>

<conditions>

<condition>

<attribute>

stateid

</attribute>


</condition>

</conditions>

</query>

</value>

</condition>

</state>

<priority>

<condition>

<attribute>priority</attribute>

<operator>in</operator>

<value>

<query>

<fields>priority</fields>

<table>priority</table>

<conditions>

<condition>

<attribute>

priorityid

</attribute>

</condition>

</conditions>

</query>

</value>

</condition>

</priority>

</match>

and my asp is
<%@ Language=VBScript %>

<%

dim objxml

dim objxsl

dim newxml

dim bflag

dim szXMLGenerated

set objxml=server.Createobject("Microsoft.XMLDOM")

objxml.async=false

bflag=objxml.load(server.MapPath("state0.xml"))

If bflag=false then

response.write "XML OBJECTS ARE NOT LOADED PROPERLY"

End if



set objxsl=server.Createobject("Microsoft.XMLDOM")

objxsl.async=false

bflag=objxsl.load(server.MapPath("secondxsl.xsl"))

if bflag=false then

response.write "XSL OBJECTS ARE NOT LOADED PROPERLY"

end if

szXMLGenerated =objxml.transformNode(objxsl)


Set newxml = Server.CreateObject("Microsoft.XMLDOM")

newxml.async = false

bFlag = newxml.loadXML(szXMLGenerated)

If bFlag = false then

Response.write "XML not loaded"

End if

newxml.save Server.MapPath( "intermediatexml.xml")



set finalxml=server.Createobject("Microsoft.XMLDOM")

finalxml.async=false

bflag=finalxml.load(server.MapPath("intermediatexml.xml"))

if bflag=false then

response.write "XML OBJECTS ARE NOT LOADED PROPERLY"

End if


set firstxsl=server.Createobject("Microsoft.XMLDOM")

firstxsl.async=false

bflag=firstxsl.load(server.MapPath("c1.xsl"))

if bflag=false then

response.write "XSL OBJECTS ARE NOT LOADED PROPERLY"

end if


resultGenerated =finalxml.transformNode(firstxsl)

Response.write resultGenerated 


%>

after executing this asp 
iam getting output as below
select state from pardetails where ( <condition> <attribute>stateid</attribute> <operator>in</operator> <value> <query> <fields>stateid</fields> <table>state</table> <conditions> <condition> <attribute> stateid </attribute> <operator>lessthan</operator><value>2</value></condition> </conditions> </query> </value> </condition> ) 
but i want to get it as
select state from pardetails where(stateid in (stateid lessthan 2)

please help to solvu this problem
mail me to:puja_kus@yahoo.com
Received on Tuesday, 10 July 2001 08:58:32 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:02 GMT