Ik ben bezig met een java app waarmee Word-xml (office 2003) wordt ingelezen, en omgezet naar een velocity script. Dat script kan vervolgens gebruikt worden om uit een database documenten te genereren (denk aan facturen, offertes etc, standaard opmaak, custom inhoud).
Ik wil het programma gescheiden houden van het omzetten, omdat je anders met een nieuwe office, of een andere formaat van oplevering je hele java-code om moet gaan zetten. Daarom lees ik het (word)-xml bestand in naar een JDom object, wat vervolgens met enkele hulpclasses aan een velocity context gegeven wordt. Deze verwerkt dit document, en genereerd een velocity-script wat dynamisch een xml-document kan gaan genereren.
So far so good. Alleen nu loop ik tegen het probleem aan dat ik een tabel wil verwerken:
Ik gebruik XPath expressies om door het document te navigeren. Hier kom zit ik dus in een tabel (layout al gemaakt, breedtes omgezet en zo).
Het probleem is nu, dat alleen van de eerste rij de kolommen geselecteerd worden, dit gaat goed. Maar zodra hij naar de 2e rij gaat, vind hij geen kolommen meer. Er worden dus alleen nog lege
tags aangemaakt.
In het kort de tabel in word-xml
Wie kan me helpen.
Hij ziet dus alleen bij de eerste rij kolommen, hoewel er in iedere rij kolommen zijn.
/edit
Ik gebruik trouwens Jaxen voor de x-path expressies, en XmlHelper is een object met verschillende hulp-functies.
Ik wil het programma gescheiden houden van het omzetten, omdat je anders met een nieuwe office, of een andere formaat van oplevering je hele java-code om moet gaan zetten. Daarom lees ik het (word)-xml bestand in naar een JDom object, wat vervolgens met enkele hulpclasses aan een velocity context gegeven wordt. Deze verwerkt dit document, en genereerd een velocity-script wat dynamisch een xml-document kan gaan genereren.
So far so good. Alleen nu loop ik tegen het probleem aan dat ik een tabel wil verwerken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| #set ($XPath1 = $XmlHelper.NewXpath("child::w:tr")) ##Selecteerd rijen
#set ($XPath2 = $XmlHelper.NewXpath("child::w:tc")) ##Selecteerd kolommen
#set ($Rijen = $XPath1.selectNodes($tbl)) ##Selecteer de rijen in de tabel
#foreach($Rij in $Rijen) ##loop de rijen door
<rij>
#set ($Kolommen = $XPath2.selectNodes($Rij)) ##Selecteer de komlommen in de rij, hier ziet hij na de eerste rij geen kolommen meer
#foreach($Kolom in $Kolommen) loop de kolommen door, dit wordt daarom alleen de eerste keer gedaan, daarna is niks om doorheen te lopen.
<kolom>
#subsection($Kolom $XmlHelper true) ##Verwerk de inhoud van de kolom
</kolom>
#end
</rij>
#end |
Ik gebruik XPath expressies om door het document te navigeren. Hier kom zit ik dus in een tabel (layout al gemaakt, breedtes omgezet en zo).
Het probleem is nu, dat alleen van de eerste rij de kolommen geselecteerd worden, dit gaat goed. Maar zodra hij naar de 2e rij gaat, vind hij geen kolommen meer. Er worden dus alleen nog lege
code:
1
2
| <rij> </rij> |
tags aangemaakt.
In het kort de tabel in word-xml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <w:tbl>
... opmaak babbel
<w:tr>
<w:tc>
... inhoud
</w:tc>
<w:tc>
... inhoud
</w:tc>
</w:tr>
<w:tr>
....je bedoelt me wel
</w:tr>
</w:tbl> |
Wie kan me helpen.
Hij ziet dus alleen bij de eerste rij kolommen, hoewel er in iedere rij kolommen zijn.
/edit
Ik gebruik trouwens Jaxen voor de x-path expressies, en XmlHelper is een object met verschillende hulp-functies.
[ Voor 45% gewijzigd door J2pc op 23-06-2006 11:04 ]
"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh