Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SLAX 语句概述

本节列出了一些常用的 SLAX 语句,以及简要示例和 XSLT 等效项。

for-each 语句

SLAX for-each 语句的功能与元素类似 <xsl:for-each> 。语句由 for-each 关键字、括号分隔的表达式和大括号分隔的块组成。该 for-each 语句告诉处理器将一组节点聚集在一起并逐个处理它们。节点由指定的 XPath 表达式选择。然后根据代码块中的 for-each 指令对每个节点进行处理。

对于与 XPath 表达式匹配的每个节点,对指令中的 for-each 代码进行递归计算。也就是说,当前上下文被移动到子句选择 for-each 的每个节点,并且处理是相对于该当前上下文进行的。

在以下示例中,该 inventory 变量存储库存层次结构。该 for-each 语句递归处理 chassis-sub-module 作为 chassis-module 节点子节点的每个节点,该节点是节点的 chassis 子节点。 chassis-sub-module 对于每个包含 part-number 值等于指定部件号的元素, message 将创建一个元素,其中包含机箱模块的名称以及机箱子模块的名称和说明。

XSLT 等效项为:

if、else if 和 else 语句

SLAX 支持ifelse if、 和else语句。该if语句是一个条件结构,如果指定的 XPath 表达式的计算结果为 true,则将导致处理指令。该if构造可以有一个或多个关联else if的子句,每个子句都测试一个 XPath 表达式。如果语句中的if表达式的计算结果为 false,则处理器将检查每个else if表达式。如果语句的计算结果为 true,则脚本将执行关联块中的指令,并忽略所有后续else if的 和 else 语句。可选else语句是在所有关联if的表达else-if式的计算结果均为 false 时执行的默认代码。如果所有 和 if else if 语句的计算结果均为 false,且该else语句不存在,则不执行任何操作。

括号中显示的表达式是扩展的 XPath 表达式,它支持用双等号 (==) 代替 XPath 的单等号 (=)。

在脚本处理过程中,if没有关联else ifelse语句的语句将转换为元素<xsl:if>else if如果存在 或 else 子句,则语句和关联else ififelse 块将转换为元素<xsl:choose>

XSLT 等效项为:

match 语句

您可以使用 match 语句指定基本匹配模板,后跟一个指定何时应允许使用模板的表达式,以及用一组大括号括起来的语句块。

XSLT 等效项为:

有关构造匹配模板的详细信息,请参阅 SLAX 模板概述

ns 语句

使用 SLAX ns 语句指定命名空间定义。它由 ns 关键字、前缀字符串、等号和命名空间 统一资源标识符 (URI) 组成。要定义默认命名空间,请仅 ns 使用关键字和命名空间 URI。

ns 句可以出现在语句之后 version 的样式表开头或任何块的开头。

当它出现在样式表的开头时, ns 语句可以包含 excludeextension 关键字。关键字指示分析器将命名空间前缀添加到 exclude-result-prefixes or extension-element-prefixes 属性。

XSLT 等效项为:

version 语句

所有 SLAX 样式表都必须以 version 语句开头,该语句指定 SLAX 语言的版本号。支持的版本包括 1.0、1.1 和 1.2。