SaxonHe (saxon_he v12.5.2)

Copy Markdown

Wrapper alrededor de Saxon-HE (XSLT 3.0 / XQuery 3.1).

Mirror del paquete Node @saxon-he/cli.

Modo de invocación

Saxon expone dos comandos: transform (XSLT) y query (XQuery). Esta librería invoca esos binarios directamente vía System.cmd/3 — no arranca un JVM con -jar. Esto significa que necesitas tener transform y/o query accesibles en tu PATH (o pasar binary: explícito en new/1).

En macOS con Homebrew, el binario saxon viene en /opt/homebrew/Cellar/saxon/<version>/bin/saxon. Para tener un comando transform global puedes hacer:

sudo ln -sf /opt/homebrew/Cellar/saxon/12.9/bin/saxon /usr/local/bin/transform

Submódulos

Ejemplo

{:ok, cadena} =
  SaxonHe.Transform.new()
  |> SaxonHe.Transform.s("comprobante.xml")
  |> SaxonHe.Transform.xsl("cadenaoriginal.xslt")
  |> SaxonHe.Transform.run()

Configuración legacy del JAR

saxon_jar_path/0 sigue disponible para quien necesite construir un java -jar por su cuenta, pero la librería ya no lo usa internamente.

Summary

Functions

true si el binario dado se puede invocar (está en PATH o es ruta absoluta a un ejecutable). Default: transform.

Ejecuta <binary> <args> con System.cmd/3.

Devuelve la ruta configurada al JAR de Saxon-HE.

Functions

available?(binary \\ "transform")

@spec available?(String.t()) :: boolean()

true si el binario dado se puede invocar (está en PATH o es ruta absoluta a un ejecutable). Default: transform.

run(binary, args, opts \\ [])

@spec run(String.t(), [String.t()], keyword()) ::
  {:ok, String.t()}
  | {:error, {integer(), String.t()}}
  | {:error, {:binary_not_found, String.t()}}

Ejecuta <binary> <args> con System.cmd/3.

Opciones

  • :silent_stderr (default false) — combina stderr con stdout y lo descarta (stderr_to_stdout: true, into: ""). Útil para silenciar warnings de Saxon (Ambiguous rule match, etc).
  • :cmd_opts — opciones extra para System.cmd/3.

Devuelve {:ok, stdout} si exit code 0, {:error, {status, output}} si no, o {:error, {:binary_not_found, binary}} si el ejecutable no se encuentra.

saxon_jar_path()

@spec saxon_jar_path() :: String.t()

Devuelve la ruta configurada al JAR de Saxon-HE.

Resuelve en orden:

  1. Variable de entorno SAXON_JAR.
  2. config :saxon_he, :jar_path, "/path/to/saxon-he-12.jar".

Lanza si no está configurada. Mantenido para compatibilidad — la librería ya no lo usa internamente; ahora invoca el binario transform/query.