Hi Holger,
danke für die Antwort.
<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/
Dies konnte ich nicht beobachten:
[...]
</table:table-cell>
<table:table-cell table:number-columns-repeated="3">
<text:p>0</text:p>
</table:table-cell>
[...]
Mein ExcelSheet ist von der Anlage her schon einige Jahre alt und bearbeite das in Calc weiter.
Die Idee mit exslt:node-set hat mich sofort gepackt, bringe das aber nicht richtig zustande. Und ob mein Calc mit xmlns:xalan klar kommt, hmm...
Hier mein (abgespecktes) StyleSheet:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
exclude-result-prefixes="office table text">
<xsl:output method = "xml" indent = "yes" encoding = "UTF-8" omit-xml-declaration = "yes"/>
<xsl:param name="targetURL"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<datasheet>
<xsl:apply-templates select="//table:table[1]"/> <!-- Nur 1. Tabellenblatt verwenden! -->
</datasheet>
</xsl:template>
<xsl:template match="table:table">
<xsl:variable name="col-repeater" select="4"/><!-- Spalte mit Repeated-Attribut -->
<xsl:variable name="col-master" select="3"/> <!-- Spalte mit Master -->
<xsl:variable name="col-lang" select="12"/><!-- Spalte mit Sprachkuerzel -->
<xsl:for-each select="table:table-row">
<!-- einige Spalten haben einen 'Repeater'-Wert -->
<xsl:variable name="repeater">
<xsl:choose>
<xsl:when test="table:table-cell[$col-repeater]/@table:number-columns-repeated">
<xsl:value-of select="table:table-cell[$col-repeater]/@table:number-columns-repeated"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- Ermittlen, wo sich die Sprache befindet: -->
<xsl:variable name="repeater_lang">
<xsl:choose>
<xsl:when test="$repeater>0">
<xsl:value-of select="$col-lang - $repeater + 1"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$col-lang"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<-- Sprache speichern -->
<xsl:variable name="land" select="table:table-cell[position()=$repeater_lang]/text:p"/>
<!-- Spalten quasi konstant definieren -->
<xsl:variable name="colclientid" select="$repeater_lang - 3"/>
<xsl:variable name="colversion" select="$repeater_lang - 2"/>
<xsl:variable name="colorder" select="$repeater_lang - 1"/>
<xsl:variable name="colrelease" select="$repeater_lang + 2"/>
<!-- selektiere alle Eintraege mit gueltigem Land -->
<xsl:if test="$land">
<record>
<Name><xsl:value-of select="table:table-cell/text:p"/></Name>
<Referenz-Spalte><xsl:value-of select="$repeater_lang"/></Referenz-Spalte>
<Korrektur><xsl:value-of select="$repeater"/></Korrektur>
<Version><xsl:value-of select="table:table-cell[$colversion]/text:p"/></Version>
<Sprache><xsl:value-of select="$land"/></Sprache>
<xsl:if test="table:table-cell[$colrelease]/text:p">
<xsl:if test="not (table:table-cell[$colversion]/text:p = table:table-cell[$colrelease]/text:p)" >
<Release><xsl:value-of select="table:table-cell[$colrelease]/text:p"/></Release>
</xsl:if>
</xsl:if>
<xsl:if test="table:table-cell[$colclientid]/text:p">
<ClientId><xsl:value-of select="table:table-cell[$colclientid]/text:p"/></ClientId>
</xsl:if>
</record>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>