Hi,

Ellen Pape schrieb:
ich möchte einen Teil der Inhalte einer XML-Datei mit Hilfe von XSLT
auslesen und in einer gewünschten Form darstellen. Das klappt mit Firefox,
IE, auch mit Word 2007 (ich öffne die Datei und erhalte sofort ein Fenster,
in dem ich die XSL Datenansicht bestimmen kann), mit Writer ist mir das
nicht gelungen. Hat jemand eine Idee, wie das geht?

Prinzipiell zwei Wege:

1. Möglichkeit:
xml-Datei mit einem XSLT-Prozessor nach html wandeln und dann das html in OOo öffnen. Firefox, IE8 und anscheinend auch Word2007 machen das in einem Rutsch, so dass es so aussieht, als würde das Dokument direkt geöffnet. OOo kann das (meines Wissens) nicht.

Vorteil: Die kannst die xslt weitgehend beibehalten. ( <xsl:output method="text"/> sollte durch "html" ersetzt werden)

Nachteil: Zwei Schritte in OOo notwendig

OOo bringt einen entsprechenden XSLT-Prozessor sogar mit (Saxon). Unter Linux funktioniert folgender Aufruf: java -jar /opt/openoffice.org/basis3.1/program/classes/saxon9.jar daten.xml daten.xsl >daten.html

Unter Windows sollte es (bis auf die Pfade) genau so funktionieren.


2. Möglichkeit:
Die XML-Datei per XML-Filter in OOo direkt nach ODT wandeln.

Vorteil: direkt in OOo integriert

Nachteil: Du kannst die vorhandene xslt nicht benutzen sondern musst eine neue Schreiben, die deine Daten nach ODF wandelt. (Und ODF ist um einiges komplexer als html)


Um den Filter zu definieren, rufst du Extras-XML-Filtereinstellungen auf. Dort definierst du einen neuen Filter, definierst Name, Anwendung (Writer odt) und einen Filternamen (ggf. eine eigene Endung). Im Register Transformation gibst du eine xslt als Import-XSLT an.

Leider definiert dein Daten-XML keinen eigenen Doctype, dadurch muss beim Öffnen in OOo dann jeweils der Filter explizit gewählt werden.


Hier noch eine (nicht vollständige - nur schnell zusammengehackt) xslt:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml"/>

<xsl:template match="/">
<office:document-content
xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"
xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" office:version="1.2">
<office:body>
 <office:text>
 <text:p><xsl:apply-templates/>  </text:p>
 </office:text>
 </office:body>
</office:document-content>
</xsl:template>

<xsl:template match="b">
Fett:<xsl:apply-templates/>
und wieder normal:
</xsl:template>

</xsl:stylesheet>





Gruß,

André

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org

Antwort per Email an