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.
merci thevin
ce que je veux c'est de remplacer lez contenu de l'attribut w:name ici
par la legende de chaque image qui est contenu dans une balise texte w:t sous la balise w:hlink
Code : Sélectionner tout - Visualiser dans une fenêtre à part <w:binData w:name="wordml://03000008.png">
je veux affecter une legende a chaque figure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <w:hlink w:bookmark="_Toc293060570"> <w:r wsp:rsidR="00EC296F" wsp:rsidRPr="00E91F73"> <w:rPr> <w:rStyle w:val="Lienhypertexte"/> <w:noProof/> </w:rPr> <w:t>Figure 1: Electronic Document Management System</w:t>
mais mon code me renvoi toutes les legendes pour chaque image
vous pouvez maider svp
merci davance
![]()
merci thevin
ce que je veux c'est de remplacer lez contenu de l'attribut w:name ici
par la legende de chaque image qui est contenu dans une balise texte w:t sous la balise w:hlink
Code : Sélectionner tout - Visualiser dans une fenêtre à part <w:binData w:name="wordml://03000008.png">
je veux affecter une legende a chaque figure
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <w:hlink w:bookmark="_Toc293060570"> <w:r wsp:rsidR="00EC296F" wsp:rsidRPr="00E91F73"> <w:rPr> <w:rStyle w:val="Lienhypertexte"/> <w:noProof/> </w:rPr> <w:t>Figure 1: Electronic Document Management System</w:t>
mais mon code me renvoi toutes les legendes pour chaque image
vous pouvez maider svp
merci davance
Ok, mais comment tu fais le lien entre une balise <w:binData> et la balise <w:hlink> qui lui correspond ?
Il nous faut le code qui montre les deux.
c'est sa la legende <w:t>: Statuses of CAT 3 documents</w:t>
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
28
29
30
31
32 <w:r wsp:rsidR="00E0107B"> <w:fldChar w:fldCharType="end"/> </w:r> <aml:annotation aml:id="35" w:type="Word.Bookmark.End"/> <w:r> <w:t>: Statuses of CAT 3 documents</w:t> </w:r> <aml:annotation aml:id="36" w:type="Word.Bookmark.End"/> <aml:annotation aml:id="37" w:type="Word.Bookmark.End"/> </w:p> <w:p wsp:rsidR="004D377C" wsp:rsidRDefault="0063049F" wsp:rsidP="0063049F"> <w:pPr> <w:sectPr wsp:rsidR="004D377C" wsp:rsidSect="004D377C"> <w:footnotePr> <w:numFmt w:val="lower-letter"/> <w:numRestart w:val="each-page"/> </w:footnotePr> <w:endnotePr> <w:numFmt w:val="chicago"/> <w:numRestart w:val="each-sect"/> </w:endnotePr> <w:type w:val="continuous"/> <w:pgSz w:w="12240" w:h="15840"/> <w:pgMar w:top="1701" w:right="1191" w:bottom="1417" w:left="1587" w:header="567" w:footer="567" w:gutter="0"/> <w:cols w:num="2" w:space="720"/> <w:docGrid w:line-pitch="326"/> </w:sectPr> </w:pPr> <w:r> <w:pict> <w:binData w:name="wordml://0300000A.png"> iVBORw0KGgoAAAANSUhEUgAAAooAAAHRCAIAAABitw9yAAAAAXNSR0IArs4c6QAA/8pJREFUeF7s nQVgXEX+x3cjm2x2496m7u5utDgtDofDHX/sOI5DDj3gONzdilvRQosUaUsd6k7d2zTusrFN8v/M zOZ1u0nbJE2aTTKvy7LZfTLvO/PmOz83Z+WVmfSmEdAIaAQ0AhoBjYA3IeDjTY3RbdEIaAQ0AhoB jYBGQCCg6VmPA42ARkAjoBHQCHgdApqeva5LdIM0AhoBjYBGQCOg6VmPAY2ARkAjoBHQCHgdAuYa XcMiQvy9rqW6QRoBjYBGQCOgEWjRCLgz8hHpWXt0t+gxoG9OI6AR0AhoBLwLAQRjd+bVym3v6h7d Go2ARkAjoBHQCICApmc9DDQCGgGNgEZAI+B1CGh69rou0Q3SCGgENAIaAY2Apmc9BjQCGgGNgEZA I+B1CGh69rou0Q3SCGgENAIaAY2Apmc9BjQCGgGNgEZAI+B1CGh69rou0Q3SCGgENAIaAY2Apmc9 BjQCGgGNgEZAI+B1CGh69rou0Q3SCGgENAIaAY2Apmc9BjQCGgGNgEZAI+B1CGh69rou0Q3SCGgE NAIaAY2Apmc9BjQCGgGNgEZAI+B1CGh69rou0Q3SCGgENAIaAY2Apmc9BjQCGgGNgEZAI+B1CGh6 9rou0Q1qnQiUlpaUlhZz75VVW+vEQd+1RkAjoBDQ9KxHgkag6REoKSn+/qfpSUkHaUpFRQUErXi6 6VumW6AR0Ag0EQKanpsIeH1ZjYAbAtNnTvvp5xkWS4CTrayMN0haI6QR0Ai0ZgQ0Pbfm3tf37hUI fPvd57N++dbfElBe7iwqchQVF0HRhgztFU3UjdAIaAROOAKank845PqCGgE3BGb/Nuv7WV8LPba5 0lFUlJebW1hQUFxcXO50apw0AhqB1oyApufW3Pv63psYgdVrl38z87PiKo+w/Ly8nJycgoKC0pKS 8opyrd9u4u7Rl9cINCkCmp6bFH598VaMwJ59Oz/58t28vGyzSbiAQce5ubBztqPIUSaV260YG33r GgGNgPbc1mNAI9AUCGRkpn3y+bupKQflI2gWTaiszM/PKyjIL0GzXS6ct7XndlP0jL6mRsBbENDS s7f0hG5H60EADv5y+idbtq4XBFwpudlkQpvtKHAUFxWVQ85adG49o0HfqUbgCAhoetZDQyNwQhEo Kyv7/qevFi/9DZW2jw8PoCu4GaIuLi5Sam0tN5/QLtEX0wh4JQKanr2yW3SjWi4Cv8z57oefppsh ZR8fdxrmi9Iyl8nZbBYitXrXm0ZAI9A6EdD03Dr7Xd910yCwYNGcr2Z8VFlpNgux+fCkYIjPbvZm zc1N00P6qhoBr0FA07PXdIVuSEtHYN2GVZ9Me7usrByVdo35Og1K1tzc0s
et limage ds la balise w:bindata
Et il est où, <w:t> ? J'étais pas clair quand j'ai dit qu'il fallait les deux ?
deux, c'est le nombre après un, c'est aussi ce qu'on obtient quand on a un truc et qu'on en a un autre.
un : <w:binData>
deux : <w:t>
Edit : mais il y est, en plus. Aïe mes dents. Bon, puis-je suggérer pour une prochaine occasion de mettre les choses un peu plus en évidence ?
![]()
mais je vous ai fourni les deux
vous mavé di le lien entre les 2 balises
et je vous ai fourni tout le code qui contient la legende et l'image
le w:t sous w:hlink dont j'aii parlé tout à lheure c'est celui de la liste de figure et il n'a ocune relation avec la balise qui contient l'image
Oui je l'ai juste pas vu, en fait. J'aurais dû vérifier avec plus de rigueur.
Cela dit, bon, je suis peut-être pas en position de faire cette remarque... Mais le moins qu'on puisse dire c'est que ça saute pas aux yeux. Quelque chose d'un peu mieux mis en évidence, peut-être ? Du gras, de la couleur ? Une explication après le code qui dit "vous voyez, telle balise est là et telle balise est ici" ?
... Ok donc après revérification, en effet, on dirait bien.
Et donc, s'il n'y a aucune relation entre une image et sa légende... Pourquoi as-tu pensé qu'il était possible d'associer la bonne légende à la bonne image ?
S'il n'y a pas de lien, alors il n'est pas possible de trouver un lien -_-°.
la relation entre l'image et la legende c'est qu'ils ont le meme ancestre wx:subsection
la legende est contenue juste dans le premier paragraphe w:p sous la balise wx:sub-section
pouvez vous m'aider là??
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
28
29
30
31
32
33
34
35
36
37
38 <w:p wsp:rsidR="00D466EA" wsp:rsidRPr="00A22997" wsp:rsidRDefault="00D466EA" wsp:rsidP="00BB766C"> <w:pPr> <w:pStyle w:val="Lgende"/> </w:pPr> <w:r wsp:rsidRPr="00A22997"> <w:t>Figure </w:t> </w:r> <w:r wsp:rsidR="00E0107B"> <w:fldChar w:fldCharType="begin"/> </w:r> <w:r wsp:rsidR="00E0107B"> <w:instrText> SEQ Figure \* ARABIC </w:instrText> </w:r> <w:r wsp:rsidR="00E0107B"> <w:fldChar w:fldCharType="separate"/> </w:r> <w:r wsp:rsidR="00EC296F"> <w:rPr> <w:noProof/> </w:rPr> <w:t>9</w:t> </w:r> <w:r wsp:rsidR="00E0107B"> <w:fldChar w:fldCharType="end"/> </w:r> <aml:annotation aml:id="393" w:type="Word.Bookmark.End"/> <w:r wsp:rsidRPr="00A22997"> <w:t>: Periodic Review workflow</w:t> </w:r> <aml:annotation aml:id="394" w:type="Word.Bookmark.End"/> <aml:annotation aml:id="395" w:type="Word.Bookmark.End"/> </w:p> <w:p wsp:rsidR="00D466EA" wsp:rsidRPr="00A22997" wsp:rsidRDefault="00D466EA" wsp:rsidP="00D466EA"> <w:r wsp:rsidRPr="00A22997"> <w:pict> <w:binData w:name="wordml://03000010.png"> iVBORw0KGgoAAAANSUhEUgAAAmcAAAFKCAIAAADXCm8zAAAAAXNSR0IArs4c6QAAWzJJREFUeF7t XQd4FNXaXqQkQIAEUoFAAOkgTaooYMeOHe/1qvxir+jFclUsFzugXq9dsF0VRbGjWABFKRaCtCAt 9AABAgkkxIT87+aE4zAzuzu7O7tzdvadZ555zp75zne+837fzjvnzJkztaqqqjzciAARIAJEgAgQ AQsIHGFBhiJEgAgQASJABIiAFwGyJuOACBABIkAEiIBVBMiaVpGiHBEgAkSACBABsiZjgAgQASJA BIiAVQTImlaRohwRIAJEgAgQAbImY4AIEAEiQASIgFUEyJpWkaIcESACRIAIEAGyJmOACBABIkAE iIBVBMiaVpGiHBEgAkSACBABsiZjgAgQASJABIiAVQTImlaRohwRIAJEgAgQAbImY4AIEAEiQASI gFUEavlZvb2s4uCCjXutalJermNag8ykesqbSQOJABEgArGEgMuYIqNRvU6pDfw4wJw1H/thwxuL tuUXlQ3IbhxL3vNra96O/Th/Wa/M+4a1TqzDTrZrHMuGEAEi4AwCrmSKguJycN/ZnVMnDm9n2tHS s2ZRWcXpby4ZkpN8ac8M/3zrjJfCq7WgpPz1RQXvL9vx6jkde2YlhaeMpYkAESACcYoAeOVv769w K1Og9/zxisKHZq8HcZ7SvqnOx3rWPO3NJVf1yQLNujgW8gr3n//Osh+v6pWcWMfFzWTTiAARIAIR QuCYlxeNP6HNkDbJEdKvglr0Ic94a8l/z2iv62Idxpov/rwlt2Dff884UgWLI2rDe0u2f7Jy19sX dI5oLVROBIgAEXAfAhiYLSqrHH9ijvuapmtR7taSGz9f/e0VPbQP9Q57vPfe0h0Xdk2t8nhcv5/Z OfWrVbvQDXe919lAIkAEiIC9CIApLogPpuiRlQSaEHNi5HYYa4JXu2cmVVV5dPu9b/zabtT7e/f/ KfJHPz0XP3EUP5GPn5AxFvSfg1LYjTLLNxSJKiZ+uBRnfYkFW51WPqH2ETkpiTos7A0saiMCRIAI uA8BwSJHxQdTgDX6tmi8YNNh75L8xZp4uovnfE0SauNdFN3WpZV38HpHUSnyC/eUfrd4K37iiDRy kI+fkDEW9J8j4skoc+b9X0P5qlfOv+WcrvLFmGCVB5RvklBnT1mF+2KaLSICRIAIRA4BzKnEzFLT C6wrmSIjqQ6a7L
... Vu que je me suis déjà planté une fois, je vais essayer de pas être trop acerbe, mais...
Je vois pas la moindre balise wx:subsection dans ce que tu nous montres.
C'est pourtant pas faute d'avoir insisté, bon, je cherche même pas à comprendre.
À défaut de ce que tu montres, ce que tu dis, en gros, c'est que ça ressemble à ça :
Ok.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <wx:subsection> ... <w:p>La <balise>légende</balise> de <autrebalise>l'image</autrebalise></w:p> ... <w:p>Ça c'est pas le premier w:p donc c'est pas la légende</w:p> ... <w:binData w:name="à remplacer">DuBase64</w:binData> ... </wx:subsection>
Dans ce cas, il suffit de faire comme ça :
- Remonter au premier ancêtre wx:subsection
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="(ancestor::wx:subsection[1]//w:p)[1]"/> </xsl:attribute> </xsl:template>
- sélectionner tous ses descendants w:p
- garder le premier
- afficher son contenu textuel.
merciiiiiiiiiiiiiii mais ca me renvoi tjrs une noeud vide![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager