Bonjour,
Je travail sur le format de office 2007 et je tente de parser le fichier XML.
J ai converti un document Word 2003 avec des Custom XML en Word 2007
Lorsque office 2007 converti ce fichier toute la structure du document se trouve dans un fichier document.xml et je cherche a recupéré tous les noeuds enfant <w:customXml et les valeur saisie dans dans les balise w:t
Voila la forme du XML et la structure de w:customxml :
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 <w:customXml w:uri="INFOR" w:element="Info"> <w:p w:rsidR="00212133" w:rsidRPr="00212133" w:rsidRDefault="00DF632A" w:rsidP="00212133"> <w:pPr> <w:jc w:val="right" /> <w:rPr> <w:i /> <w:sz w:val="16" /> <w:szCs w:val="16" /> <w:lang w:val="es-ES_tradnl" /> </w:rPr> </w:pPr> <w:customXml w:uri="INFOR" w:element="id"> <w:r w:rsidR="00212133"> <w:rPr> <w:i /> <w:sz w:val="16" /> <w:szCs w:val="16" /> <w:lang w:val="es-ES_tradnl" /> </w:rPr> <w:t>Mon</w:t> </w:r> <w:r w:rsidR="00212133" w:rsidRPr="00F40FF3"> <w:rPr> <w:i /> <w:sz w:val="16" /> <w:szCs w:val="16" /> <w:lang w:val="es-ES_tradnl" /> </w:rPr> <w:t>Text</w:t> </w:r> </w:customXml>
Lors de la transformation, Office 2007 m´a diviser le text en 2 noeud enfant
<w:t>Mon</w:t> et
<w:t>Text</w:t>
Voici le XSL que j utilse pour recupérer les valeurs w:t des noeud CustomXml :
Le XSL y est presque mais le seul hic c ´est quíl ne me retoure que la valeur du premier noeud enfant <w:t>mon</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 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" exclude-result-prefixes="w"> <xsl:template match="w:p | w:r | w:tbl | w:tr | w:tc "> <xsl:apply-templates select="w:customXml | w:p | w:r | w:tbl | w:tr | w:tc"/> </xsl:template> <xsl:template match="w:customXml"> <xsl:element name="{@w:element}" namespace="{@w:uri}"> <xsl:choose> <xsl:when test="not(descendant::w:customXml)"> <xsl:value-of select="descendant::w:t"/> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="child::node()"/> </xsl:otherwise> </xsl:choose> </xsl:element> </xsl:template> </xsl:stylesheet>
Mon XML de sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Document xmlns="INFOR"> <Info> <id>mon</id> ***** PREMIER NOEUD DU w:t <version>11</version> </Info>
Mais j ai besoin de la concatenation des 2 noeuds
Si vous avez une idée je suis un peu paumé la ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <Info> <id>Mon Text </id> ***** node 1 et 2 ... <version>11</version> </Info>
Merci d´avance
Anto.
Partager