问题
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