SLAX脚本语言:XSLT的另一种语法

Hacker News Top 工具

摘要

SLAX是XSLT的另一种语法,采用类似C/Perl的语法,以提高可读性和可维护性。libslax开源实现可以解析并执行SLAX文件。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/01 13:43

# XSLT 的另一种语法 来源:http://juniper.github.io/libslax/slax-manual.html ## SLAX 脚本语言:XSLT 的另一种语法 slax\-manual ## 摘要 (http://juniper.github.io/libslax/slax-manual.html#doc_abstract) SLAX 是 XSLT(W3C 标准的 XML 到 XML 转换语言)的另一种语法。XSLT 功能强大,但其基于 XML 的语法在读写上较为繁琐。SLAX 采用类似 PERL 和 C 的语法,将 XSLT 的基本概念提升为一等语言结构,从而使得脚本更易于开发和维护。 本文档涵盖 SLAX 语言,首先进行概述,然后提供参考章节列出所有 SLAX 语句。SLAX 还拥有许多内置函数,这些也在文档中进行了介绍。 SLAX 的实现可在名为 libslax 的开源项目中获取。libslax 基于 libxslt 和 libxml2,可解析并执行 SLAX 文件,并能在 SLAX 和 XSLT 之间进行转换。其中还包含调试器和性能分析器。 libslax 最初由 Juniper Networks 作为 JUNOS 操作系统的一部分开发,并以 BSD 许可证发布。详情请参见“Copyright”文件。 ## 目录 (http://juniper.github.io/libslax/slax-manual.html#doc.toc) - 1. SLAX(概述)(http://juniper.github.io/libslax/slax-manual.html#slax-overview) - 1.1 窥探内部 (http://juniper.github.io/libslax/slax-manual.html#peeking-under-the-hood) - 1.2 复合技术 (http://juniper.github.io/libslax/slax-manual.html#composite-technologies) - 1.2.1 XML 概念 (http://juniper.github.io/libslax/slax-manual.html#xml-concepts) - 1.2.2 XPath 概念 (http://juniper.github.io/libslax/slax-manual.html#xpath-concepts) - 1.2.3 XSLT 概念 (http://juniper.github.io/libslax/slax-manual.html#xslt-concepts) - 1.2.3.1 模板 (http://juniper.github.io/libslax/slax-manual.html#templates) - 1.2.3.2 未命名模板 (http://juniper.github.io/libslax/slax-manual.html#unnamed-templates) - 1.2.3.3 参数 (http://juniper.github.io/libslax/slax-manual.html#parameters) - 1.2.3.4 变量 (http://juniper.github.io/libslax/slax-manual.html#variables) - 1.2.3.5 可变变量 (http://juniper.github.io/libslax/slax-manual.html#mutable-variables) - 1.2.3.6 字符编码 (http://juniper.github.io/libslax/slax-manual.html#character-encoding) - 1.2.3.7 编程结构 (http://juniper.github.io/libslax/slax-manual.html#programming-constructs) - 1.2.3.8 递归 (http://juniper.github.io/libslax/slax-manual.html#recursion) - 1.2.3.9 上下文(点)(http://juniper.github.io/libslax/slax-manual.html#context-dot) - 1.2.4 其他资源 (http://juniper.github.io/libslax/slax-manual.html#additional-resources) - 2. 使用 SLAX 构建内容 (http://juniper.github.io/libslax/slax-manual.html#building-content-with-slax) - 2.1 表达式 (http://juniper.github.io/libslax/slax-manual.html#expressions) - 2.1.1 将元素用作函数参数 (http://juniper.github.io/libslax/slax-manual.html#using-elements-as-function-arguments) - 2.1.2 expr (http://juniper.github.io/libslax/slax-manual.html#expr) - 2.1.3 uexpr (http://juniper.github.io/libslax/slax-manual.html#uexpr) - 2.2 元素 (http://juniper.github.io/libslax/slax-manual.html#elements) - 2.2.1 XML 元素 (http://juniper.github.io/libslax/slax-manual.html#xml-elements) - 2.2.2 “element”语句 (http://juniper.github.io/libslax/slax-manual.html#element) - 2.2.3 JSON 元素 (http://juniper.github.io/libslax/slax-manual.html#json-elements) - 2.2.3.1 JSON 元素的属性 (http://juniper.github.io/libslax/slax-manual.html#json-attributes) - 2.2.3.2 在 XML 中编码 JSON 数组 (http://juniper.github.io/libslax/slax-manual.html#json-arrays) - 2.2.3.3 编码无效的 JSON 名称 (http://juniper.github.io/libslax/slax-manual.html#json-names) - 2.3 属性 (http://juniper.github.io/libslax/slax-manual.html#attributes) - 2.3.1 XML 属性 (http://juniper.github.io/libslax/slax-manual.html#xml-attributes) - 2.3.2 “attribute”语句 (http://juniper.github.io/libslax/slax-manual.html#attribute) - 2.4 属性集 (http://juniper.github.io/libslax/slax-manual.html#attribute-sets) - 2.4.1 “attribute‐set”语句 (http://juniper.github.io/libslax/slax-manual.html#attribute-set) - 2.4.2 “use‐attribute‐sets”语句 (http://juniper.github.io/libslax/slax-manual.html#use-attribute-sets) - 2.5 命名空间 (http://juniper.github.io/libslax/slax-manual.html#namespaces) - 2.5.1 “ns”语句 (http://juniper.github.io/libslax/slax-manual.html#ns) - 2.5.2 “extension”语句 (http://juniper.github.io/libslax/slax-manual.html#extension) - 2.5.3 “exclude”语句 (http://juniper.github.io/libslax/slax-manual.html#exclude) - 2.5.4 保留前缀 (http://juniper.github.io/libslax/slax-manual.html#reserved-prefixes) - 2.5.5 前缀的默认命名空间 (http://juniper.github.io/libslax/slax-manual.html#default-namespaces-for-prefixes) - 2.6 处理指令 (http://juniper.github.io/libslax/slax-manual.html#processing-instructions) - 2.6.1 “processing‐instruction”语句 (http://juniper.github.io/libslax/slax-manual.html#processing-instruction) - 2.7 注释 (http://juniper.github.io/libslax/slax-manual.html#comments) - 2.7.1 “comment”语句 (http://juniper.github.io/libslax/slax-manual.html#comment) - 2.8 复制内容 (http://juniper.github.io/libslax/slax-manual.html#copying-content) - 2.8.1 “copy‐of”语句 (http://juniper.github.io/libslax/slax-manual.html#copy-of) - 2.8.2 “copy‐node”语句 (http://juniper.github.io/libslax/slax-manual.html#copy-node) - 2.9 格式化 (http://juniper.github.io/libslax/slax-manual.html#formatting) - 2.9.1 “number”语句 (http://juniper.github.io/libslax/slax-manual.html#number) - 3. 模板 (http://juniper.github.io/libslax/slax-manual.html#templates-2) - 3.1 命名模板 (http://juniper.github.io/libslax/slax-manual.html#named-templates) - 3.1.1 “template”语句 (http://juniper.github.io/libslax/slax-manual.html#template) - 3.1.2 “call”语句 (http://juniper.github.io/libslax/slax-manual.html#call) - 3.1.2.1 在“call”中使用“with”语句 (http://juniper.github.io/libslax/slax-manual.html#with-call) - 3.1.2.2 将元素用作参数值 (http://juniper.github.io/libslax/slax-manual.html#using-elements-as-argument-values) - 3.1.2.3 “match”语句 (http://juniper.github.io/libslax/slax-manual.html#named-match) - 3.1.3 带 XSLT 转换的示例 (http://juniper.github.io/libslax/slax-manual.html#example-with-xslt-translation) - 3.2 匹配模板 (http://juniper.github.io/libslax/slax-manual.html#match-templates) - 3.2.1 “match”语句 (http://juniper.github.io/libslax/slax-manual.html#match) - 3.2.2 “apply‐templates”语句 (http://juniper.github.io/libslax/slax-manual.html#apply-templates) - 3.2.3 “apply‐imports”语句 (http://juniper.github.io/libslax/slax-manual.html#apply-imports) - 3.2.4 “mode”语句 (http://juniper.github.io/libslax/slax-manual.html#mode) - 3.2.5 “priority”语句 (http://juniper.github.io/libslax/slax-manual.html#priority) - 3.2.6 “param”语句 (http://juniper.github.io/libslax/slax-manual.html#param) - 3.2.7 “with”语句 (http://juniper.github.io/libslax/slax-manual.html#with) - 3.3 “main”模板 (http://juniper.github.io/libslax/slax-manual.html#main-template) - 4. 编程结构 (http://juniper.github.io/libslax/slax-manual.html#programming-constructs-2) - 4.1 变量 (http://juniper.github.io/libslax/slax-manual.html#main-var) - 4.1.1 “var”语句 (http://juniper.github.io/libslax/slax-manual.html#var) - 4.1.2 “mvar”语句 (http://juniper.github.io/libslax/slax-manual.html#mvar) - 4.2 结果树片段 (http://juniper.github.io/libslax/slax-manual.html#result-tree-fragments) - 4.2.1 “:=”运算符 (http://juniper.github.io/libslax/slax-manual.html#colon-equals) - 4.3 控制语句 (http://juniper.github.io/libslax/slax-manual.html#control-statements) - 4.3.1 “if”和“else”语句 (http://juniper.github.io/libslax/slax-manual.html#if-else) - 4.3.2 “for‐each”语句 (http://juniper.github.io/libslax/slax-manual.html#for-each) - 4.3.3 “for”语句 (http://juniper.github.io/libslax/slax-manual.html#for) - 4.3.4 “while”语句 (http://juniper.github.io/libslax/slax-manual.html#while) - 4.3.5 “sort”语句 (http://juniper.github.io/libslax/slax-manual.html#sort) - 4.3.6 “…”运算符 (http://juniper.github.io/libslax/slax-manual.html#dotdotdot) - 4.3.7 “?:”运算符 (http://juniper.github.io/libslax/slax-manual.html#question-colon) - 4.4 函数 (http://juniper.github.io/libslax/slax-manual.html#functions) - 4.4.1 “function”语句 (http://juniper.github.io/libslax/slax-manual.html#function) - 4.4.2 “result”语句 (http://juniper.github.io/libslax/slax-manual.html#result) - 5. 其他 SLAX 语句 (http://juniper.github.io/libslax/slax-manual.html#additional-slax-statements) - 5.1 “#!”行 (http://juniper.github.io/libslax/slax-manual.html#the--line) - 5.2 组合脚本(“include”和“import”)(http://juniper.github.io/libslax/slax-manual.html#include-import) - 5.3 “key”语句 (http://juniper.github.io/libslax/slax-manual.html#key) - 5.4 “decimal‐format”语句 (http://juniper.github.io/libslax/slax-manual.html#decimal-format) - 5.5 消息 (http://juniper.github.io/libslax/slax-manual.html#messages) - 5.5.1 “message”语句 (http://juniper.github.io/libslax/slax-manual.html#message) - 5.5.2 “terminate”语句 (http://juniper.github.io/libslax/slax-manual.html#terminate) - 5.5.3 “trace”语句 (http://juniper.github.io/libslax/slax-manual.html#trace) - 5.6 “output‐method”语句 (http://juniper.github.io/libslax/slax-manual.html#output-method) - 5.7 “fallback”语句 (http://juniper.github.io/libslax/slax-manual.html#fallback) - 5.8 空白处理 (http://juniper.github.io/libslax/slax-manual.html#whitespace-handling) - 5.8.1 “strip‐space”语句 (http://juniper.github.io/libslax/slax-manual.html#strip-space) - 5.8.2 “preserve‐space”语句 (http://juniper.github.io/libslax/slax-manual.html#preserve-space) - 5.9 “version”语句 (http://juniper.github.io/libslax/slax-manual.html#version) - 6. SLAX 函数 (http://juniper.github.io/libslax/slax-manual.html#slax-functions) - 6.1 SLAX 外部函数 (http://juniper.github.io/libslax/slax-manual.html#slax-external-functions) - 6.1.1 slax:base64‐decode (http://juniper.github.io/libslax/slax-manual.html#slaxbase64-decode) - 6.1.2 slax:base64‐encode (http://juniper.github.io/libslax/slax-manual.html#slaxbase64-encode) - 6.1.3 slax:break‐lines (http://juniper.github.io/libslax/slax-manual.html#slaxbreak-lines) - 6.1.4 slax:dampen (http://juniper.github.io/libslax/slax-manual.html#slaxdampen) - 6.1.5 slax:document (http://juniper.github.io/libslax/slax-manual.html#slaxdocument) - 6.1.6 slax:evaluate (http://juniper.github.io/libslax/slax-manual.html#slaxevaluate) - 6.1.7 slax:first‐of (http://juniper.github.io/libslax/slax-manual.html#slaxfirst-of) - 6.1.8 slax:get‐command (http://juniper.github.io/libslax/slax-manual.html#slaxget-command) - 6.1.9 slax:get‐input (http://juniper.github.io/libslax/slax-manual.html#slaxget-input) - 6.1.10 slax:get‐secret (http://juniper.github.io/libslax/slax-manual.html#slaxget-secret) - 6.1.11 slax:is‐empty (http://juniper.github.io/libslax/slax-manual.html#slaxis-empty) - 6.1.12 slax:printf (http://juniper.github.io/libslax/slax-manual.html#slaxprintf) - 6.1.13 slax:regex (http://juniper.github.io/libslax/slax-manual.html#slaxregex) - 6.1.14 slax:sleep (http://juniper.github.io/libslax/slax-manual.html#slaxsleep) - 6.1.15 slax:split (http://juniper.github.io/libslax/slax-manual.html#slaxsplit) - 6.1.16 slax:sysctl (http://juniper.github.io/libslax/slax-manual.html#slaxsysctl) - 6.1.17 slax:syslog (http://juniper.github.io/libslax/slax-manual.html#slaxsyslog) - 7. libslax 发行版 (http://juniper.github.io/libslax/slax-manual.html#the-libslax-distribution) - 7.1 libslax 库 (http://juniper.github.io/libslax/slax-manual.html#the-libslax-library) - 7.2 slaxproc:SLAX 处理器 (http://juniper.github.io/libslax/slax-manual.html#slaxproc-the-slax-processor) - 7.2.1 参数处理 (http://juniper.github.io/libslax/slax-manual.html#slaxproc-arguments) - 7.2.1.1 “#!”支持 (http://juniper.github.io/libslax/slax-manual.html#pound-bang) - 7.2.2 命令行选项 (http://juniper.github.io/libslax/slax-manual.html#command-line-options) - 7.2.2.1 模式选项 (http://juniper.github.io/libslax/slax-manual.html#slaxproc-modes) - 7.2.2.2 行为选项 (http://juniper.github.io/libslax/slax-manual.html#slaxproc-options) - 7.3 SLAX 调试器(sdb)(http://juniper.github.io/libslax/slax-manual.html#sdb) - 7.4 SLAX 性能分析器 (http://juniper.github.io/libslax/slax-manual.html#profiler) - 7.5 callflow (http://juniper.github.io/libslax/slax-manual.html#callflow) - 8. libslax 中的扩展库 (http://juniper.github.io/libslax/slax-manual.html#libslax-extensions) - 8.1 “bit”扩展库 (http://juniper.github.io/libslax/slax-manual.html#the-bit-extension-library-) - 8.2 “curl”扩展库 (http://juniper.github.io/libslax/slax-manual.html#the-curl-extension-library) - 8.2.1 curl 元素 (http://juniper.github.io/libslax/slax-manual.html#curl-elements) - 8.2.1.1 `<cc>` (http://juniper.github.io/libslax/slax-manual.html#cc) - 8.2.1.2 `<connect-timeout>` (http://juniper.github.io/libslax/slax-manual.html#connect-timeout) - 8.2.1.3 `<contents>` (http://juniper.github.io/libslax/slax-manual.html#contents) - 8.2.1.4 `<content-type>` (http://juniper.github.io/libslax/slax-manual.html#content-type) - 8.2.1.5 `<errors>` (http://juniper.github.io/libslax/slax-manual.html#errors) - 8.2.1.6 `<fail-on-error>` (http://juniper.github.io/libslax/slax-manual.html#fail-on-error) - 8.2.1.7 `<format>` (http://juniper.github.io/libslax/slax-manual.html#format) - 8.2.1.8 `<from>` (http://juniper.github.io/libslax/slax-manual.html#from) - 8.2.1.9 `<header>` (http://juniper.github.io/libslax/slax-manual.html#header) - 8.2.1.10 `<insecure>` (http://juniper.github.io/libslax/slax-manual.html#insecure) - 8.2.1.11 `<local>` (http://juniper.github.io/libslax/slax-manual.html#local) - 8.2.1.12 `<method>` (http://juniper.github.io/libslax/slax-manual.html#method) - 8.2.1.13 `<param>` (http://juniper.github.io/libslax/slax-manual.html#param-2) - 8.2.1.14 `<password>` (http://juniper.github.io/libslax/slax-manual.html#password) - 8.2.1.15 `<secure>` (http://juniper.github.io/libslax/slax-manual.html#secure) - 8.2.1.16 `<server>` (http://juniper.github.io/libslax/slax-manual.html#server) - 8.2.1.17 `<subject>` (http://juniper.github.io/libslax/slax-manual.html#subject) - 8.2.1.18 `<timeout>` (http://juniper.github.io/libslax/slax-manual.html#timeout) - 8.2.1.19 `<to>` (http://juniper.github.io/libslax/slax-manual.html#to) - 8.2.1.20 `<upload>` (http://juniper.github.io/libslax/slax-manual.html#upload) - 8.2.1.21 `<url>` (http://juniper.github.io/libslax/slax-manual.html#url) - 8.2.1.22 `<username>` (http://juniper.github.io/libslax/slax-manual.html#username) - 8.2.1.23 `<...>` (http://juniper.github.io/libslax/slax-manual.html#...)

