/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Igen - sortering af XML elementer i ASP!
Fra : Morten Rasmussen


Dato : 16-07-02 12:18

Kan det virkelig passe at ingen kan hjælpe mig med nedenstående, - eller
bare hjælpe mig i den rigtige retning!?

Jeg forsøger at udskrive nogle statistiske data inde imellem nogle af mine
XML data og derfor kan XSL (hvor det er nemt at sortere XML elementer) vist
ikke løse mit problem.

I bund og grund skal XML dataene bare sorteres (nemt via XSL), men jeg
ønsker at vise nogle statistiske data hver 9. gang i tabellen, derfor
forsøger jeg at bruge ASP istedet! Dvs. målet er at udskrive XML dataene
således:
Statistisk data for element 1-8
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Statistisk data for element 9-16
Element 9
.... osv.

Jeg tillader mig at gengive mit tidligere spørgsmål herunder hvoraf mit ASP
script fremgår. Alt virker i dette script bortsetfra at dataene ikke
sorteres først. Siden jeg skrev første gang har jeg provet at lave en
bobbelsort funktion i mmit ASP script, men dette kan jeg heller ikke få til
at makkeret. Denne funktion står nederst i beskeden her - måske er det
nemmere at løse problemet der!?

Håber nogle kan hjælpe denne gang. Tak.

Mvh. Morten


Gammel spg:
Jeg er lige begyndt på dette område og vil høre om man kan sortere sine XML
noder direkte i et ASP-script!?

Normalt kan man jo i en XSL fil, men jeg har nogle beregninger jeg er nødt
til at lægge i selve ASP-scriptet (se evt. ASP-scriptet herunder - dataene
skulle gerne sorteret inden resultatet blev genereret)

Mvh. Morten

PS. ASP script til visning af en deltagerliste:

<SCRIPT LANGUAGE="JSCRIPT" RUNAT="SERVER">

var oSource = Server.CreateObject("MSXML2.DOMDocument");
oSource.async = false;
oSource.setProperty("SelectionLanguage", "XPath");
oSource.load(Server.MapPath("data/deltager.xml"));

var id = 0;
visOverskrift();

<!-- Finder alle spillere og viser dem -->
var strXPath = "/*/*";
var oDeltager = oSource.selectNodes(strXPath);
visDeltagerListeMGrp(oDeltager);

function visOverskrift() {
Response.Write(" <table border=&quot2&quot>");
Response.Write(" <tr>");
Response.Write(" <th><B>Navn</B></th>");
Response.Write(" <th><B>Klub</B></th>");
Response.Write(" <th><B>Elo</B></th>");
Response.Write(" <th><B>Rating</B></th>");
Response.Write(" </tr>");
}

function visDeltagerListeMGrp(oNode) {
var mnr = 1;
var bnr = 1;
var grp = "";
for (var i=0; i<oNode.length; i++) {
if ((i == 0) | (i % 8 == 0)) {
var gennemsnit = 0;
var idx = i;
var sum = 0;
for (var grnr=idx; grnr<(idx+8); grnr++) {
var oAktNode = oNode[grnr].lastChild;
sum = sum + parseInt(oAktNode.text) ;
}
sum = parseInt(sum / 8);
if (sum >= 1900) {
grp = "Mestergruppe " + mnr;
mnr++;
} else {
grp = "Basisgruppe " + bnr;
bnr++;
}
Response.Write("<tr>");
Response.Write("<td><b>" + grp + "</b></td>");
Response.Write("<td><b>" + "Gennemsnitsrating " + "</b></td>");
Response.Write("<td><b>" + "</b></td>");
Response.Write("<td><b>" + sum + "</b></td>");
Response.Write("</tr>");
}
visDeltagerIndhold(oNode[i]);
}
}

function visDeltagerIndhold(oNode) {
id = id + 1;
Response.Write("<tr>");
var oAktuelNode = oNode.firstChild;
while (oAktuelNode) {
switch (oAktuelNode.nodeTypeString) {
case "element":
Response.Write("<td>" + oAktuelNode.text + "</td>");
break;
}
oAktuelNode = oAktuelNode.nextSibling;
}
Response.Write("</tr>");
}

</SCRIPT>


Bobbelsort ASP sorterings funktion:
function sorter(oNode) {
for (var i=oNode.length-1; i>0; i--) {
for (var j=2; j<=i; j++) {
var oLNode = oNode[j-1].lastChild;
var oANode = oNode[j].lastChild;
if ( parseInt(oLNode.text) > parseInt(oANode.text) ) {
var oLocalNode = oNode[j-1];

<!-- Det er nu problemet kommer, jeg ønsker jo at bytte om på element oLNode
og oANode -->
<!--
oNode[j-1] = oNode[j];
oNode[j] = oLocalNode;
-->
oNode.replaceChild( oNode[j], oNode[j-1] );
oNode[j].getParentNode().replaceChild(oNode[j-1], oNode[j]);


oNode.replaceChild( oNode[j-1] , oNode[j] );
oNode[j].nodeValue = oNode[j-1].nodeValue;
}
}
}
}






 
 
Rune Baess (17-07-2002)
Kommentar
Fra : Rune Baess


Dato : 17-07-02 23:37


"Morten Rasmussen" <mrasmuss@ofir.dk> wrote
[Klip]
> I bund og grund skal XML dataene bare sorteres (nemt via XSL), men jeg
> ønsker at vise nogle statistiske data hver 9. gang i tabellen, derfor
> forsøger jeg at bruge ASP istedet! Dvs. målet er at udskrive XML dataene
> således:
> Statistisk data for element 1-8
> Element 1
> Element 2
> Element 3
> Element 4
> Element 5
> Element 6
> Element 7
> Element 8
> Statistisk data for element 9-16
> Element 9
> ... osv.

Jeg ved ikke hvad den hedder i JScript, men i VB kan man bruge "MOD":

<%
for i=1 to 30
if i MOD 8 = 1 then
Response.Write("Statistisk data for element " & i & "-" & (i+7) &
"<br>")
end if
Response.Write("Element " & i & "<br>")
next
%>

Det står vel her:
http://msdn.microsoft.com/library/en-us/script56/html/js56jslrfjscriptlangua
gereference.asp


Rune




Tobias Hinnerup (20-07-2002)
Kommentar
Fra : Tobias Hinnerup


Dato : 20-07-02 07:59


"Morten Rasmussen" <mrasmuss@ofir.dk> wrote in message
news:3d3400d1$0$80817$edfadb0f@dspool01.news.tele.dk...
> Kan det virkelig passe at ingen kan hjælpe mig med nedenstående, - eller
> bare hjælpe mig i den rigtige retning!?
>
> Jeg forsøger at udskrive nogle statistiske data inde imellem nogle af mine
> XML data og derfor kan XSL (hvor det er nemt at sortere XML elementer)
vist
> ikke løse mit problem.

Den bedste løsning jeg har fundet er at flytte data over i et array, sortere
dette og arbejdere videre dérfra. Tjek evt.
http://www.hinnerup.net/2002/experiments/quicksort/

/Tobias



Søg
Reklame
Statistik
Spørgsmål : 177506
Tips : 31968
Nyheder : 719565
Indlæg : 6408561
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste