sort
구문
sort expression {;
case-order "upper-first" | "lower-first";
data-type "text" | "number" | type-name;
order "ascending" | "descending";
}
설명
및 apply-templates 문이 현재 노드 목록에서 반복되는 순서를 for-each 제어합니다. 기본적으로 및 apply-templates 문은 문서 순서의 노드를 고려하지만 문은 for-each sort 노드 목록을 반복하기 전에 순서를 정의합니다. sort 또는 apply-templates 문 바로 뒤에 for-each 문을 삽입합니다. 문은 루프가 sort 처음 시작될 때만 처리됩니다.
명령문에는 sort 선택적 XPath 표현식과 세 개의 선택적 매개 변수( case-order, , data-type및 )가 order있습니다. XPath 표현식은 정렬에 사용되는 각 노드의 비교 문자열을 판별합니다. 스크립트는 노드를 컨텍스트로 사용하여 식을 평가한 다음, 결과를 해당 노드에 대한 비교 문자열로 변환합니다. XPath 식을 지정하지 않으면 기본값은 "."이며, 목록에 있는 각 노드의 문자열 내용을 비교합니다. == 및 _와 같은 SLAX 관련 연산자는 표현식 문자열 내에서 사용할 수 없습니다. 문에 sort 선택적 매개 변수가 포함되어 있지 않으면 각 노드의 문자열 값을 기준으로 목록이 정렬됩니다.
문은 sort 기본 XML 데이터 구조를 영구적으로 정렬하지 않고 또는 apply-templates 문에서 사용 중인 현재 노드 목록의 순서만 정렬합니다for-each. 하나의 for-each 또는 apply-templates 문에 여러 sort 개의 문을 할당할 수 있습니다. 차이가 발견 될 때까지 순서대로 적용됩니다.
특성
expression |
정렬에 사용되는 각 노드의 비교 문자열을 결정하는 XPath 식입니다. 기본값은 "."입니다. |
case-order |
소문자를 먼저 정렬할지 아니면 대문자를 먼저 정렬할지를 지정합니다. 사용할 수 있는 값은 "lower-first" 또는 "upper-first"입니다. 기본값은 "upper-first"입니다. |
data-type |
숫자 정렬, 어휘 정렬 또는 다른 정렬 중 어떤 정렬을 수행할지를 결정하는 요소 유형을 지정합니다. 사용할 수 있는 값에는 "number"와 "text"가 있습니다. 기본값은 "text"입니다. "text"로 설정하면 |
order |
오름차순 또는 내림차순으로 정렬할지 여부를 지정합니다. 사용할 수 있는 값에는 "descending" 또는 "ascending"이 있습니다. 기본값은 "오름차순"입니다. |
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> .;
}
}
}
릴리스 정보
Junos OS 릴리스 12.2 이상에서 지원되는 SLAX 언어 버전 1.1에서 소개된 명령문입니다.