Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    usare javascript con foglio di stile xsl

    Qualcuno sa spiegarmi in generale come si fa ad inserire un javascript all'interno di un foglio di stile xsl?
    In particolare le funzioni javascript vanno inserite all'interno della sezione head del codice html da generare oppure bisogna usare il tag <script> come comando xsl, prima dell'inizio del codice html?
    Se lo metto fuori dall'head, mi segnala come errore che non riconosce xsl come namespace (ovvero se io ho scritto: <xsl:script lang="Javascript">; in alcuni siti ho trovato una dichiarazione aggiuntiva di namespace:

    xmlns:lxslt="http://xml.apache.org/xslt"

    se la metto mi riconosce il name space, ma le funzioni non funzionano!

    Ma andiamo con ordine; questo è piu' o meno quello da cui sono partito; le funzioni javascript le ho copiate da un file html creato con dreamweaver:

    <?xml version="1.0"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xslutput method="html" />

    <xsl:template match="/">

    <head>
    <title>saper leggere - <xsl:value-of select="edizione/datibibliog/autore" /> - <xsl:value-of select="edizione/datibibliog/titolo" /></title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></meta>

    <script language="JavaScript">
    <!--
    function MM_reloadPage(init) { //reloads the window if Nav4 resized
    if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
    else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);


    function MM_findObj(n, d) { //v4.0
    var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
    if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
    for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
    if(!x && document.getElementById) x=document.getElementById(n); return x;
    }

    function MM_showHideLayers() { //v3.0
    var i,p,v,obj,args=MM_showHideLayers.arguments;
    for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible'v='hide')?'hidden':v; }
    obj.visibility=v; }
    }
    //-->
    </script>

    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#CC0000">
    ecc...

    Ho poi tolto i tag di commento <!-- perche' impedivano la lettura delle funzioni; quindi ho dovuto sostituire i caratteri & e < con le rispettive character entities; fatto questo la pagina poteva essere caricata dal browser, ma quando cliccavo nel posto dove richiamavo la funzione, questa non si attivava e mi veniva segnalato un errore nella status bar.
    Medesimi risultati dichiarando gli script fuori dall'html.
    Forse c'e' un problema nella maniera che uso per richiamare le funzioni: ho provato due modi;
    il primo l'ho "improvvisato" io:

    <b onClick="MM_showHideLayers('generate-id(.)','','hidden')"> [<xsl:value-of select="./numnota" />][/b]

    dovrebbe attivare la funzione su un layer (tag div) a cui ho assegnato un nome con la funzione generate-id, cosi':
    <div id="generate-id(.)">

    L'altra modalità di richiamo, che ho provato su un'altra funzione è:
    <a href="#" onclick="show()">
    <xsl:attribute name="onclick">show('testo')</xsl:attribute>[ testo ]</a>

    Niente neanche cosi'.

    In sostanza quello che vorrei fare è far comparire e sparire dei layer div quando clicco in certe parti (testuali) della mia pagina; dubito che questo si possa fare senza javascript; se qualcuno ha suggerimenti su come farlo con o senza js, gli saro' grato per l'eternita'

    Stefano

  2. #2
    per gli script il modo migliore è usare un file esterno, per evitare problemi.

    www.minifloppy.it - Dove ASP, XML, XSLT si incontrano...

    Io arrivo sempre tardi in ufficio, ma cerco di rimediare andando via presto

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 © 2024 vBulletin Solutions, Inc. All rights reserved.