Subject: RE: [xsl] Help with tree menu From: Lucas Gonçalves Grossi <lggrossi@xxxxxxxxxx> Date: Fri, 30 Nov 2007 06:11:26 -0200 |
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<uls.length; i++){ uls[i].style.display = 'none'; } var h3s = quem.getElementsByTagName('h4') for(i=0; i<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 < alt_init){ sty.height = (alt_atu + 5) + 'px'; } if(lar_atu < lar_init){ sty.width = (lar_atu + 15) + 'px'; } if(alt_atu == 0 ){ sty.position = pos_init; } if(alt_atu >= alt_init && lar_atu >= 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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Help with tree menu, cknell | Thread | RE: [xsl] Help with tree menu, cknell |
Re: [xsl] Problem while displaying , Kavita Surana | Date | Re: [xsl] Help with staregies for o, Adam Lipscombe |
Month |