Meditor XML-Export

Aus Physik
Zur Navigation springen Zur Suche springen

Es soll möglich sein "von außen" dem MLTutor ein Matlab-File zu übergeben, woraufhin er dieses partitioniert und diese Information in einem XML-File speichert.

Für dieses File sind Transformationen für html und tex zu schreiben.

Was geht

  • Aufruf von außen für ein File
  • Export des aktuellen Files aus dem MLTutor heraus
  • Konfiguration über XML-File
  • Erzeugen eines XML-Files
    enthält:
    • Partitionierung
    • Den Originalcode
  • Schema existiert
  • Transformation in HTML
    • XSL File
    • php-Skript für serverseitige Transformation

Was fehlt / Ideen

  • Im XML-Format:
    • Tags für Metadaten
      • Filename
      • Autor ???
      •  ???
Wie wärs mit http://dublincore.org/documents/dcmi-terms/?
Ist das eine bekannte/verbreitete Nomenklatur? --Osiris 15:39, 6 April 2006 (CEST)
  • Im erzeugten HTML-File:
    • Link zum .m-File
    • Zeilennummern ???
  • Funktionalität der Klassen
    • Nur Funktionen liefern
    • Nur Variablen liefern
  • Preference Page für den Export
    • Einstellungen für:
      • Speicherort (oder Dialog)
      • Autor
      • Was kommt in den Header
    • Idee: "Quickexport", für den in den Preferences Format (HTML, LaTeX, PDF), Speicherort, ... eingestellt wird
      und dann noch eigene Befehle "Export as HTML", ... wo man evtl. auch nach dem Speicherort gefragt wird.

Auszeichnungssprache

Es soll möglich sein, in Kommentaren Text auszeichnen zu können. Dieser wird nun nicht als Matlab-Kommentar sondern entsprechend seiner Bestimmung formatiert ausgegeben. Ziel ist es, damit bereits im .m File eine schön formatierte Seite zu definieren, um Code einfach und ansehnlich zu dokumentieren.

Als Basis wird die Wiki-Syntax verwendet.

Elemente

Überschriften mit

%==Überschrift 1==
%===Überschrift 2===

Wobei auch die Erstellung von Inhaltsverzeichnissen möglich sein soll.

Gewöhnlicher Text in Proportionalschrift, wobei Absätze durch "Leerzeilen" erzeugt werden.

%% blabla blablabla
%%
%% Hier startet ein neuer Absatz, und blabla

Hervorhebung von Varablen im Text:

%% bla variable

Links und vordefinierte Platzhalter

%% [http://something.somedomain Links] wie im Wiki, 
%% und Kurzformen: [matref://sin]

Verborgener Text

% 

Matlab-Ausgaben

1. Variante: Den Wert von x ausgeben lassen mit z.B.:

%#x

2.Variante: überall wo Matlab etwas ausgeben würde dieses auch anzeigen

Weiters sollen von Matlab generierte Bilder auch angezeigt werden (können).

Weiteres:

  • Listen
  • ...

Formeln

  • schreiben in Latex-Syntax
  • Umsetzung in Planung, Ideen:
    • MathML und XHTML
      Darstellungsprobleme, LaTeX2MathML Transformation fraglich
    • Bilder generieren und ins zu erstellende File einbauen
      Wie generieren, geht's auch ohne Latex (weit entfernter Traum: Webservice)

Anmerkung zur Entwicklung

  • Vordefinierte Platzhalter
    • konfigurierbar machen -> Property Page
    • speichern in Properties-File
    • brauchen nicht mehr im XML-File stehen
  • Für Matlab-Ausgaben den Code Zeile für Zeile an die ML-Konsole schicken
  • Variablenerkennung: Was links von einem = steht ist eine Variable
    • Diese Erkennung ist nicht für die Partitionierung geeignet!!

Struktur

Die Klasse XMLExporter

public class XMLExporter {
    /** keys and default values for the properties */
    private final static String PROPERTYFILE      = "XML_export_properties.xml";
    public  final static String CONFIGFILEDIR_KEY = "CONFIGFILEDIR";
    private final static String CONFIGFILEDIR_DEF = "./";
    public  final static String OUTPUTDIR_KEY     = "OUTPUTDIR";
    private final static String OUTPUTDIR_DEF     = "./";
    public  final static String SCHEMAFILE_KEY    = "SCHEMAFILE";
    private final static String SCHEMAFILE_DEF    = "schema.xsd";

    // Definitionen der XML-Tags
    ...

    public static void main(String[] args) {}
    public static void writeToFile(String output, String outputFilePath) 
            throws FileNotFoundException, UnsupportedEncodingException, IOException {}
    public static String export(IDocument document, Properties properties) {}
    ...
}

Der Funktion export(...) kann man über das Properties Objekt den Namen des Schema-Files mitteilen (mehr wird nicht verwendet). Passt dessen Default-Wert, so kann null übergeben werden.

Verwendung als Anwendung

Als Parameter ist dem Programm der Filename des zu exportierenden .m Files anzugeben. Als zweiten, optionalen Parameter kann man den Namen des Output-Files angeben. Wenn das nicht geschieht, wird der Name des Matlab-Files verwendet, wobei die Dateiendung von .m auf .xml geändert wird. Bei Angabe von Pfaden beim Ausgabefile ist zu beachten, dass diese relativ zum (evtl. im Konfigurationsfile angegebenen) Ausgabeverzeichnis liegen.

Weiters sollte an der durch PROPERTYFILE spezifizierten Stelle ein Properties-XML File befinden, falls von den Default-Werten abweichende Einstellungen vorgenommen werden sollen.

Und natürlich müssen die benötigten Eclipse Klassen irgendwie zugänglich gemacht werden (Package org.eclipse.jface.text)

Konfiguration

Die Konfiguration wird über ein zur Klasse java.util.Properties kompatibles XML-File durchgeführt. Die Keys sind in der oben angeführten Beschreibung der Klasse enthalten.

  • CONFIGFILEDIR - Verzeichnis in welchem die Konfigurationsfiles für den Partitioner liegen.
  • OUTPUTDIR - Verzeichnis in welches das erzeugte File gespeichert wird.
  • SCHEMAFILE - Pfad und Name des XML-Schema Files (wird wie angegeben in das XML-File eingetragen)

Export aus dem MLTutor heraus

Dafür ist in gewohnter Manier die Klasse

public class MatlabExportAction extends MatlabAction implements IEditorActionDelegate{
...
}

zuständig.

Beim Aufruf von "File->Export as XML" wird ein File-Speichern Dialog generiert, in welchem man den Namen des Zielfiles angeben kann. Die Quelle ist stets der im Editor angezeigte Text, d.h. das File muss nicht gespeichert sein. Als kleine Erleichterung wird das letzte verwendete Verzeichnis im PreferenceStore gespeichert und als Ausgangspunkt für den nächsten Aufruf des Dialogs verwendet.

Es wird XMLExporter zum Exportieren verwendet, wobei hier eine Initialisierung entfällt, da es ja schon einen Partitioner zum Dokument gibt. Dadurch ist das CONFIGFILEDIR ohne Bedeutung.