salve a tutti, volevo chiedere come è possibile effettuare una trasformazione del genere:

il file xml è qualcosa di simile (tralascio le dichiarazioni iniziali)
codice:
<home>
  <musica>
     <cubase>
        <realpiano></realpiano>
        <realguitar></realguitar>
        <ezdrummer></ezdrummer>
     </cubase>
     <audacity></audacity>
  </musica>
  <grafica>
     <blender></blender>
     <gimp></gimp>
  </grafica>
</home>
e vorrei che con xsl mi desse il seguente output
codice:
<ul>
	[*]musica
	<ul>
		[*]cubase
		<ul>
			[*]realpiano
			[*]realguitar
			[*]ezdrummer
		[/list]
		[*]audacity
	[/list]
	[*]grafica
	<ul>
		[*]blender
		[*]gimp
	[/list][/list]
ho provato in diversi modi, sia con il foreach che i template ma niente da fare; sono riuscito a scorrere tutti gli elementi di home tramite questo ciclo, ma ovviamente non riesco a racchiudere i child-node nel tag <ul> del child-parent

codice:
					<xsl:for-each select="home//*">
						<xsl:if test="count(./*) &gt; 0">
							[*]<xsl:value-of select="name()"/>
							<xsl:element name="ul"></xsl:element>
						</xsl:if>
						<xsl:if test="count(./*) = 0">
							[*]<xsl:value-of select="name()" />
						</xsl:if>
					</xsl:for-each>
il mio obbiettivo con questo ciclo era quello dio trasformare i nodi con i figli in
[*]nodo
<ul>

e i nodi senza figli in
[*]nodo

e i nodi che sono ultimi figli in
[*]nodo[/list]

spero di essere stato chiaro.