Function calling thro XSL

Hi,
Find below the XML file , XSL file and the ASP Client transformation code. While transforming i'm getting error. It was working fine with MSXML 3.0 and the functions in <xsl:script> are called from within the xsl like the following
<xsl:eval>somefunction()</xsl:eval>. Since my requirement is to use MSXML 4.0 i'm unable to use <xsl:eval> to call the functions in xsl:script. I have made all the required changes and tried to call a function. It says that the function didn't return data or function returns a data of datatype which xsl doesn't understand.
So pls help me to fix the following...

Check Out the XML file below:
<BusLayerResponse>
<GuideTaskFields>
<GuideTaskField>
<Name>Name1</Name>
<DefaultValue>DefVal1</DefaultValue>
<DefaultDisplay>DefDisp1</DefaultDisplay>
<GuideTaskFieldValues>
<GuideTaskFieldValue>
<Token>Tok1</Token>
<FieldValue>FldVal1</FieldValue>
</GuideTaskFieldValue>
<GuideTaskFieldValue>
<Token>Tok2</Token>
<FieldValue>FldVal2</FieldValue>
</GuideTaskFieldValue>
</GuideTaskFieldValues>
</GuideTaskField>
<GuideTaskField>
<Name>Name2</Name>
<DefaultValue>DefVal2</DefaultValue>
<DefaultDisplay>DefDisp2</DefaultDisplay>
<GuideTaskFieldValues>
<GuideTaskFieldValue>
<Token>Tok3</Token>
<FieldValue>FldVal3</FieldValue>
</GuideTaskFieldValue>
<GuideTaskFieldValue>
<Token>Tok4</Token>
<FieldValue>FldVal4</FieldValue>
</GuideTaskFieldValue>
</GuideTaskFieldValues>
</GuideTaskField>
</GuideTaskFields>
</BusLayerResponse>

Check Out the code in XSL file below:
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns="http://www.w3.org/TR/xhtml1/strict"
xmlns:ms = "testnamespace">

<msxsl:script language="javascript" implements-prefix="ms">
<![CDATA[

function Get_Upper(e)
{
if (e != null)
{
var f = new String(e.text);
return f.toUpperCase();
}
else
{
return "null";
}
}

]]>
</msxsl:script>

<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="//BusLayerResponse" />
</body>
</html>
</xsl:template>

<xsl:template match="BusLayerResponse">
<table border="1">
<tr>
<th>Name</th>
<th>DefaultValue</th>
<th>DefaultDisplay</th>
<th>FieldValue</th>
</tr>
<xsl:for-each select="GuideTaskFields/GuideTaskField">
<tr>
<td><xsl:value-of select="ms:Get_Upper(Name)" /></td>
<td><xsl:value-of select="DefaultValue" /></td>
<td><xsl:value-of select="DefaultDisplay" /></td>
<td>
<select>
<xsl:apply-templates select="GuideTaskFieldValues/GuideTaskFieldValue" />
</select>
</td>
</tr>
</xsl:for-each>

</table>
</xsl:template>

<xsl:template match="GuideTaskFieldValue">
<option>
<xsl:attribute name="value"><xsl:value-of select="Token" /></xsl:attribute>
<xsl:value-of select="FieldValue" />
</option>
</xsl:template>

</xsl:stylesheet>

Check Out the ASP Client Code for Transformation below:

<%@ language="vbscript"%>
<%

dim oxml , oxsl
dim bLoaded

bLoaded = false

set oxml = server.createobject("MSXML2.DOMDocument.4.0")
oxml.async = false
bLoaded = oxml.load(server.mappath("finalxml.xml"))
if bLoaded then
Response.write "XML loaded"
else
Response.write "XML not loaded"
Response.End
end if

Response.write "<br>"
bLoaded = false

set oxsl = server.createobject("MSXML2.DOMDocument.4.0")
oxsl.async = false
bLoaded = oxsl.load(server.mappath("finalxsl.xsl"))
if bLoaded then
Response.write "XSL loaded"
else
Response.write "XSL not loaded"
Response.End
end if

Response.write "<br>"

Response.Write "HTML Output after transformation"
Response.Write oxml.transformNode(oxsl)

%>
[4825 byte] By [nvvn] at [2007-11-19 3:51:03]
# 1 Re: Function calling thro XSL
eval and script are not standard xsl elements. I would suggest dropping these, and reimplement the code using proper standard xsl/xpath code. To uppercase a string you can use the transform xpath function.transform(arg,'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')

http://www.w3.org/TR/xpath#function-translate
khp at 2007-11-10 3:27:40 >