LibreOffice: a XSLT stylesheet to generate a slideshow?

我的未来我决定 提交于 2019-12-08 08:24:25

问题


A libreoffice document is a zip file containing (among other thing) some XML files.

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.

I would like to dynamically generate an ODP slideshow using XSLT (and the xsltproc + the element <xsl:document/> ) from a xml file that could look like this:

<slideshow>

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

Is there any existing XSLT stylesheet for this ?

The file content.xml is complicated, what would be the minimal content for an odp, a HelloWorld.odp, that could work ?


回答1:


A minimial valid presentation file looks like this:

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

A simple file with some basic content would be this:

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



来源:https://stackoverflow.com/questions/14364524/libreoffice-a-xslt-stylesheet-to-generate-a-slideshow

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!