Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Graboid
    Registrato dal
    Oct 2004
    Messaggi
    619

    [XSL] Paginazione (era: Paginazione con xsl)

    Ciao,
    ho un problema a generare la paginazione xsl per una pagina di news.
    L'xml a cui viene associato l'xsl lo ricavo da un db mysql ed e' di questo tipo:

    <rows>

    <row>
    <col name="id"><![CDATA[4]]></col>
    <col name="fk_lang"><![CDATA[1]]></col>
    <col name="fk_page"><![CDATA[53]]></col>
    <col name="fk_user"><![CDATA[0]]></col>
    <col name="image"><![CDATA[0]]></col>
    <col name="title"><![CDATA[jhjh]]></col> <col name="text"><![CDATA[jjhjhjh]]></col>
    <colname="date"><![CDATA[2005-11-11]]></col>
    <col name="online"><![CDATA[]]></col>
    </row>
    <row>
    <col name="id"><![CDATA[1]]></col>
    <col name="fk_lang"><![CDATA[1]]></col>
    <col name="fk_page"><![CDATA[53]]></col>
    <col name="fk_user"><![CDATA[1]]></col>
    <col name="image"><![CDATA[0]]></col>
    <col name="title"><![CDATA[News in ITALIANO]]></col>
    <col name="text"><![CDATA[SPACCO!!!!]]></col>
    <col name="date"><![CDATA[2005-11-09]]></col>
    <col name="online"><![CDATA[0]]></col>
    </row>
    </rows>

    Riesco a ciclare i nodi con un for-each ma non capisco come fare la paginazione.

    Le trasformazioni le faccio fare lato server da php.
    Mi conviene fare gia' qualcosa in php e poi passarlo all'xslt come parametro?
    Devo fare in modo che il php passi solo la perte di xml che mi interessa (per esempio le prime 10 news la prima volta che la pagina viene caricata)?

    Avrei bisogno di chiarirmi le idee, mi sembra di non avere abbastanza strumenti in xslt per gestire la paginazione: sento la mancanza di un ciclo for per esempio.

    Se qualcuno sa aiutarmi o puo' indicarmi un tutorial...

    Grazie

  2. #2
    Avrei un problema simile, solo che invece del php io sto lavorando in asp.

    Premessa: ho cominciato a "pacioccare" con l'xml da neanche una settimana, quindi se chiedero' cose ovvie perdonatemi (o meglio, indirizzatemi correttamente )

    Il mio flusso xml non lo ricavo direttamente da un mio DB, ma lo ricevo da un server remoto tramite ServerXMLHttp.
    Riesco a renderlo in forma decente come pagina HTML, ma- dato che ci sono molti elementi - questa è molto lunga.
    Non avendo modo di sapere in anticipo quanto è lungo il flusso xml, credo che per la paginazione dell'html che viene fuori ci si debba basare soltanto sul foglio di formattazione xsl, giusto? Oppure dovrei fare qualcosa già nella pagina asp precedente con cui lo carico??

    Non so bene qual è la strada giusta da seguire, e non ho trovato granché in giro (su questo problema specifico della paginazione). Mi potete dare qualche consiglio?
    grazie mille

  3. #3
    Utente di HTML.it L'avatar di Polley
    Registrato dal
    Jan 2005
    Messaggi
    696
    ci sono due possibilità, o spezzate l'xml lato server e passate gli elementi suddivisi per l'impaginazione o lasciare fare all'xsl però dovete passargli almeno un parametro cioè il numero della pagina

    se gli elementi non sono molti come nel vostro caso opterei per la seconda scelta, non ricordo l'espressione xpath nel ciclo for-each adesso vedo e poi ve la posto, sistemate lo script php/asp per passar eil paramentro e poi risolviamo il resto

  4. #4
    Grazie per l'indicazione. Intendi cosi', allo stesso modo di un asp normale?

    MyStyle.load(Server.MapPath("formatta.xsl?pag=1"))

    E adesso pero' come gestisco questo valore dentro all'xsl?

  5. #5
    Utente di HTML.it L'avatar di Polley
    Registrato dal
    Jan 2005
    Messaggi
    696
    no, devi passare un parametro inserendo dei parametri tramite asp
    io uso asp.net che usa xsltargumentlist

    poi devi scrivere nel tuo xsl i parametri prima dei template
    <xslaram name="NomeParametro" />

    e lo lasci vuoto, poi sarà asp che inserirà il parametro però non ricordo come si faccia, prova a cercare nel form di asp

  6. #6
    no, devi passare un parametro inserendo dei parametri tramite asp
    io uso asp.net che usa xsltargumentlist
    Perdonami ma mi sono persa. Inserire dei parametri tramite asp non vuol dire passarglieli tramite querystring o come campo hidden di un form? Altrimenti come intendi tu?
    p.s. uso asp 3

  7. #7
    Non ho ancora trovato un modo per fare 'sta benedetta paginazione.

    Ma per favore sapete almeno dirmi se con Classic ASP è fattibile, oppure se devo per forza usare ASP.NET? Vorrei capire solo questo
    (il problema è che ASP normale lo conosco bene, mentre l'altro no, e le scadenze del Cliente non mi consentono di mettermi li' a studiarlo come vorrei)

  8. #8
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    con classic asp è fattibile ma è un pò complessa...

    i parametri passati al file xsl devono essere inviati dalla pagina asp al momento del caricamento del file

    codice:
    Set xsl = CreateObject("Msxml2.FreeThreadedDOMDocument.3.0")  
    xsl.async = False
    xsl.resolveExternals = true
    xsl.load(Server.MapPath("tuo_file.xsl"))
    Set xslTemplate = CreateObject("Msxml2.XSLTemplate.3.0") 
    xslTemplate.stylesheet=xsl
    set proc=xslTemplate.createProcessor
    proc.input=xmlDoc 
    
    proc.addParameter "pageNumber", ""&request("pag")&""
    proc.addParameter "recordsPerPage", "5"
    
    
    
    'dove pageNumber è il numero della pagina da visualizzare (default = 0)
    'e dove recordsPerPage è il numero dei record per pagina..
    
    
    ' stampando il risultato del file xsl con
    
    
    	proc.transform 
    	response.write proc.output
    ovviamente xmlDoc è l'oggetto dove è memorizzato il vostro documento xml...
    
    .......................................................
    
    nel file xsl dovete usare prima del template:
    
    <xsl:param name="recordsPerPage" select="5"/>
    <xsl:param name="pageNumber" />
    
    
    dentro il vostro ciclo di scorrimento ad esempio
    
    <xsl:for select="vostro_path">
    
    <xsl:if test="position() &gt;= $recordsPerPage * number($pageNumber) and position() &lt;= number($recordsPerPage * number($pageNumber) + $recordsPerPage)">
    
    <xsl:value-of select="vostro_nodo" />
    
    </xsl:if>
    <xsl:for>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.