[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Problem sending node Array to Javascript using .NE

Subject: RE: 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
formatnumber javascript
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:  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:  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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.