[XPATH] Problème récupération élément imbriqué.
Bonjour à tous,
Voilà je souhaite simplifier un fichier xml à l'aide de XSLT. Jusque là tout va bien seulement j'ai un soucis pour récupérer un élément imbriqué, je m'explique :
J'ai un code xml du style :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <p rsidR="00EA21B1" rsidRPr="00883B7C" rsidRDefault="00EA21B1" rsidP="00883B7C">
<pPr>
<pStyle val="TitreEtude"/>
</pPr>
<r rsidRPr="00883B7C">
<rPr>
<lang w:val="en-GB"/>
</rPr>
<t>IV. Smoothing effect of PULPACTYL</t>
</r>
<r w:rsidRPr="00883B7C">
<rPr>
<rStyle w:val="Exposant"/>
</rPr>
<t>®</t>
</r>
</p> |
Et un code XSLT du style :
Code:
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 28 29 30 31 32 33 34 35 36 37 38 39
| <xsl:template match="document/body">
<body>
<!-- Pour chaque paragraphe trouvé -->
<xsl:for-each select="p">
<xsl:choose>
<!-- Vérifie si la balise existe -->
<xsl:when test="pPr/pStyle">
<!-- Se positionne à l'endroit souhaité dans l'arbre actuel -->
<xsl:apply-templates select="pPr/pStyle" />
</xsl:when>
<!-- Si la balise n'est pas trouvé -->
<xsl:otherwise>
<!-- Création d'un élément avec comme nom le style par défaut -->
<Style_Defaut>
<!-- Se positionne sur la balise contenant le texte souhaité -->
<xsl:apply-templates select="r/t" />
</Style_Defaut>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</body>
</xsl:template>
<xsl:template match="pPr/pStyle">
<!-- Création d'un élément avec comme nom le style utilisé -->
<xsl:element name="{@val}">
<xsl:choose>
<xsl:when test="r/rPr/rStyle">
<xsl:element name="{@val}">
<!-- Se positionne sur la balise contenant le texte souhaité -->
<xsl:apply-templates select="../t" />
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="../../r/t" />
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:template> |
En fait c'est la partie
Code:
1 2 3 4
| <rPr>
<rStyle w:val="Exposant"/>
</rPr>
<t>®</t> |
de mon code xml qui me pose problème.
En effet je souhaiterai pouvoir construire un fichier du type :
Code:
1 2 3
| <TitreEtude>
IV. Smoothing effect of PULPACTYL<Exposant>®</Exposant>
</TitreEtude> |
Mais je n'arrive pas à reproduire l'élément <Exposant> et j'obtiens :
Code:
1 2 3
| <TitreEtude>
IV. Smoothing effect of PULPACTYL®
</TitreEtude> |
Est-ce que quelqu'un peut m'aider à ce sujet ?
Merci d'avance pour vos réponses.