将ODT转换为单个XML文件

时间:2011-09-28 13:57:13

标签: java xml odf odt

我知道标准定义了两个版本的ODT文件:   - 一个是不同文件的存档,即meta.xml,content.xml等,   - 第二个是包含所有数据的大型XML文件。 (我从上面http://en.wikipedia.org/wiki/OpenDocument_technical_specification#Document_Representation知道)

后一版本更适合处理,但遗憾的是OpenOffice不会生成。

问题是: 你知道任何过滤器,转换器或任何可以帮助我将归档版本中的ODT文件转换为单个XML文件的东西吗?最好的是Java类。

2 个答案:

答案 0 :(得分:4)

Open Office和Libre Office都可以生成“一大XML”格式的ODT文件。它们被称为“Flat ODT”文件。

打开ODT文件并使用“另存为...”。从那里你可以将文件格式更改为“Flat ODT”。

答案 1 :(得分:0)

我通过生成XSLT样式表来解决这个问题,该样式表将ODT源文件转换为“或多或少”与标准兼容的XML文件。以下是代码。

<?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">

        <xsl:param name="meta.file" select="'meta.xml'" /> 

        <xsl:template match="@*|node()">
            <xsl:copy>
                <xsl:apply-templates select="@*|node()" />
            </xsl:copy>
        </xsl:template>

        <xsl:template match="office:document-content">
            <office:document>
                <xsl:copy-of select="@*" />
                <xsl:variable name="meta" select="document($meta.file)/office:document-meta/office:meta" />
                <xsl:copy-of select="$meta" />
                <xsl:apply-templates />
            </office:document>
        </xsl:template>

    </xsl:stylesheet>