2

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

后一个版本更适合处理,但不幸的是不是由 OpenOffice 生产的。

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

4

2 回答 2

5

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

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

于 2011-09-28T23:21:59.207 回答
0

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

<?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>
于 2012-09-13T20:39:31.107 回答