我知道标准定义了两个版本的ODT文件: - 一个是不同文件的存档,即meta.xml,content.xml等, - 第二个是包含所有数据的大型XML文件。 (我从上面http://en.wikipedia.org/wiki/OpenDocument_technical_specification#Document_Representation知道)
后一版本更适合处理,但遗憾的是OpenOffice不会生成。
问题是: 你知道任何过滤器,转换器或任何可以帮助我将归档版本中的ODT文件转换为单个XML文件的东西吗?最好的是Java类。
答案 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>