webForumDet fria alternativet

Sidbrytning i XML/XSLT

4 svar · 441 visningar · startad av Darren

DarrenMedlem sedan dec. 2002789 inlägg
#1
<xsl:for-each select="BLA/BLABLA">
...
</xsl:for-each>

Med koden ovanför kan man få ut alla poster som finns i en XML fil.

Hur gör man om man t ex vill visa 20 poster åt gången? Hur skapar man en länk som läser in nästa 20 poster? Går det att göra utan att använda någon scriptspråk?

jarvkloMedlem sedan juli 20013 378 inlägg
#2

Det finns några mekanismer...

Här är några länkar till artiklar som behandlar varianter av detta problem: http://www.topxml.com/code/?p=3&id=v20020415233122&ms=40&l=xsl&sw=lang och
http://www.topxml.com/code/?p=3&id=v20010305005137&ms=100&l=xsl&sw=lang

De bygger i korthet på att man hittar det första i gruppen man vill ha ut med position() mod x och sedan traverserar following-sibling::-axeln efter det antal noder man vill åt.

Ur dessa borde du (med lite kompletterande besök i XSLT-specifikationen och kliande i huvudet) kunna få fram det du vill.

Rekommenderar annars *varmt* boken http://www.readit.se/titleinfo.asp?isbn=1861005067 - den har varit mig oumbärlig både som idékälla och referensverk i och om XSLT...

DarrenMedlem sedan dec. 2002789 inlägg
#3

Får nog ta en titt på boken du rekommenderar. Den kommer att behövas. :)

Tack.

DarrenMedlem sedan dec. 2002789 inlägg
#4

Har hittat en tutorial som visar hur man får sydbrytning i en XML fil. Tyvärr så fungerar den bara i Internet Explorer.

http://www.bayes.co.uk/xml/tutorial/paging/slider.xml

DarrenMedlem sedan dec. 2002789 inlägg
#5

Citerar här Michael Kay, författare av XSLT 2nd Edition Programmer´s Reference boken...

The basic techniques you need to use here are:

(a) call the stylesheet with a global parameter that gives the number of
the first record you want to display. You might as well make the number
of records a parameter too. You can declare global parameters using
<xsl:param/>, and set their values (in the Microsoft API) using the
addParameter method.

(b) in the stylesheet, process selected records using
select="/*/products[position() >= $start and position() <
($start + $length)]"
where $start and $length are the two parameters mentioned

(c) generate hyperlinks so that the page contains "forwards" and
"backwards" buttons; the hyperlinks should activate a JavaScript method
that invokes a new transformation, supplying appropriate values for the
two parameters.

Punkt a och b förstår jag men hur i hela friden skall jag få JavaScriptet att skicka parametern till stylesheet filen?

Har förgäves sökt på nätet efter något sådant men inte hittat något...

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)