Bonjour tous le monde, j'ai un soucis avec xslt/xpath, je ne connais pas beaucoup xslt et xpath.
Voici le probleme que je rencontre que je vais illustrer par un petit exemple .
voici mon xml exemple:
Je vais parcourir chacun de ces noeuds et tester si le noeud est le dernier des fils du noeud mfrac( cd au-dessus en rouge). Mais mon teste ne marche pas correctement il detecte prend les 2 noeud fils de mfrac alors que je veux que mon teste ne detecte que le dernier.
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
18
19
20
21
22
23
24
25
26 <math> <mrow> <mi>un</mi> <mo>=</mo> <mfrac> <mrow> <mo>(</mo> <mrow> <mi>deux</mi> <mo>+</mo> <mi>trois</mi> </mrow> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <mrow> <mi>trois</mi> <mo>+</mo> <mi>trois</mi> </mrow> <mo>)</mo> </mrow> </mfrac> </mrow> </math>
J'ai essayer 3 testes mais aucun ne marche correctement. HELP ME
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
18
19
20
21
22
23
24
25
26
27 <xsl:template match="/"> <xsl:call-template name="mathml"/> </xsl:template> <xsl:template name ="mathml"> <xsl:for-each select="/math/descendant::*"> <xsl:if test="node()/descendant::*=//*[position()=2 and current()/parent::mfrac]/descendant::*"> <xsl:text>9/</xsl:text> </xsl:if> <xsl:if test="boolean(self::node()[position()=last()] and name(..)='mfrac')"> <xsl:text>1/</xsl:text> </xsl:if> <xsl:if test="name(..)='mfrac' and position()=last()"> <xsl:text>/</xsl:text> </xsl:if> <xsl:value-of select="."/> </xsl:for-each> </xsl:template>
Partager