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:

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>
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
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>
J'ai essayer 3 testes mais aucun ne marche correctement. HELP ME