SLAX脚本语言:XSLT的另一种语法
摘要
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: 一种编程语言。随时随地,人人可用。
XS是一种新的编程语言,以单个静态链接的二进制文件形式分发,其中包含编译器、语言服务器、调试器、格式化器、代码检查器、测试运行器、性能分析器和包管理器。它可以在多个平台上无需修改地运行,包括Linux、macOS、Windows、WASI、iOS、Android、ESP32和Raspberry Pi,并提供多种后端,包括JIT、虚拟机以及到C和JavaScript的转译器。
将 Python 转译为 Lisp
LispE 是 NAVER 推出的一款开源 Lisp 方言,兼具函数式与数组编程特性,并支持 PyTorch、llama.cpp 以及 MLX 等 AI 库。该语言既可作为原生应用运行,也可打包为支持多线程与现代函数式编程特性的 WebAssembly 库。
AgentSPEX:一种智能体规范与执行语言
AgentSPEX 提出了一种领域专用语言,用于构建模块化、可解释的大模型智能体工作流,具备显式控制流、状态管理与可视化编辑器,性能优于现有 Python 耦合框架。
Xs of Y – 每局自动命名的roguelike游戏,用4千行代码编写
Xs of Y 是一款用名为 let-go 的自定义Lisp方言编写的roguelike游戏,每局都会生成新的标题、任务和符文映射。游戏具有独特的基于s表达式的魔法系统,可以原生运行或通过WASM在浏览器中运行。
run-llama/liteparse
LiteParse 是 run-llama 推出的一个独立的开源 PDF 解析工具,提供快速、本地的空间文本提取及边界框,支持多种编程语言和平台。