相似文章

XS: 一种编程语言。随时随地,人人可用。

Hacker News Top

XS是一种新的编程语言,以单个静态链接的二进制文件形式分发,其中包含编译器、语言服务器、调试器、格式化器、代码检查器、测试运行器、性能分析器和包管理器。它可以在多个平台上无需修改地运行,包括Linux、macOS、Windows、WASI、iOS、Android、ESP32和Raspberry Pi,并提供多种后端,包括JIT、虚拟机以及到C和JavaScript的转译器。

将 Python 转译为 Lisp

Lobsters Hottest

LispE 是 NAVER 推出的一款开源 Lisp 方言,兼具函数式与数组编程特性,并支持 PyTorch、llama.cpp 以及 MLX 等 AI 库。该语言既可作为原生应用运行,也可打包为支持多线程与现代函数式编程特性的 WebAssembly 库。

AgentSPEX:一种智能体规范与执行语言

Hugging Face Daily Papers

AgentSPEX 提出了一种领域专用语言,用于构建模块化、可解释的大模型智能体工作流,具备显式控制流、状态管理与可视化编辑器,性能优于现有 Python 耦合框架。

run-llama/liteparse

GitHub Trending (daily)

LiteParse 是 run-llama 推出的一个独立的开源 PDF 解析工具,提供快速、本地的空间文本提取及边界框,支持多种编程语言和平台。