Toon posts:

[xsl] sort op id, blijf foutmelding krijgen

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ik ben bezig om een website te maken, en ben met xml, xsl een (doodsimpel) gastenboekje aan het maken.. dit werkt allemaal heel goed, alleen komen nieuwe toevoegingen helaas altijd onderaan de pagina te staan.. dit wil ik dus juist omdraaien, zodat een nieuwe invoer direct bovenaan komt te staan.. nu blijf ik constant foutmeldingen krijgen dat ik de sort niet op een bepaalde plek neer mag zetten...

Ik ben gaan zoeken via google en w3c naar de verschillende manieren van sort en kwam op een aantal bruikbare links terecht waaronder:

http://www.w3.org/TR/xslt
http://www.w3schools.com/xsl/xsl_sort.asp

verder heb ik de GOT search nog langsgebladerd maar kon daar ook niet direct vinden wat ik zocht.. waar ik naar op zoek ben, is iemand de me hopelijk kan vertellen waar ik de <xsl:sort select="id"/> ergens mag neerzetten.

IE geeft me waar ik deze ook in de XSL plaats de foutmelding:

Error Type:
msxml3.dll (0x80004005)
Keyword xsl:sort may not be used here.
/pages/gb_overzicht.asp, line 51


XSL:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>

<xsl:template match="gastenboek">
<link rel="stylesheet" type="text/css" href="../css/stijl.css"></link>
    <html>
    <body>
        <h1>Gastenboek</h1>
        <table cellpadding="3" cellspacing="0">
            <tr>
                <th>Onderwerp</th>
                <th>Tekst</th>
                <th>Naam</th>
                <th>Datum</th>
            </tr>
            <xsl:apply-templates />
            <xsl:sort select="id"/>
        </table>
        <a href="../pages/gb_editfrm.html">Toevoegen bericht</a>
    </body> 
    </html>
</xsl:template>

<xsl:template match="bericht">
        <xsl:if test="@zichtbaar = 'yes'">
            <tr>
                <xsl:apply-templates />
            </tr>   
        </xsl:if>
</xsl:template>

<xsl:template match="onderwerp">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="tekst">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="naam">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>

<xsl:template match="datum">
    <td>
        <xsl:value-of select="."/>
    </td>
</xsl:template>
</xsl:stylesheet>


XML:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="gb_overzicht.xsl"?>
<gastenboek>
    <bericht id="1" zichtbaar="no">
        <onderwerp>Test1123213123</onderwerp>
        <tekst>Dit is een probeersel</tekst>
        <naam>....</naam>
        <datum></datum>
    </bericht>
    <bericht id="2" zichtbaar="no">
        <onderwerp>Nog een test</onderwerp>
        <tekst>Dit is nog een probeersel</tekst>
        <naam>.....</naam>
        <datum>11 mei 2003</datum>
    </bericht>
    <bericht id="3" zichtbaar="no">
        <onderwerp>onderwerpje</onderwerp>
        <tekst>test</tekst>
        <naam>....</naam>
        <datum>2 mei 2003</datum>
    </bericht>
    <bericht id="4" zichtbaar="no">
        <onderwerp>er moet toch wat werken</onderwerp>
        <tekst>bla</tekst>
        <naam>...</naam>
        <datum>11 mei 2003</datum>
    </bericht>
</gastenboek>


iemand enig idee? ik staar al 2 dagen naar dit verdomde ding en wordt er gillend gek van!

  • Dark Blue
  • Registratie: Februari 2001
  • Laatst online: 16-05 14:36

Dark Blue

Compositionista!

Alpenmeisje

Je kunt het op twee manieren lezen:
1) "het commando sort mag niet op deze plek in de code gebruikt worden"
2) "het commando sort mag niet voor dit type gegevens gebruikt worden"

1) (ik heb even niet naar je code gekeken, want zoveel zal ik er niet van snappen) ... misschien plaats je de sort opdracht te laat. Dan is de hele zaak al binnengehaald en in kannen en kruiken en wil jij dat nog eens omgooien. Hierarchie dus.

2) Is het ID wel een integer, waarmee je kunt rekenen (zeg ik het nu goed?) In principe zou je moeten kunnen sorteren met letters en met cijfers, maar misschien ziet hij jouw ID-string wel als woord en niet als getal. En moet je met woorden iets van 'sorttext' ofzo gebruiken, of moet je vooraf aangeven dat jouw ID dus rekengetallen zijn.

Verder weet ik niets, maar dan ook niets niets niets van xml/xsl :+

Vraagje nog: Is line 51 ook daadwerkelijk line 51 in de bovenste code die je hier post? :)

Dit is trouwens de beschrijving van de Error:
Mixing objects created with version independent CLSIDs (ProgIDs) and with
objects created with version dependent CLSIDs (ProgIDs) is not allowed.


Dit helpt misschien ook:
http://www.google.nl/sear...x80004005)&hl=nl&ie=UTF-8
hi,


i am suppose to create an online quiz through forms and later save it into

an xml file using asp. however i got stuck when i i want to add in the

createProcessingInstruction("xml", "version='1.0'") to my codes.


the process of adding questions into the xml file works but when i tried

to append in the line 'createProcessingInstruction("xml",

"version='1.0'")', the error occurs.
Wat gebeurt er dus als je je xml versie weghaalt? :)

