Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 15:11 Der er 11 kommentarer og
1 løsning

Paging hvordan?

Hvordan kan lave paging i XSLT?
Jeg har en xml-fil, der er en arktikel, hvor jeg ønsker at kunne page til næste side, så at jeg ikke skal scrolle i browseren.

Nogen der kan hjælpe med kode der?
Avatar billede nute Nybegynder
27. januar 2004 - 16:21 #1
- er det snak om *ren* xslt eller bruger du nogen form for script ?
- hvordan ser din XML struktur ud ?

/nute
Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 16:29 #2
Jeg bruger en ren xslt uden scripts
Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 16:31 #3
<indhold>
<afsnit>
  .... m.m.
</afsnit>
</indhold>
Avatar billede nute Nybegynder
27. januar 2004 - 16:32 #4
og du vil have paging på dine 'afsnit' noder ? regner med at din struktur er:

<indhold>
<afsnit>
  .... m.m.
</afsnit>
<afsnit>
  .... m.m.
</afsnit>
<afsnit>
  .... m.m.
</afsnit>
<afsnit>
  .... m.m.
</afsnit>
</indhold>

?
Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 16:35 #5
ja præcis.. ;)
Avatar billede nute Nybegynder
27. januar 2004 - 17:38 #6
du er nok nødt til at benytte lidt script (fx. javascript). såvidt mig bekendt, så er der ingen mulighed for at hive fat i querystringen for at få informationer om fx. hvilken siden du befinder dig på. jeg ville have benyttet en kvasi-paging teknik, der blot skifter mellem synlige og usynlige <div> tags ... noget ála dette:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
    <xsl:variable name="totalNumberOfPages">
        <xsl:value-of select="count( /indhold/afsnit )"/>
    </xsl:variable>
    <xsl:template match="/">
        <html>
            <head>
                <title/>
                <xsl:call-template name="buildJavaScript"/>
            </head>
            <body>
                <div id="currentPage" style="width:100px;height:100px;border:1px solid black;"/>
                <xsl:apply-templates/>
                <xsl:call-template name="buildPaging">
                    <xsl:with-param name="currentPage">1</xsl:with-param>
                </xsl:call-template>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="afsnit">
        <xsl:variable name="currentPage"/>
        <div id="page{position()}" style="display:none;">
            <xsl:value-of select="."/>
        </div>
    </xsl:template>
    <xsl:template name="buildPaging">
        <xsl:param name="currentPage"/>
        <xsl:if test="number( $currentPage ) &lt;= $totalNumberOfPages">
            <a>
                <xsl:attribute name="href">java script:void(0)</xsl:attribute>
                <xsl:attribute name="onclick">showPage( <xsl:value-of select="$currentPage"/> );</xsl:attribute>
                <xsl:value-of select="$currentPage"/>
            </a>
            <xsl:if test="number( $currentPage ) &lt; $totalNumberOfPages">
                <xsl:text> | </xsl:text>
                <xsl:call-template name="buildPaging">
                    <xsl:with-param name="currentPage">
                        <xsl:value-of select="number( $currentPage ) + 1"/>
                    </xsl:with-param>
                </xsl:call-template>
            </xsl:if>
        </xsl:if>
    </xsl:template>
    <xsl:template name="buildJavaScript">
        <script type="text/javascript" language="javascript">
            <xsl:comment><![CDATA[
    window.onload = init;
    var objCurrentPage = null;
   
    function init()
    {
        objCurrentPage = document.getElementById( "currentPage" );
        showPage( 1 );
    }
   
    function showPage( intPageNumber )
    {
        var objNewPage = document.getElementById( "page" + intPageNumber );
        objCurrentPage.innerHTML = objNewPage.innerHTML;
       
    }
    ]]></xsl:comment>
        </script>
    </xsl:template>
</xsl:stylesheet>

/nute
Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 18:01 #7
Øh, det forstår jeg ikke så meget, men det virker ikke, som jeg mener. Man kan da ikke pladre?!

/dkt
Avatar billede javanewbie11 Nybegynder
27. januar 2004 - 18:03 #8
Glem det det virker, mange tak. Vil du ikke have de 50 points?
Avatar billede nute Nybegynder
27. januar 2004 - 19:31 #9
jo, det vil jeg da gerne :-)

takker
Avatar billede nute Nybegynder
15. marts 2004 - 10:00 #10
får du lukket dette spm ?
Avatar billede javanewbie11 Nybegynder
07. april 2004 - 12:46 #11
Tak for hjælpen!
Avatar billede nute Nybegynder
07. april 2004 - 12:49 #12
tak for points
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester