Hi All,
I am upgrading an WD xsl stylesheet to use the
http://www.w3.org/1999/XSL/Transform namespace and have run into some problems
with finding an equivalent to <xsl:eval>. More specifically, I'm trying to
find a way to pass parameters into jscript and vbscript functions that were in
xsl:eval blocks. The document currently contains an xsl:eval block that
defining the variables for use throughout the xsl:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dav="DAV:"
xmlns:f="urn:schemas-microsoft-com:publishing:"
xmlns:office="urn:schemas-microsoft-com:office:office">
<xsl:template match="/">
<xsl:eval>
var g_strDavNS =
getNamespaceUsedInXml(this, "DAV:");
var g_dataURL = this.selectSingleNode("/" +
g_strDavNS + ":multistatus/dataURL").text;
var g_desc = this.xml;
</xsl:eval>
Followed by quite a bit of xsl processing with periodic reference to
these variables throughout:
ie.
. dataurl=<xsl:eval>g_dataURL;</xsl:eval>
and
<xsl:eval>getDesc(g_desc);</xsl:eval>
followed by a large script section:
<xsl:script language="vbscript">
<![CDATA[
Function GetIt(value, name)
name = value
GetIt=""
End Function
Function getHTMLMain(dModified, dCreate)
if dCreate = "" then
dCreate=dModified
end if
iDiff = DateDiff("d",now(),dCreate)
if abs(iDiff) < 3 then
getHTMLMain = getHTML()
exit function
else
iDiff=DateDiff("d",now(), dModified)
if abs(iDiff) < 3 then
getHTMLMain = getHTML()
exit function
end if
end if
getHTMLMain = ""
end function
function getHTML()
getHTML = "<img src='_WPR_/newlink.gif'
border='0'/>"
End function
]]>
</xsl:script>
<xsl:script language="JScript">
<![CDATA[
function getDesc(sDesc)
{
if(sDesc.length > 50)
return sDesc;
else
return sDesc;
}
function getNamespaceUsedInXml(nodItem, strNamespace)
{
if (!nodItem)
{
return "";
}
var nodOwnerDocument = null;
if (9 == nodItem.nodeType)
{
// What we were handed was actually the root
document node and not a regular node.
nodOwnerDocument = nodItem;
}
else
{
// We were handed a regular node. Get the root
document node.
nodOwnerDocument = nodItem.ownerDocument;
}
.......more script here......
return strShortNamespace;
}
]]>
</xsl:script>
</xsl:stylesheet>
It seems as though I could create <xsl:variable> for the three
jscript/vbscript specified variables above but I'm not sure how I would pass an
equivalent "this" parameter. I know the xsl:script tags are not supported
either and am wondering if the approach of setting an xsl:variable to a script
call is even possible.
Hope this makes sense. Thanks in advance,
Chris
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list