[ Voor 42% gewijzigd door Dark Blue op 01-04-2004 19:47 ]

heidiulrich.nl | adventura.nl : rugzakavonturen | pathwise.nl : prepping geeks to get jobs


Verwijderd

Topicstarter
wanneer ik die versie weghaal, dan veranderd de foutmelding, en geeft deze aan dat ie een version number wil hebben.. dat gaat dus niet op in dit geval..

die line51 is mij ook een beetje vaag.. die blijf ik ook krijgen, terwijl deze er niet eens is... waar ik de sort ook plaats, hij blijft doorgaan over line 51..

* gaat weer verder proberen met je tips, thnx

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

Ik heb de sort zelf nog nooit gebruikt, maar jij gebruikt m hier ook wel op een hele andere manier dan het voorbeeld op W3Schools. Misschien moet je het ook eens met een for-each proberen ipv de apply-templates?

Rustacean


  • ahriman
  • Registratie: Januari 2002
  • Laatst online: 29-03 16:03
Je moet de <xsl:sort> tag in de apply-templates tag zetten:

code:
1
2
3
<xsl:apply-templates>
  <xsl:sort select="id" />
</xsl:apply-templates>

Verwijderd

Topicstarter
ahriman schreef op 02 april 2004 @ 09:53:
Je moet de <xsl:sort> tag in de apply-templates tag zetten:

code:
1
2
3
<xsl:apply-templates>
  <xsl:sort select="id" />
</xsl:apply-templates>
oke, dat heb ik gedaan, maar dan blijf ik die foutmelding krijgen. Ben wel weer een stapje verder van dat line 51 geval, daar heb ik niet goed gekeken... het betreft de laatste regel ( response.write) van onderstaand stukje code..

ASP:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%
 'Declareer lokale variabelen.
 Dim objXML
 Dim objXSL
 'Instantieer het XMLDOM Object.
 set objXML = Server.CreateObject("Microsoft.XMLDOM")
 'Zet asynchroon bestand laden uit.
 objXML.async = false
 'Laad het XML bestand.
 objXML.load(Server.Mappath("../dbfiles/gb_overzicht.xml"))
 'Instantieer het XMLDOM Object voor de XSL stylesheet.
 set objXSL = Server.CreateObject("Microsoft.XMLDOM")
 'Zet asynchroon bestand laden uit.
 objXSL.async = false
 'Laad het XSL bestand.
 objXSL.load(Server.Mappath("../dbfiles/gb_overzicht.xsl"))
 'Gebruik de methode "transformNode" van het XMLDOM om de stylesheet
 'aan het XML document te koppelen.
 'Stuur het vervolgens naar de client.
 Response.Write(objXML.transformNode(objXSL))
%>


er gaat blijkbaar dus iets niet goed... als je alles zonder sort zou uitvoeren, dan werkt het vlekkeloos 8)7

[ Voor 12% gewijzigd door Verwijderd op 02-04-2004 10:18 ]


  • ahriman
  • Registratie: Januari 2002
  • Laatst online: 29-03 16:03
Ah, dat id is een attribuut, die benader je met het @ teken:

code:
1
2
3
<xsl:apply-templates>
  <xsl:sort select="@id" />
</xsl:apply-templates>

Verwijderd

Topicstarter
oke, weer een stukje verder... ik krijg niet die foutmelding meer, en het lijkt tot nog toe wel te werken.. alleen sort ie nu nog steeds niet zoals ie moet doen.. de laatste toevoeging ( dus met het hoogste idnummer) zou als eerste moeten worden geplaatst.. en nu staat de hoogste bovenaan..

moet ik hier met descending/ascending werken?

  • pasta
  • Registratie: September 2002
  • Laatst online: 04-04 23:18

pasta

Ondertitel

Ascending = increasing
Descending = decreasing
(volgens mij)

Signature


  • ahriman
  • Registratie: Januari 2002
  • Laatst online: 29-03 16:03
Yep, je moet het order attribuut van xsl:sort gebruiken, en dan descending (aflopend):

code:
1
2
3
<xsl:apply-templates>
  <xsl:sort select="@id" mode="descending"/>
</xsl:apply-templates>


Bekijk anders deze pdf eens:
http://www.mulberrytech.com/quickref/XSLTquickref.pdf

Hier staan alle xslt-tags beschreven...

[ Voor 34% gewijzigd door ahriman op 02-04-2004 11:14 ]


  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Ik neem aan dat je dat wel gevonden hebt?

[google=xsl sort descending] en je ziet direct de oplossing al.

edit:
shit, dat krijg je als het scherm zo lang open laat staan en dan pas op die knop drukt... LOL

[ Voor 34% gewijzigd door X-Lars op 02-04-2004 11:20 ]


Verwijderd

Topicstarter
X-Lars schreef op 02 april 2004 @ 11:19:
Ik neem aan dat je dat wel gevonden hebt?

[google=xsl sort descending] en je ziet direct de oplossing al.

edit:
shit, dat krijg je als het scherm zo lang open laat staan en dan pas op die knop drukt... LOL
ja, had het gevonden, maar het loopt nog niet zoals het zou moeten. Op dit moment sorteert ie nu namelijk niet de id's van beneden naar boven, maar hij draait alles om (datum staat nu onder Onderwerp enz...)

* ga nog even verder rotzooien
Pagina: 1