c'est bien la le probleme, j'ai bien testé count() mais je n'y arrive pas
mon fichier xml est de ce type, c'est en fait le listing d'une partie de mon disque dur :
Code :
- <?xml version="1.0" encoding="ISO-8859-1" ?>
- <!-- Created with Catalogue version 4.2.3 [Soft Experience] -->
- <involume name="DATA2" filesystem="NTFS" dategeneration = "30 Avril 2006 16:05">
- <dir>
- <id>1</id><name>dir</name><fullname>l:\Temp\Temp\test\dir</fullname>
- <dir>
- <id>2</id><name>dir1</name><fullname>l:\Temp\Temp\test\dir\dir1</fullname>
- <file>
- <id>3</id>
- <extension>xml</extension>
- <name>Catalogue.xml</name>
- <fullname>l:\Temp\Temp\test\dir\dir1\Catalogue.xml</fullname>
- <shortname>CATALO~1.XML</shortname>
- </file>
- </dir>
- <dir>
- <id>4</id><name>dir2</name><fullname>l:\Temp\Temp\test\dir\dir2</fullname>
- <dir>
- <id>5</id><name>dir21</name><fullname>l:\Temp\Temp\test\dir\dir2\dir21</fullname>
- <file>
- <id>6</id>
- <extension>xsl</extension>
- <name>liste imbriquée.xsl</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir21\liste%20imbriquée.xsl</fullname>
- <shortname>LISTEI~1.XSL</shortname>
- </file>
- <file>
- <id>7</id>
- <extension>xsl</extension>
- <name>liste simple.xsl</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir21\liste%20simple.xsl</fullname>
- <shortname>LISTES~1.XSL</shortname>
- </file>
- </dir>
- <dir>
- <id>8</id><name>dir22</name><fullname>l:\Temp\Temp\test\dir\dir2\dir22</fullname>
- <file>
- <id>9</id>
- <extension>htm</extension>
- <name>accueil.htm</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir22\accueil.htm</fullname>
- <shortname>accueil.htm</shortname>
- <html><title>Document sans nom</title></html>
- </file>
- <file>
- <id>10</id>
- <extension>htm</extension>
- <name>index.htm</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir22\index.htm</fullname>
- <shortname>index.htm</shortname>
- <html><title>Document sans nom</title></html>
- </file>
- <file>
- <id>11</id>
- <extension>htm</extension>
- <name>menu.htm</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir22\menu.htm</fullname>
- <shortname>menu.htm</shortname>
- <html><title>Test de menu dynamique</title></html>
- </file>
- <file>
- <id>12</id>
- <extension>htm</extension>
- <name>titre.htm</name>
- <fullname>l:\Temp\Temp\test\dir\dir2\dir22\titre.htm</fullname>
- <shortname>titre.htm</shortname>
- <html><title>Document sans nom</title></html>
- </file>
- </dir>
- </dir>
- <dir>
- <id>13</id><name>dir3</name><fullname>l:\Temp\Temp\test\dir\dir3</fullname>
- <file>
- <id>14</id>
- <extension>class</extension>
- <name>Outline.class</name>
- <fullname>l:\Temp\Temp\test\dir\dir3\Outline.class</fullname>
- <shortname>OUTLIN~1.CLA</shortname>
- </file>
- </dir>
- </dir>
- </involume>
|
pour l'instant mon xsl :
Code :
- <?xml version="1.0"?>
- <xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:output method="xml" indent="yes" omit-xml-declaration ="yes" encoding="ISO-8859-1"/>
- <xsl:template name="DonneDernier">
- <xsl:param name="str" />
- <xsl:param name="current" select="0" />
- <xsl:choose>
- <xsl:when test="contains($str, '\')">
- <xsl:call-template name="DonneDernier">
- <xsl:with-param name="str" select="substring-after($str, '\')" />
- <xsl:with-param name="current" select="$current + 1" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise><xsl:value-of select="$str" /></xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="tRec">
- <xsl:param name="x"/>
- <xsl:if test="x < 10">
- <xsl:call-template name="tRec">
- <xsl:with-param name="x" select="$x + 1"/>
- </xsl:call-template>
- </xsl:if>
- <xsl:if test="x >= 10"><xsl:value-of select="$x"/></xsl:if>
- </xsl:template>
- <xsl:template match="/">
- <HTML><HEAD> <TITLE>Liste</TITLE>
- <LINK REL="stylesheet" TYPE="text/css" HREF="list.css" /></HEAD>
- <BODY BACKGROUND="../fond_07.gif" BGCOLOR="#FFFFFF" TEXT="#FFB509" LINK="#FFFFFF" VLINK="#00FFFF" ALINK="#FFFFFF" >
- <applet code="Outline" width="250" height="700">Menu :<BR/>
- <UL><xsl:apply-templates select="involume/dir" /></UL>
- </applet></BODY></HTML>
- </xsl:template>
- <xsl:template match="dir">
- <xsl:variable name="node">
- <xsl:call-template name="DonneDernier">
- <xsl:with-param name="str" select="fullname" />
- </xsl:call-template>
- </xsl:variable>
- <LI><xsl:value-of select="$node"/></LI>
- <UL><!-- <xsl:value-of select="count(following-sibling::file)" /> -->
- <xsl:for-each select="file">
- <xsl:value-of select="count(following-sibling::file)+1" />
- <xsl:variable name="nom">
- <xsl:call-template name="DonneDernier">
- <xsl:with-param name="str" select="fullname" />
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="extension[.='sxw'] or extension[.='sdw'] or extension[.='odt'] or extension[.='sdw'] or extension[.='pdf'] or extension[.='jpg'] or extension[.='png'] or extension[.='SLDPRT'] or extension[.='SLDASM'] or extension[.='doc'] or extension[.='txt'] or extension[.='sdc']" >
- <LI><a href="file:///{translate(fullname,'\','/')}" target="main"><xsl:value-of select="$nom"/></a></LI>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="dir"><xsl:apply-templates select="dir"/></xsl:if>
- </UL>
- </xsl:template>
- </xsl:stylesheet>
|
me donne le html suivant :
Code :
- <HTML><HEAD>
- <TITLE>Liste</TITLE>
- <LINK REL="stylesheet" TYPE="text/css" HREF="list.css" /></HEAD>
- <BODY BACKGROUND="../fond_07.gif" BGCOLOR="#FFFFFF" TEXT="#FFB509" LINK="#FFFFFF" VLINK="#00FFFF" ALINK="#FFFFFF">
- <applet code="Outline" width="250" height="700">Menu :<BR />
- <UL><LI>dir</LI>
- <UL>
- <LI>dir1</LI>
- <UL>1</UL>
- <LI>dir2</LI>
- <UL>
- <LI>dir21</LI>
- <UL>21</UL>
- <LI>dir22</LI>
- <UL>4321</UL>
- </UL>
- <LI>dir3</LI>
- <UL>1</UL>
- </UL>
- </UL>
- </applet></BODY></HTML>
|
fichier qui me sert à créer automatiquement un menu avec des lien vers les fichiers de mon disque dur, ça marche bien sauf pour les répertoires vides (ou qui ne contiennent pas de fichiers de type bureautique, en gros), il faut donc que j'arrive a détecter le nombre de passage dans la partie du xsl suivante :
<
Code :
- xsl:if test="extension[.='sxw'] or extension[.='sdw'] or extension[.='odt'] or extension[.='sdw'] or extension[.='pdf'] or extension[.='jpg'] ... " >
- <LI><a href="file:///{translate(fullname,'\','/')}" target="main"><xsl:value-of select="$nom"/></a></LI>
- </xsl:if>
|
pour l'instant je n'y arrive pas
Message édité par amiga56 le 30-04-2006 à 16:23:09