[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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Problem sending node Arra, Disalvo, Anthony J. | Thread | [xsl] XPath expression to perform ', Richard Lewis |
RE: [xsl] Problem sending node Arra, Disalvo, Anthony J. | Date | Re: [xsl] Generating beautiful HTML, Karl J. Stubsjoen |
Month |