tanja hat geschrieben:Meine Frage ist nun: Wie lautet die Entsprechung für Integer? Wenn es auch einen Datumstyp gibt, könnte ich den auch noch gut verwenden
Interessante Fragestellung. Zunächst hatte ich keine Antwort.
Ich habe daher folgendes gemacht: Eine Calc-Datei mit Zahlen von 1 bis 8 gespeichert. Eine Calc-Datei mit ein paar Geburtsdaten gespeichert. Beide Dateien kopiert, in *.zip umbenannt und mit einem ZIP-Packer entpackt.
Der mich interessierende Teil spielt sich jeweils in der content.xml ab.
Bei Zahlen arbeitet OOo mit den XML-Attributen 'office:value-type="float" office:value="1"' wobei "office:value" den tatsächlichen Wert enthält, der anschließend im <text:p>-Tag zu wiederholen ist.
Bei einem Datumstyp sieht das ganze ein wenig komplizierter aus. Hier fängt OOo zunächst mit verschiedenen <style:style>- und <number:date-style>-Tags in einem <office:automatic-styles>-Tag an. Anschließend müssen im <table>-Tag für die gewünschten Spalten <table:table-column>-Tags mit den gewünschten <style:style>-Tags definiert werden.
Da das ganz nicht wirklich trivial ist, nun ein Beispiel. Ich habe es mir nicht komplett selbst ausgedacht, sondern aus einem anderen Thread über das Thema XSLT-Filter übernommen und erweitert.
Hier nun zunächst meine XML-Datei, mit Beispieldaten (Zeichenketten: artist, album, track; Zahlen: year, Datum: released im Format YYYY-MM-DD):
Code: Alles auswählen
<?xml version="1.0"?>
<mp3tag>
<file>
<artist>Someone</artist>
<album>My Life</album>
<track>Here We Go</track>
<year>2007</year>
<released>2007-01-01</released>
</file>
<file>
<artist>Somebody</artist>
<album>Your Life</album>
<track>Here We Play</track>
<year>2006</year>
<released>2006-03-03</released>
</file>
<file>
<artist>Anybody</artist>
<album>Our Life</album>
<track>Sounds Good</track>
<year>2005</year>
<released>2005-10-01</released>
</file>
</mp3tag>
Und nun mein XSLT-Filter, mit dem ich die obige Beispieldatei inklusive Formatierungen laden kann. Auch diese Datei habe ich nicht komplett selbst geschrieben, sondern nur für die Zahlen- und Datums-Spalten erweitert:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" office:version="1.0">
<office:automatic-styles>
<style:style style:name="co1" style:family="table-column">
<style:table-column-properties fo:break-before="auto" style:column-width="5.0cm"/>
</style:style>
<style:style style:name="ro1" style:family="table-row">
<style:table-row-properties style:row-height="0.453cm" fo:break-before="auto" style:use-optimal-row-height="true"/>
</style:style>
<style:style style:name="ta1" style:family="table" style:master-page-name="Default">
<style:table-properties table:display="true" style:writing-mode="lr-tb"/>
</style:style>
<number:date-style style:name="N37" number:automatic-order="true">
<number:day number:style="long"/>
<number:text>.</number:text>
<number:month number:style="long"/>
<number:text>.</number:text>
<number:year/>
</number:date-style>
<style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>
</office:automatic-styles>
<office:body>
<office:spreadsheet>
<table:table>
<table:table-column table:style-name="co1" table:number-columns-repeated="4" table:default-cell-style-name="Default"/>
<table:table-column table:style-name="co1" table:default-cell-style-name="ce1"/>
<table:table-row>
<table:table-cell><text:p>artist</text:p></table:table-cell>
<table:table-cell><text:p>album</text:p></table:table-cell>
<table:table-cell><text:p>track</text:p></table:table-cell>
<table:table-cell><text:p>year</text:p></table:table-cell>
<table:table-cell><text:p>released</text:p></table:table-cell>
</table:table-row>
<xsl:for-each select="mp3tag/file">
<table:table-row>
<table:table-cell><text:p><xsl:value-of select="artist"/></text:p></table:table-cell>
<table:table-cell><text:p><xsl:value-of select="album"/></text:p></table:table-cell>
<table:table-cell><text:p><xsl:value-of select="track"/></text:p></table:table-cell>
<table:table-cell office:value-type="float">
<xsl:attribute name="office:value"><xsl:value-of select="year"/></xsl:attribute>
<text:p><xsl:value-of select="year"/></text:p>
</table:table-cell>
<table:table-cell office:value-type="date">
<xsl:attribute name="office:date-value"><xsl:value-of select="released"/></xsl:attribute>
<text:p><xsl:value-of select="released"/></text:p>
</table:table-cell>
</table:table-row>
</xsl:for-each>
</table:table>
</office:spreadsheet>
</office:body>
</office:document-content>
</xsl:template>
</xsl:stylesheet>
Ich habe das ganz mit OOo 2.1.0 unter Windows XP getestet. Die Zahlen und die Release-Daten sind korrekt formatiert aus.
Regards
hol.sten