[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Help with tree menu

Subject: RE: Help with tree menu
From: Lucas Gonçalves Grossi <lggrossi@xxxxxxxxxx>
Date: Fri, 30 Nov 2007 06:11:26 -0200
RE:  Help with tree menu
I can't do like this, because this code that you put for me can't stay inside
a html tag.
My output is a html. This <h4> is a tag from html, that i use to create the
button from html. I'll put the all the code here. This script is to create the
menu. Then, in the body of the html, I use the xsl language.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="UTF-8"/>

<xsl:template match="/">
	<html><head></head>
	<script>
	function ativaSubMenus(quem){
	    var uls = quem.getElementsByTagName('ul')
	    for(var i=0; i&lt;uls.length; i++){
	        uls[i].style.display = 'none';
	    }

	    var h3s = quem.getElementsByTagName('h4')
	    for(i=0; i&lt;h3s.length; i++){
	        h3s[i].style.MozUserSelect = 'none';
	        h3s[i].unselectable = 'on';
	        h3s[i].style.cursor = 'pointer';
	        h3s[i].onclick = function(e){
	            var source = getSource(e);
	            var ulatual = source.parentNode.getElementsByTagName('ul')[0];
	            if(ulatual.style.display=='none'){
	                ulatual.style.display = 'block';
					//aparece(ulatual,'high');
	            }else{
	                ulatual.style.display = 'none';
	            }
	        }
	    }
	}
	/*
	function aparece(quem,speed){
	    var sty = quem.style;
	    sty.visibility = 'hidden'
	    var pos_init = sty.position;
	    sty.position = 'absolute';
	    if(sty.display=='none'){ sty.display = 'block' }
	    var alt_init = parseInt(quem.offsetHeight);
	    var lar_init = parseInt(quem.offsetWidth);
	    var over_ini = sty.overflow;
	    sty.overflow = 'hidden';
	    sty.visibility = 'visible';
	    sty.height = '0px';
	    sty.width = '0px';

	    if(typeof(quem.timeAparece)!='undefined'){
	        clearInterval(quem.timeAparece);
	    }
	    quem.timeAparece=null;

	    var loop = function(){
	        var alt_atu = parseInt(sty.height);
	        var lar_atu = parseInt(sty.width);
	        if(alt_atu &lt; alt_init){
	            sty.height = (alt_atu + 5) + 'px';
	        }
	        if(lar_atu &lt; lar_init){
	            sty.width = (lar_atu + 15) + 'px';
	        }
	        if(alt_atu == 0 ){
	            sty.position = pos_init;
	        }
	        if(alt_atu &gt;= alt_init &amp;&amp; lar_atu &gt;= lar_init){
	            clearInterval(quem.timeAparece);
	            sty.height = (alt_init) + 'px';
	            sty.width = (lar_init) + 'px';
	            sty.overflow = over_ini;
	        }
	    }
	    switch(speed){
	        case 'high': speed = 1; break;
	        case 'normal': speed = 20; break;
	        case 'slow': speed = 40; break;
	        default: speed = 10;
	    }
	    quem.timeAparece = setInterval(loop,speed);
	}
	*/
	function bodyOnReady(func){
	    if(!(document.body==null)){
	        func();
	    }else{
	        var func_rep = func;
	        setTimeout(function(){ bodyOnReady(func_rep) },100);
	    }
	}

	function getSource(evt){
	    if(typeof(evt)=='undefined') var evt=window.event
	    source = evt.target?evt.target:evt.srcElement
	    if(source.nodeType == 3)source = source.parentNode
	    return source;
	}


	bodyOnReady(function(){ ativaSubMenus( document.getElementById('menuzao') )
})
	</script>
	<body>
	<ul id='menuzao'>
	    <li><h4><xsl:value-of select="gqmroot/@titleRoot"/></h4>
	        <ul>
	            <li><xsl:for-each select="gqmroot/goal">
					<h4><xsl:value-of select="@titleGoal"/></h4>
					<ul>
						<li><xsl:for-each select="question">
								<h4><xsl:value-of select="@titleQuestion"/></h4>
							<ul>
								<li><xsl:for-each select="metric">
									<h4>
										<xsl:value-of select="@titleMetric"/>
									</h4>
									<h4>
										<xsl:value-of select="unparsed-text(@ChartLink)"
disable-output-escaping="yes"/>
									</h4>
									</xsl:for-each>
								</li>
							</ul>
							</xsl:for-each>
						</li>
					</ul>
					</xsl:for-each>
		    	</li>
	        </ul>
	    </li>
	</ul>

	</body></html>
</xsl:template>

</xsl:stylesheet>

Thanks,
LUCAS



> I don't have a workstation that is set up with my usual tools today, so I
haven't been able to test this, but try out this stylesheet and let us know if
it does what you want, and if not, explain further.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> 	<xsl:template match="/">
> 		<xsl:apply-templates/>
> 	</xsl:template>
>
> 	<xsl:template match="gqmroot">
> 		<xsl:apply-templates/>
> 	</xsl:template>
>
> 	<xsl:template match="goal">
> 		<h4><xsl:value-of select="@titleGoal"/></h4>
> 			<ul>
> 				<xsl:apply-templates/>
> 			</ul>
> 	</xsl:template>
>
> 	<xsl:template match="question">
> 		<li>
> 			<h4><xsl:value-of select="@titleQuestion"/></h4>
> 			<ul>
> 				<xsl:apply-templates />
> 			</ul>
> 		</li>
> 	</xsl:template>
>
> 	<xsl:template match="metric">
>            <li>
> 		<h4><xsl:value-of select="@titleMetric"/></h4>
> 		 <h4><xsl:value-of select="unparsed-text(@ChartLink)"
disable-output-escaping="yes"/></h4>
>                 </h4>
>            </li>
> 	</xsl:template>
>
> </xsl:stylesheet>
> --
> Charles Knell
> cknell@xxxxxxxxxx - email
>
>
>
> -----Original Message-----
> From:     Lucas Gongalves Grossi <lggrossi@xxxxxxxxxx>
> Sent:     Thu, 29 Nov 2007 17:41:59 -0200
> To:       "xsl-list" <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Subject:   Help with tree menu
>
> > Hello everybody,
> >
> > I'm having a problem in my XSL code. My XSL file get an xml as input and
derives an html. In the output html I'm trying to do a tree menu, and the <h4>
html tag is the initializator of the button in menu, i.e. when I click in this
button, the menu open, like this "+" of xml.
> > The problem is that, as the h4 is after the for-each, it's appearing just
in the first value. So, the menu is ok (open) just for the first value. Ex:
> > goal
> > +question1
> > +question2
> > If I click on question 1, open or close his submenu. If i click on
question 2, should appear his submenu, but it open or close the menu of
question 1 too.
> > Can anybody help me? Thanks a lot.
> >
> > <xsl:for-each select="gqmroot/goal">
> > <h4><xsl:value-of select="@titleGoal"/></h4>
> > <ul>
> > <li><xsl:for-each select="question">
> > <h4><xsl:value-of select="@titleQuestion"/></h4>
> > <ul>
> > <li><xsl:for-each select="metric">
> > <h4><xsl:value-of select="@titleMetric"/></h4>
> > <h4>
> > <xsl:value-of select="unparsed-text(@ChartLink)"
disable-output-escaping="yes"/>
> > </h4>
> > </xsl:for-each>
> > </li>
> > </ul>
> > </xsl:for-each>
> > </li>
> > </ul>
> > </xsl:for-each>
> >
>
> My xml file:
> <?xml version="1.0" encoding="UTF-8"?>
>
> <?xml-stylesheet type="text/xsl" href="F-GESGQM.xsl"?>
> <!-- New document created at Thu Oct 18 08:53:18 CEST 2007 -->
>
> <gqmroot titleRoot="F-GES GQM">
> <goal titleGoal="G.1. Aumento della qualit` esterna">
> <question titleQuestion="Q.1.1. Quanti bug trova l?utente? Quanti sono ad
alta priorit`?">
> <metric
> titleMetric="M.1.1.1. Numero di bug riportati nell'intervallo di tempo
considerato, divisi per centro di costo e per prodotto."
> ChartLink="gesGQMReport_M111.html">
> </metric>
> <metric
> titleMetric="M.1.1.2. Numero di bug ad alta priorit` riportati dall?utente
al mese, divisi per centro di costo e per prodotto."
> ChartLink="gesGQMReport_M112.html">
> </metric></question>
> <question titleQuestion="Q.1.2. Quanto h soddisfatto l?utente della nuova
release?">
> <metric
> titleMetric="M.1.2.1 Numero di richieste di cambiamento del sistema
nell'intervallo di tempo per quella release"
> ChartLink="gesGQMReport_M121.html">
> </metric>
> <metric
> titleMetric="M.1.2.2. Numero di bug riportati dall'utente nell'intervallo di
tempo facenti riferimento a quella release"
> ChartLink="">
> </metric>
> </question>
> </goal>
> <goal titleGoal="G.2 Aumento della qualit` interna">
> <question titleQuestion="Q.2.1. Qual h la probabilit` che una modifica
introduca un nuovo bug?">
> <metric
> titleMetric="M.2.1.1. Rapporto tra numero di test che falliscono ed il
numero totale di test durante la fase di integrazione notturna"
> ChartLink="">
> </metric></question>
> <question titleQuestion="Q.2.2. Quanto h espressivo il codice?">
> <metric titleMetric="M.2.2.1. Complessit` ciclomatica"
> ChartLink="">
> </metric>
> <metric titleMetric="M.2.2.2. Weighted Methods per Class"
> ChartLink="">
> </metric>
> </question>
> </goal>
> </gqmroot>
>
>
> Thanks,
> LUCAS

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.