slt
je veux parcourir mon fichier wordml, rechercher les attributs w:name de la balise w:bindata et les remplacer leurs valeurs par la valeur d'ue autre balise.
kk1 peut maider
merci davance
![]()
slt
je veux parcourir mon fichier wordml, rechercher les attributs w:name de la balise w:bindata et les remplacer leurs valeurs par la valeur d'ue autre balise.
kk1 peut maider
merci davance
![]()
Un truc du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <xsl:template match="w:bindata/@w:name"> <xsl:attribute name="{name()}" namespace="{namespace-uri()}"> <xsl:value-of select="../path/relatif/vers/la/valeur"/> </xsl:attribute> </xsl:template>
merci. sa marche. mais il prend toutes les valeurs de la balise pour chaque attribut w:name.j'ai essayé le xsl:for-each mais sa marche tjrs pas![]()
S'il prend toutes les valeurs, c'est que le "path relatif vers la valeur", comme sus-nommé par thelvin, n'est pas fourni correctement.
Tu peux toujours donner un bout de code, pour voir la structure XML que tu as, et le cheminement que tu proposes pour récupérer la valeur. Je suis sûr que tu auras une âme charitable qui t'aidera![]()
voilà mn code
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlnssl="http://www.w3.org/1999/XSL/Transform" xmlns
si="http://www.w3.org/2001/XMLSchema-instance" xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint">
<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
<xsl:template match="/|node() | @*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/w:binData/@w:name">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="//w:hlink[descendant::w:t[starts-with(.,'Figure')]]"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
maids il me renvoit toutes les valeurs pour cette balise
Ben oui. J'ai dit que le chemin devait être relatif.
Il ne doit pas commencer par //, ce qui force le retour à la racine.
Il vaut mieux le faire commencer par .. ce qui ramène à la balise <w:binData> et continuer de là.
Vu que tu ne nous a pas montré le fichier XML à transformer, je peux pas te dire quoi mettre à la place. De toute façon tu devrais apprendre XPath avant d'essayer de faire des trucs avancés.
Note : Quand tu postes du code sur un forum, utilise la balise [CODE] (l'espèce de # dans la barre d'outils.)
Note : / est déjà matché par node(), c'est donc redondant de faire /|node() dans une expression de matching.
Partager