Salut,

(Désolé pour le titre, mes connaissances d'XSLT sont des plus rudimentaires, et ce que je cherche à faire correspond vaguement à un global/pattern/substitute/autre-pattern/texte-de-remplacement/ (pour ceux qui connaissent sed/vim))

Mon but est de remplacer certains tableaux dans un document par autre chose, et de laisser tout le reste inchangé. En piquant, et retouchant, des morceaux de code à droite à gauche, j'ai trouvé de quoi copier sans altérer, et de quoi reconnaitre mes tableaux. Ou presque.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!-- convert.xsl --> 
...
	<!-- ==========================[ Rules tables ]=========================== -->
	<xsl:template match="//informaltable/tgroup[@cols=2]/tbody">
		foo
	</xsl:template>
 
	<!-- ==========================[ Identity ]=============================== -->
	<xsl:template match="@*">
		<xsl:copy />
	</xsl:template>
 
	<xsl:template match="*">
		<xsl:copy>
			<xsl:apply-templates select="* | text() | @*"/>
		</xsl:copy>
	</xsl:template>
Seul problème, c'est que les
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
<informaltable frame="all">
  <tgroup cols="2">
    <tbody>
      <row>
        bar 
      </row>
    </tbody>
  </tgroup>
</informaltable>
sont transformés en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<informaltable frame="all">
  <tgroup cols="2">
    foo
  </tgroup>
</informaltable>
alors que j'aurais voulu tout dégager depuis les <informaltable/> (seulement dans ce cas de "cols=2", et de une seule balise <row/> si possible)
Je soupçonne que mes problèmes viennent que <informaltable/> est matché par la règle générique.


Il y a-t-il un moyen simple de dire "l'ensemble de la table si elle est reconnue" ?