Você pode aplicar transformações XSLT usando o Sublime Text 2?

6

Cenário: Eu tenho um projeto com vários arquivos XML e gostaria de aplicar uma transformação XSLT neles e depois usar essa saída para outros fins.

Há várias ferramentas para fazer isso, mas seria bom poder permanecer no editor durante a depuração / uso da transformação.

erikxiv
fonte
Quais ferramentas você usa e em qual sistema você está? Acabei criando scripts de construção personalizados (bastante complexos) para knitre outros.
Mreq 13/04
Estou usando uma variedade de ferramentas e plataformas, muitas das quais com recursos XSLT, então minha pergunta era se existe um plug-in ou similar que me permita aplicar suavemente uma transformação XSLT dentro do editor. Scripts externos podem ser bons, desde que seja um esforço único que possa ser usado posteriormente em arquivos XML / XSLT arbitrários.
Erikxiv
Se você é capaz de criar um script bash personalizado, é fácil executá-lo de sublime. Se você puder, posso vincular você a algumas leituras adicionais.
mreq
11
Acho que um dos truques é que (1) o script requer duas entradas, o xslt e o xml, e (2) que a saída é um novo arquivo. Se eu escrever um script que use três nomes de arquivos como entrada (incluindo o nome da saída), como eu executaria isso e visualizaria a saída sem sair do editor? Se possível, você poderia escrever uma resposta para que eu possa aceitá-la?
Erikxiv

Respostas:

1

Se você precisar de 3 arquivos diferentes, poderá usar os comentários de primeira linha (ou o segundo, se precisar de coisas do utf8). Eu o uso para compilar o arquivo TeX principal de uma das crianças.

%!../main_file.tex
\documentclass[12pt,a4paper]{scrartcl}

\usepackage[czech,english]{babel}

Eu tenho um script, que olha para a primeira linha:

match=`head -n1 $1 | grep %!`

if [[ $match ]]
    then
        # do stuff with the parent's name, which is ${match:2:100}
    else
        # no match :/
fi

e um arquivo de compilação simples visando meu script personalizado:

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

Dessa forma, você pode ter quantas "referências" em seus arquivos desejar. Apenas mude o valor de head -n1.

Em XML, você provavelmente usaria <!--%somefilename -->com head -n1 $1 | grep '<!--%'e ${match:5:100}.

Para finalizar, apresento a você meu script de construção do XeLaTeX;)

#!/bin/bash
file="$1"
flag="-halt-on-error"

match=`head -n1 $file | grep %!`

if [[ $match ]]
    then
        if [ ${match:2:3} = ../ ]
            then
                cd .. &&
                target=${match:5:100}
            else
                target=${match:2:100}
        fi
    else
        target=$file
fi
rubber -c 'set arguments -shell-escape' -f -m xelatex -W all $target

exit 0
mreq
fonte
Pensamento inteligente. Durante o teste do meu xslt, apenas adiciono comentários apontando para os nomes dos arquivos de entrada / saída e depois uso o script de construção para executar o xslt. Obrigado!
Erikxiv