This is a sample: Create a html file out of it and try it in IE.
<html>
<head>
<script language='Javascript'>
<!--
function DrawCombo_IP(strSortBy)
{
var strSortBy1 = "";
var strSortBy2 = "";
var strSortBy3 = "";
if(strSortBy=='field1')
{
strSortBy1=strSortBy;
strSortBy2='field2';
strSortBy3='field3';
}
else if(strSortBy=='field2')
{
strSortBy1=strSortBy;
strSortBy2='field1';
strSortBy3='field3';
}
else if(strSortBy=='field3')
{
strSortBy1=strSortBy;
strSortBy2='field1';
strSortBy3='field2';
}
var strSortOrder = document.frmMain.strSortOr
var strXSL = '<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.o
strXSL += '<xsl:template match="/">';
strXSL += '<select name="strIP" size="10" style="width:400px;">';
strXSL += '<xsl:for-each select="root/r_plan">';
strXSL += '<xsl:sort select="'+strSortBy1+'" data-type="text" order="'+strSortOrder+'"
case-order="lower-first"/>
strXSL += '<xsl:sort select="'+strSortBy2+'" data-type="text" order="ascending"
case-order="lower-first"/>
strXSL += '<xsl:sort select="'+strSortBy3+'" data-type="text" order="ascending"
case-order="lower-first"/>
strXSL += '<option value="{field0}">';
strXSL += '<xsl:value-of select="field1"/> - <xsl:value-of select="field2"/> - <xsl:value-of
select="field3"/>';
strXSL += '</option>';
strXSL += '</xsl:for-each>';
strXSL += '</select>';
strXSL += '</xsl:template>';
strXSL += '</xsl:stylesheet>';
xslDoc.loadXML(strXSL);
document.getElementById("d
if(strSortOrder=='ascendin
document.frmMain.strSortOr
else
document.frmMain.strSortOr
xmlDoc.transformNodeToObje
//alert(xml2.xml);
}
function DrawCombo_IP_FormLoad()
{
document.getElementById("d
}
-->
</script>
</head>
<body>
<xml id='xslDoc'>
</xml>
<xml id='xmlDoc'>
<root>
<r_plan>
<field0>1</field0>
<field1>ooo</field1>
<field2>A03</field2>
<field3>A</field3>
</r_plan>
<r_plan>
<field0>2</field0>
<field1>RRR</field1>
<field2>H04</field2>
<field3>B</field3>
</r_plan>
<r_plan>
<field0>3</field0>
<field1>ooo</field1>
<field2>G02</field2>
<field3>A</field3>
</r_plan>
<r_plan>
<field0>4</field0>
<field1>JJJ</field1>
<field2>X04</field2>
<field3>B</field3>
</r_plan>
<r_plan>
<field0>5</field0>
<field1>MMM</field1>
<field2>XX1</field2>
<field3>A</field3>
</r_plan>
<r_plan>
<field0>6</field0>
<field1>SSS</field1>
<field2>B02</field2>
<field3>B</field3>
</r_plan>
<r_plan>
<field0>7</field0>
<field1>RRR</field1>
<field2>B09</field2>
<field3>A</field3>
</r_plan>
<r_plan>
<field0>8</field0>
<field1>pppp</field1>
<field2>A04</field2>
<field3>B</field3>
</r_plan>
</root>
</xml>
<xml id='xml2'></xml>
<form name='frmMain'>
<div id='divfield3'></div>
<select name='strSortBy'>
<option value='field1'>field1</opt
<option value='field2'>field2</opt
<option value='field3'>field3</opt
</select>
<input type='hidden' name='strSortOrder' value='ascending'>
<input type='button' value='Sort' onClick='DrawCombo_IP(docu
</form>
<script>
<!--
DrawCombo_IP(document.frmM
-->
</script>
</body>
</html>
Main Topics
Browse All Topics





by: carl_tawnPosted on 2006-09-25 at 05:21:42ID: 17591557
You can't do it directly using SelectNodes because XPath doesn't contain a function for sorting the results. There are however various methods to achieve what you want.
1) Use an XSL Transform to re-order the XML before using SelectNodes.
2) Pull your results into an array and manually sort it.
3) Pull your results and write the to a Dictionary object which will sort them for you.
Let us know which method, if any, you prefer and we can provide samples. A sample of your XML file would also be useful.