Können Sie XSLT-Transformationen mit Sublime Text 2 anwenden?

4781
erikxiv

Szenario: Ich habe ein Projekt mit mehreren XML-Dateien, und ich möchte auf diese eine XSLT-Transformation anwenden und diese Ausgabe dann für andere Zwecke verwenden.

Es gibt eine Vielzahl von Werkzeugen, um dies zu tun, aber es wäre schön, wenn Sie beim Debuggen / Verwenden der Transformation im Editor bleiben könnten.

6
Welche Tools verwenden Sie und auf welchem ​​System arbeiten Sie? Am Ende fertigte ich eigene (ziemlich komplexe) Skripts für "knitr" und andere an. mreq vor 11 Jahren 0
Ich verwende verschiedene Tools und Plattformen, von denen viele über XSLT-Funktionen verfügen. Meine Frage war also, ob es ein Plugin oder ähnliches gibt, mit dem ich problemlos eine XSLT-Transformation im Editor anwenden kann. Externe Skripte sind möglicherweise in Ordnung, solange es sich um einen einmaligen Aufwand handelt, der später für beliebige XML / XSLT-Dateien verwendet werden kann. erikxiv vor 11 Jahren 0
Wenn Sie ein benutzerdefiniertes Bash-Skript erstellen können, ist es einfach, es von sublime aus auszuführen. Wenn Sie dazu in der Lage sind, kann ich Sie mit weiterführenden Informationen verlinken. mreq vor 11 Jahren 0
Ich denke, einer der Tricks ist, dass (1) das Skript zwei Eingaben erfordert, die xslt und die xml, und (2) dass die Ausgabe eine neue Datei ist. Wenn ich ein Skript schreibe, das drei Dateinamen als Eingabe enthält (einschließlich Ausgabenname), wie sollte ich das ausführen und die Ausgabe anzeigen, ohne den Editor zu verlassen? Könnten Sie nach Möglichkeit eine Antwort schreiben, damit ich sie annehmen kann? erikxiv vor 10 Jahren 1

1 Antwort auf die Frage

1
mreq

Wenn Sie drei verschiedene Dateien haben, können Sie Kommentare der ersten Zeile (oder zweite, wenn Sie utf8-Sachen benötigen) verwenden. Ich verwende es, um die Haupt-TeX-Datei von einem der Kinder zu kompilieren.

%!../main_file.tex \documentclass[12pt,a4paper]  \usepackage[czech,english] 

Ich habe ein Skript, das die erste Zeile betrachtet:

match=`head -n1 $1 | grep %!`  if [[ $match ]] then # do stuff with the parent's name, which is $ else # no match :/ fi 

und eine einfache Build-Datei, die auf mein benutzerdefiniertes Skript abzielt:

{ "cmd": ["/path/to/build/script.sh", "$file"], "selector": "whatever" } 

Auf diese Weise können Sie beliebig viele "Referenzen" in Ihren Dateien haben. Wechseln Sie einfach den Wert von head -n1.

In XML würden Sie wahrscheinlich <!--%somefilename -->mit head -n1 $1 | grep '<!--%'und verwenden $.

Zum Schluss stelle ich Ihnen mein XeLaTeX-Build-Skript vor;)

#!/bin/bash file="$1" flag="-halt-on-error"  match=`head -n1 $file | grep %!`  if [[ $match ]] then if [ $ = ../ ] then cd .. && target=$ else target=$ fi else target=$file fi rubber -c 'set arguments -shell-escape' -f -m xelatex -W all $target  exit 0 
Klug denken. Beim Testen meines xslt füge ich einfach Kommentare hinzu, die auf Eingabe- / Ausgabedateinamen verweisen, und benutze dann das Build-Skript, um das xslt auszuführen. Vielen Dank! erikxiv vor 10 Jahren 0