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
![Wink ;-)](./images/smilies/icon_wink.gif)
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
[quote="tanja"]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 ;-)[/quote]
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]<?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>[/code]
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]<?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>[/code]
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