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에서 소개된 명령문입니다.