@designliquido/lmht-js v0.4.9
lmht-js
Biblioteca de transformação de documentos LMHT para HTML para JavaScript.
Formas de uso
Atual, versão 0.3.0 em diante
import { ConversorLmht } from "@designliquido/lmht-js";
const conversorLmht = new ConversorLmht();
const resultado = conversorLmht.converterPorArquivo("meu-arquivo.lmht");
console.log(resultado);
import { ConversorLmht } from "@designliquido/lmht-js";
const conversorLmht = new ConversorLmht();
const resultado = conversorLmht.converterPorTexto("<lmht><cabeca><titulo>Teste</titulo></cabeca><corpo>Teste</corpo></lmht>");
console.log(resultado); // Resultado: <html><head><title>Teste</title></head><body>Teste</body></html>
import { ConversorHtml } from "@designliquido/lmht-js";
const conversorHtml = new ConversorHtml();
const resultado = conversorHtml.converterPorArquivo("meu-arquivo.html");
console.log(resultado);
import { ConversorHtml } from "@designliquido/lmht-js";
const conversorHtml = new ConversorHtml();
const resultado = conversorHtml.converterPorTexto("<html><head><title>Teste</title></head><body>Teste</body></html>");
console.log(resultado); // Resultado: <lmht><cabeca><titulo>Teste</titulo></cabeca><corpo>Teste</corpo></lmht>
Até a versão 0.2.0
Em versões anteriores, os métodos de conversão eram assíncronos.
import { ConversorLmht } from "@designliquido/lmht-js";
const conversorLmht = new ConversorLmht();
conversorLmht.converterPorArquivo("meu-arquivo.lmht").then(resultado => {
console.log(resultado);
});
import { ConversorHtml } from "@designliquido/lmht-js";
const conversorHtml = new ConversorHtml();
conversorHtml.converterPorArquivo("meu-arquivo.lmht").then(resultado => {
console.log(resultado);
});
Conformidade com especificação
lmht-js
segue a especificação mais recente de LMHT. O projeto da especificação é referenciado aqui como um submódulo git. Para sincronizar a especificação, use o comando:
git submodule update --init --recursive --remote
Versão 0.2.0 e saxon-js
Até a versão 0.2.0, usávamos a biblioteca saxon-js
. Essa biblioteca tornou-se um problema por alguns motivos:
- Documentação incompleta e de baixa qualidade: https://www.saxonica.com/saxon-js/documentation2/index.html;
- Apesar de ter uma licença gratuita, os fontes não são abertos;
- Escrita em JavaScript puro e tipagem fraca;
- Não funciona se usada em uma extensão do Visual Studio Code, que em teoria é Node.js, mas algo acontece ao importarmos a dependência e um erro aparece.
Mantemos o suporte a versões anteriores por questões de retrocompatibilidade. A biblioteca atual usada para processamento XSLT é a xslt-processor
, de código aberto e também mantida pela Design Líquido.
Especificação e arquivos .sef.json
saxon-js
pede por arquivos .sef.json
, que podem ser gerados pelos comandos abaixo:
PowerShell:
xslt3 -t "-xsl:especificacao/lmht.xslt" "-export:lmht.sef.json" -nogo -relocate
xslt3 -t "-xsl:especificacao/lmht-reverso-xml10.xslt" "-export:lmht-reverso-xml10.sef.json" -nogo -relocate
bash, zsh:
xslt3 -t -xsl:especificacao/lmht.xslt -export:lmht.sef.json -nogo -relocate
xslt3 -t -xsl:especificacao/lmht-reverso.xslt -export:lmht-reverso.sef.json -nogo -relocate
O arquivo XSLT da especificação ou da especificação reversa também podem ser usados, mas isso causa um atraso na carga de pelo menos 2 segundos por arquivo, que é o tempo que leva para compilar a especificação de XSLT para .sef.json
. Para entender como isso funciona, verifique o fonte objeto-especificacao.ts
.
Assim sendo, os arquivos .sef.json
correspondentes ao commit apontado pelo submódulo são versionados neste diretório raiz, e distribuídos juntamente com o pacote NPM.
Compatibilidade com XML
SaxonJS não trabalha com XML 1.1, e por isso a especificação com XML 1.0 é usada aqui.
2 months ago
3 months ago
3 months ago
3 months ago
4 months ago
9 months ago
6 months ago
6 months ago
8 months ago
8 months ago
8 months ago
6 months ago
6 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago