Holge r: OO-Calc-Exportfilter - Probleme mit number-columns-repeated

Beitrag lesen

Oh ja,

das "Problem" kenne ich, ist aber eigentlich eine elegante Loesung und im nachhinein, eine elegante Loesung. Man muesste aber mehr wissen, wo genau dein Problem damit liegt. Also wenn du mal ein Beispiel geben koenntest, dann wuerde man auch in der Lage sein, etwas genauer Hilfestellung zu leisten.

Ein paar Punkte noch dazu angenmerkt:

Beachte, dass nach jeder table:table-cell/

ein entsprechendes Leerelement kommt um die "cover" table:covered-table-cell/

also etwa:
<table:table-cell table:number-columns-repeated="3"/>
<table:covered-table-cell table:number-columns-repeated="2"/>
<table:table-cell table:number-columns-repeated="2"/>
table:covered-table-cell/

Das hilft schon manchmal, um die verdeckten Zellen besser zu berechnen.

Moeglich loesungen:
Da du den export filter von OO benutzt (?) kannst du mit exslt:node-set erweiterung arbeiten, da diese fuer den Xalan bei OO zu verfuegung steht, d.h. du kannst in einem vorgelagerten Schritt deinen table-row "normalisieren" und die spanned cells mit leeren table-cells ersetzten.

Also etwa eine globale Veriable fuer alle Tabellen also normalisiertes nodeset

  
  
<xsl:stylesheet ... xmlns:xalan="http://xml.apache.org/xalan"  >  
<!-- ** globale variable **-->  
   <xsl:variable name="NormalTable">  
       <xsl:apply-templates selectt="//table:table" mode="cleanUp"/>  
   </xsl:variable>  
  
   <!-- ** template zum normalisieren **-->  
   <xsl:template match="table:table" mode="cleanUp">  
  
       <!-- hier code zur normalisierung -->  
  
   </xsl:template>  
   <!--** transformiere mit bestehenden xsl code **-->  
   <xsl:apply-templates select="xalan:nodeset($NormalTable/*)"/>  
   <!--** bestehende templates **-->  
   <xsl:template match="table:table">  
  
     <!-- do whetever you want to do -->  
  
   </xsl:template>  
  
</xsl:stylesheet>  
  

Alternative sind in solchen Faellen immer ganz gut mit rekursive Schleifen zu loesen.

Gruss, Holge r

Hallo,

ich bekomme ca. 1x wöchtenlich die (händisch) aktualisierte Version eines ExcelSheets, in dem in ca. 1000 Zeilen Versionsverwaltung betrieben wird. Wir arbeiten mit OO-Calc 3.0. Mittels eines Exportfilters baue ich mir eine xml-Datei für andere Zwecke - klappt alles prima.

Ein Problem habe ich immer in Zeilen, in denen mehrere leere Felder hintereinander auftreten. Diese werden per "table:number-columns-repeated" zu einem Feld zusammengefasst gespeichert. Wird dies nicht aufgefangen, erhalte ich unsinnige Werte.

Wie kann ich dieses Problem möglichst elegant lösen, wenn ich potentiell mehrere "number-columns-repeated"-Attribute in einer Zeile behandeln muss und dabei den Restriktionen von xslt 1.0 unterworfen bin?

Ich hoffe, dass ich mich verständlich machen konnte und freue mich für jede Anregung.

Danke im Voraus,
Joerg