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. Wie gesagt, ich bekomme ein ExcelSheet, das von der Anlage her schon einige Jahre alt ist, das ich in Calc weiter bearbeite.
Die Idee mit exslt:node-set hat mich sofort gepackt, bringe das aber nicht richtig zustande. Und ob ich unter Calc mit xmlns:xalan arbeiten kann, 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>