sort
语法
sort expression {;
case-order "upper-first" | "lower-first";
data-type "text" | "number" | type-name;
order "ascending" | "descending";
}
描述
控制 和for-eachapply-templates语句循环访问当前节点列表的顺序。默认情况下,for-eachand apply-templates 语句会按文档顺序考虑节点,但该sort语句在循环访问节点列表之前定义顺序。紧sort跟在 or apply-templates 语句之后for-each插入语句。sort仅在首次启动循环时处理该语句。
该 sort 语句有一个可选的 XPath 表达式和三个可选参数: case-order、 data-type和 order。XPath 表达式确定用于排序的每个节点的比较字符串。该脚本以节点作为其上下文计算表达式,然后将结果转换为该节点的比较字符串。如果未指定 XPath 表达式,则默认值为“.”,这将导致比较列表中每个节点的字符串内容。特定于 SLAX 的运算符(如 == 和 _)不能在表达式字符串中使用。 sort 如果语句不包含任何可选参数,则根据每个节点的字符串值对列表进行排序。
该sort语句不会对底层 XML 数据结构进行永久排序,只会对 or apply-templates 语句使用的for-each当前节点列表的顺序进行排序。可以将多个sort语句分配给单个for-each语句或语句apply-templates。按顺序应用它们,直到发现差异。
属性
expression |
XPath 表达式,用于确定用于排序的每个节点的比较字符串。默认值为“.”。 |
case-order |
指定是先小写排序还是先大写排序。可接受的值为“低优先”或“高优先”。默认值为“上优先”。 |
data-type |
指定元素类型,该类型确定是执行数字、词法还是其他排序。可接受的值为“数字”和“文本”。默认值为“文本”。
|
order |
指定是按升序还是降序排序。可接受的值为“降序”或“升序”。默认值为“升序”。 |
SLAX 示例
以下示例 SLAX 脚本执行 Junos XML API get-interface-information 命令并解析生成的输出。循环打印 for-each 设备上每个物理接口的名称,按升序排序。
version 1.1;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
match / {
<op-script-results> {
var $results = jcs:invoke("get-interface-information");
for-each ($results/physical-interface/name) {
sort . {
data-type "text";
order "ascending";
}
<interface-name> .;
}
}
}
发布信息
SLAX 语言 1.1 版中引入的语句,Junos OS 12.2 版及更高版本中支持该语言。