1

libreoffice文档是一个zip 文件,其中包含(除其他外)一些 XML 文件。

s$ unzip -t test.odp
Archive:  test.odp
    testing: mimetype                 OK
    testing: Configurations2/statusbar/   OK
    testing: Configurations2/accelerator/current.xml   OK
    testing: Configurations2/floater/   OK
    testing: Configurations2/popupmenu/   OK
    testing: Configurations2/progressbar/   OK
    testing: Configurations2/menubar/   OK
    testing: Configurations2/toolbar/   OK
    testing: Configurations2/images/Bitmaps/   OK
    testing: content.xml              OK
    testing: styles.xml               OK
    testing: meta.xml                 OK
    testing: settings.xml             OK
    testing: META-INF/manifest.xml    OK
No errors detected in compressed data of test.odp.

我想使用XSLT(和 xsltproc + element <xsl:document/>)从一个看起来像这样的 xml 文件动态生成 ODP 幻灯片:

<slideshow>

  <slide>
    <title>Slide 1</title>
    <content>blablablablablablablabal</content>
  </slide>
  <!-- (....) --->
  <slide>
    <title>Slide N</title>
    <content>blablablablablablablabal</content>
  </slide>
</slidesho>

是否有任何现有的 XSLT 样式表?

文件content.xml很复杂,odp 的最小内容是什么,一个 HelloWorld.odp,可以工作吗?

4

1 回答 1

1

一个最小的有效演示文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<office:document-content xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0">
  <office:body>
    <office:presentation/>
  </office:body>
</office:document-content>

一个包含一些基本内容的简单文件是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<office:document-content office:version="1.2"
    xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
    xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0"
    xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0"
    xmlns:presentation="urn:oasis:names:tc:opendocument:xmlns:presentation:1.0"
    xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0">
  <office:body>
    <office:presentation>
      <draw:page draw:master-page-name="">
        <draw:frame presentation:style-name="" svg:width="25.199cm"
          svg:height="3.506cm" svg:x="1.4cm" svg:y="0.837cm" presentation:class="title">
          <draw:text-box>
            <text:p>Title</text:p>
          </draw:text-box>
        </draw:frame>
        <draw:frame presentation:style-name="" svg:width="24.639cm"
          svg:height="12.178cm" svg:x="1.4cm" svg:y="4.914cm" presentation:class="subtitle">
          <draw:text-box>
            <text:p>My Text</text:p>
          </draw:text-box>
        </draw:frame>
      </draw:page>
    </office:presentation>
  </office:body>
</office:document-content>

I'd suggest getting an XML editor like oXygen that supports ODF to play with this. Having the specifications and RNG for the ODF version that you want to use might help, too.

于 2013-01-16T21:41:59.387 回答