SLAX 기능 개요
Junos OS 릴리스 12.2 이상에서 지원되는 SLAX 언어의 버전 1.1은 기능을 지원합니다. 스크립트의 복잡성이 증가하거나 코드 세그먼트가 여러 곳에 나타나면 코드를 모듈화하고 기능을 생성할 수 있습니다. 함수는 인수를 수용하고 명시적으로 호출된 경우에만 실행됩니다.
Junos OS Release 14.2 이상에서 지원되는 SLAX 언어의 버전 1.2는 템플릿 및 기능 모두에 대한 인수로서 SLAX 요소를 지원합니다.
기능은 템플릿에 비해 다음과 같은 여러 이점을 제공합니다.
인수는 이름이 아닌 위치에 의해 전달됩니다.
반환 값은 결과 트리 패킷 조각이 아닌 객체가 될 수 있습니다.
표현식에서 함수를 사용할 수 있습니다.
기능은 동적으로 해결될 수 있습니다(EXSLT
dyn:evaluate()
를 사용).
SLAX에서는 스크립트에서 기능 정의를 최상위 명령문으로 정의합니다. 기능 정의는 키워드, 기능 이름, 인수 집합 및 중괄호 구분된 코드 블록으로 구성됩니다 function
. 기능 이름은 적격 이름이어야 합니다. 인수 목록은 함수 호출에 따라 위치적으로 할당되는 매개 변수 이름의 쉼표로 구분된 목록입니다. 후행 인수는 기본값을 가질 수 있습니다. 또는 명령문을 사용하여 함수 블록 내에서 기능 매개변수를 정의할 param
수 있습니다. 구문은 다음과 같습니다.
function function-name (argument-list) { ... result return-value; }
function function-name () { param param-name1; param param-name2; param param-name3 = default-value; ... result return-value; }
반환 값은 확장 값, XML 요소 또는 XPath 표현식 또는 반환할 값을 내보내는 명령어 집합이 될 수 있습니다.
함수 호출에서 정의보다 인수가 적은 경우, 기본값은 추적 인수에 사용됩니다. 함수 호출에 정의보다 더 많은 인수가 있는 경우 함수 호출은 오류를 생성합니다.
다음 예제에서는 세 가지 매개 변수width
height
scale
가 있는 함수size
를 정의합니다. 기본값 scale
은 1입니다. 함수 호출 인수 목록에 인수가 scale
포함되지 않은 경우 계산은 해당 인수에 대해 1의 기본값을 사용합니다. 기능의 반환 값은 , 및 요소에 동봉된 변수의 width
산물입니다<size>
.scale
height
메인 매치 템플릿에서 기능 호출은 Source XML 파일의 각 graphic/dimension
요소에서 선택된 너비와 높이 데이터를 사용합니다. 스크립트가 기능을 평가하고 명령 copy-of
문이 결과 트리에 대한 반환 값을 요소의 <out>
내용으로 내보내줍니다.
version 1.1; ns my = "http://www.example.com/myfunctions"; function my:size ($width, $height, $scale = 1) { result <size> { expr $width * $height * $scale; } } match / { for-each (graphic/dimension) { <out> { copy-of my:size((width/.), (height/.)); } } }
다음 기능 정의는 쉼표로 구분된 목록이 아닌 명령문을 사용하여 param
매개변수를 정의합니다. 기능의 동작은 이전 예제와 동일합니다.
version 1.1; ns my = "http://www.example.com/myfunctions"; function my:size () { param $width; param $height; param $scale = 1; result <size> { expr $width * $height * $scale; } } match / { for-each (graphic/dimension) { <out> { copy-of my:size((width/.), (height/.)); } } }