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

RE: [xsl] Problem sending node Array to Javascript using .NET xsl /xml parser


Subject: RE: [xsl] Problem sending node Array to Javascript using .NET xsl /xml parser
From: "Disalvo, Anthony J." <ANTHONY.J.DISALVO@xxxxxxxx>
Date: Wed, 15 Oct 2003 11:17:55 -0700

Thanks for the Idea, I tried this and it did not work.

-----Original Message-----
From: M. David Peterson [mailto:conners_dad@xxxxxxx]
Sent: Wednesday, October 15, 2003 8:49 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Problem sending node Array to Javascript using .NET
xsl/xml parser


in this context both . and current() are equivalent.. try using current() 
instead of . and see if that fixes it...

Regards,

M.


----- Original Message ----- 
From: "Disalvo, Anthony J." <ANTHONY.J.DISALVO@xxxxxxxx>
To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Tuesday, October 14, 2003 9:25 AM
Subject: [xsl] Problem sending node Array to Javascript using .NET xsl/xml 
parser


> I have the following XML structure and XSLT Files. I have a javascript 
> which
> retrieves a reference to a node and then formats a number based upon how
> large or small the number is.
>
> I have been using Xselerator to test my XSLT against the XML and it has
> successfully generated the correct html output I am looking for.
>
> If I try the same transaction using ASP.NET XslTransform the following 
> error
> message: "warning JS1204: Not all required arguments have been supplied"
>
> It is having a problem with the following line of code: <xsl:value-of
> select="local:formatSigfigs(.,'AvgLabQARecovery')"/>
>
> It does not like the period/decimal point being sent in to the javascript 
> as
> a reference to the node.
>
> Any ideas on how to deal with this issue or alternatives on how tro
> reference the node not using the period / decimal point that will pass the
> Microsoft parser's requirements?
>
> //////////////////////////////XML
>
INPUT///////////////////////////////////////////////////////////////////////
> /
>
> <Report ReportID="QC-03" ReportTitle="Laboratory Report Sample - Percent
> Recovery">
> <Group GroupCategory="Sampling Event List" GroupValue="25,35,45,55,65,75">
> <AnalyteData LabResultsTypeName="LCS" LabResultsTypeDescription="Result 
> from
> a lab control sample" Analyte="Americium-241" AnalyticalMethodType="RGAMM"
> AvgLabQARecovery="99.000000000000" MinLabQARecovery="99.000000000000"
> MaxLabQARecovery="99.000000000000" AnalyteCount="2"/>
> <AnalyteData LabResultsTypeName="LCS" LabResultsTypeDescription="Result 
> from
> a lab control sample" Analyte="Cesium-137" AnalyticalMethodType="RGAMM"
> AvgLabQARecovery="105.367005227874" MinLabQARecovery="97.000000000000"
> MaxLabQARecovery="107.709999084473" AnalyteCount="531"/>
> <GroupList GroupListValue="25" GroupListText="Cotto-Waxo
> (DT14)-Verification-Class 2"/>
> <GroupList GroupListValue="35" GroupListText="Plant 1 (Small Area #11
> North)-Verification-Class 1"/>
> </Group>
> </Report>
>
>
////////////////////////////////////////////////////////////////////////////
> /////////////////////////////////////////
>
> //////////////////////////////////////////XSL
> INPUT//////////////////////////////////////////////////////////////
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>  xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>  xmlns:auto-nsl="http://www.w3.org/TR/WD-xsl"
>  xmlns:local="urn:galileo-com:msxsl-jscript-utilities" >
> <xsl:template match="/">
> <xsl:for-each select="Report">
> <table width="800px" border="1" cellpadding="0" cellspacing="0" >
> <xsl:choose>
> <xsl:when test="Group">
> <tr><td>
> <table border="1" width="100%" cellpadding="0" cellspacing="0">
> <tr><td width="50%">Report Code</td><td
> width="50%"><xsl:value-of select="@ReportID"/></td></tr>
> <tr><td width="50%">Report Name</td><td
> width="50%"><xsl:value-of select="@ReportTitle"/></td></tr>
> </table>
> <xsl:for-each select="Group">
> <table>
> <xsl:choose>
> <xsl:when test="GroupList">
> <tr>
> <td><xsl:value-of
> select="@GroupCategory"/></td>
> <td></td>
> </tr>
> <xsl:for-each select="GroupList">
> <tr>
> <td></td>
> <td><xsl:value-of
> select="@GroupListText"/></td>
> </tr>
> </xsl:for-each>
> </xsl:when>
> <xsl:otherwise>
> <tr>
> <td><xsl:value-of
> select="@GroupCategory"/></td>
> <td><xsl:value-of
> select="@GroupValue"/></td>
> </tr>
> </xsl:otherwise>
> </xsl:choose>
> </table>
> <table cellpadding="0" cellspacing="0" class="rptHeadBold"
> border="1" width="100%">
> <tr>
> <td align="right" width="17%">Analyte</td>
> <td align="right" width="17%">Analytical
> Method Type</td>
> <td align="right" width="17%">Average Lab
> Value</td>
> <td align="right" width="17%">Min Lab
> Value</td>
> <td align="right" width="16%">Max Lab
> Value</td>
> <td align="right" width="16%">Analyte
> Count</td>
> </tr>
> </table>
> <table border="1" width="100%" cellpadding="0"
> cellspacing="0" >
> <xsl:for-each select="AnalyteData">
> <tr>
> <td align="right" width="17%"><xsl:value-of
> select="@Analyte"/></td>
> <td align="right" width="17%"><xsl:value-of
> select="@AnalyticalMethodType"/></td>
> <td align="right" width="17%"><xsl:value-of
> select="local:formatSigfigs(.,'AvgLabQARecovery')"/></td>
> <td align="right" width="17%"><xsl:value-of
> select="local:formatSigfigs(.,'MinLabQARecovery')"/></td>
> <td align="right" width="16%"><xsl:value-of
> select="local:formatSigfigs(.,'MaxLabQARecovery')"/></td>
> <td align="right" width="16%"><xsl:value-of
> select="@AnalyteCount"/></td>
> </tr>
> </xsl:for-each>
> </table>
> </xsl:for-each>
> </td></tr>
> </xsl:when>
> <xsl:otherwise>
> <tr>
> <td align="center">No data was returned for the selected
> parameters.</td>
> </tr>
> </xsl:otherwise>
> </xsl:choose>
> </table>
> </xsl:for-each>
> </xsl:template>
> <msxsl:script language="JavaScript" implements-prefix="local">
> <![CDATA[
> function formatSigfigs (oNodeList,ColumnName)
> {
> var oNode = oNodeList.item(0);
>
>
> //var numberVal = oNode.getAttribute('AvgLabQARecovery');
> var numberVal = oNode.getAttribute(ColumnName);
> if ((numberVal >= 1000000)||(numberVal <= 0.0001))
> {
> var exponentVal;
>
> if (numberVal >= 1000000)
> {
> exponentVal = 5;
> numberVal = numberVal/1000000
> while(numberVal > 10)
> {
> numberVal = numberVal/10;
> exponentVal = exponentVal + 1;
> }
> numberVal = formatNumber(numberVal,"0.00") + "E+" +
> formatNumber(exponentVal,"0");
> }
> else
> {
> exponentVal = -4;
> numberVal = numberVal* 10000;
> while(numberVal < 1)
> {
> numberVal = numberVal*10;
> exponentVal = exponentVal - 1;
> }
> numberVal = formatNumber(numberVal,"0.00") + "E" +
> formatNumber(exponentVal,"0");
> }
>
> }
>
> else if (numberVal >= 100000){numberVal =
> (formatNumber(numberVal,"#,##0").substr(0,4) + "000");}
> else if (numberVal >= 10000){numberVal =
> (formatNumber(numberVal,"#,##0").substr(0,4) + "00");}
> else if (numberVal >= 1000){numberVal =
> (formatNumber(numberVal,"#,##0").substr(0,4) + "0");}
> else if (numberVal >= 100){numberVal = formatNumber(numberVal,"#,##0");}
> else if (numberVal >= 10){numberVal = formatNumber(numberVal,"#,##0.0");}
> else if (numberVal >= 1){numberVal = formatNumber(numberVal,"#,##0.00");}
> else if (numberVal >= 0.1){numberVal = 
> formatNumber(numberVal,"#,##0.000");}
> else if (numberVal >= 0.01){numberVal =
> formatNumber(numberVal,"#,##0.0000");}
> else if (numberVal >= 0.001){numberVal =
> formatNumber(numberVal,"#,##0.00000");}
> return numberVal;
> }
>   var separator = ",";  // use comma as 000's separator
>   var decpoint = ".";  // use period as decimal point
>   var percent = "%";
>   var currency = "$";  // use dollar sign for currency
>
>   function formatNumber(number, format, print) {  // use:
> formatNumber(number, "format")
>     if (print) document.write("formatNumber(" + number + ", \"" + format +
> "\")<br>");
>
>     if (number - 0 != number) return null;  // if number is NaN return 
> null
>     var useSeparator = format.indexOf(separator) != -1;  // use separators
> in number
>     var usePercent = format.indexOf(percent) != -1;  // convert output to
> percentage
>     var useCurrency = format.indexOf(currency) != -1;  // use currency
> format
>     var isNegative = (number < 0);
>     number = Math.abs (number);
>     if (usePercent) number *= 100;
>     format = strip(format, separator + percent + currency);  // remove key
> characters
>     number = "" + number;  // convert number input to string
>
>      // split input value into LHS and RHS using decpoint as divider
>     var dec = number.indexOf(decpoint) != -1;
>     var nleftEnd = (dec) ? number.substring(0, number.indexOf(".")) :
> number;
>     var nrightEnd = (dec) ? number.substring(number.indexOf(".") + 1) : 
> "";
>
>      // split format string into LHS and RHS using decpoint as divider
>     dec = format.indexOf(decpoint) != -1;
>     var sleftEnd = (dec) ? format.substring(0, format.indexOf(".")) :
> format;
>     var srightEnd = (dec) ? format.substring(format.indexOf(".") + 1) : 
> "";
>
>      // adjust decimal places by cropping or adding zeros to LHS of number
>     if (srightEnd.length < nrightEnd.length) {
>       var nextChar = nrightEnd.charAt(srightEnd.length) - 0;
>       nrightEnd = nrightEnd.substring(0, srightEnd.length);
>       if (nextChar >= 5) nrightEnd = "" + ((nrightEnd - 0) + 1);  // round
> up
>
>  // patch provided by Patti Marcoux 1999/08/06
>       while (srightEnd.length > nrightEnd.length) {
>         nrightEnd = "0" + nrightEnd;
>       }
>
>       if (srightEnd.length < nrightEnd.length) {
>         nrightEnd = nrightEnd.substring(1);
>         nleftEnd = (nleftEnd - 0) + 1;
>       }
>     } else {
>       for (var i=nrightEnd.length; srightEnd.length > nrightEnd.length; 
> i++)
> {
>         if (srightEnd.charAt(i) == "0") nrightEnd += "0";  // append zero 
> to
> RHS of number
>         else break;
>       }
>     }
>
>      // adjust leading zeros
>     sleftEnd = strip(sleftEnd, "#");  // remove hashes from LHS of format
>     while (sleftEnd.length > nleftEnd.length) {
>       nleftEnd = "0" + nleftEnd;  // prepend zero to LHS of number
>     }
>
>     if (useSeparator) nleftEnd = separate(nleftEnd, separator);  // add
> separator
>     var output = nleftEnd + ((nrightEnd != "") ? "." + nrightEnd : ""); 
> //
> combine parts
>     output = ((useCurrency) ? currency : "") + output + ((usePercent) ?
> percent : "");
>     if (isNegative) {
>       // patch suggested by Tom Denn 25/4/2001
>       output = (useCurrency) ? "(" + output + ")" : "-" + output;
>     }
>     return output;
>   }
>
>   function strip(input, chars) {  // strip all characters in 'chars' from
> input
>     var output = "";  // initialise output string
>     for (var i=0; i < input.length; i++)
>       if (chars.indexOf(input.charAt(i)) == -1)
>         output += input.charAt(i);
>     return output;
>   }
>
>   function separate(input, separator) {  // format input using 'separator'
> to mark 000's
>     input = "" + input;
>     var output = "";  // initialise output string
>     for (var i=0; i < input.length; i++) {
>       if (i != 0 && (input.length - i) % 3 == 0) output += separator;
>       output += input.charAt(i);
>     }
>     return output;
>   }
>   ]]>
>  </msxsl:script>
> </xsl:stylesheet>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords