귀하의 경험을 개선할 수 있도록 도와주십시오.

귀하의 의견을 알려주십시오.

2분이 소요되는 설문 조사에 시간을 내주시겠습니까?

close
keyboard_arrow_left
자동화 스크립팅 사용자 가이드
Table of Contents Expand all
list Table of Contents

이 기계 번역이 도움이 되었습니까?

starstarstarstarstar
Go to English page
면책 조항:

이 페이지는 타사 기계 번역 소프트웨어를 사용해 번역됩니다. 주니퍼 네트웍스에서는 우수한 품질의 번역을 제공하기 위한 합리적인 수준의 노력을 기울이지만 해당 컨텐츠의 정확성을 보장할 수 없습니다. 본 번역에 포함된 정보의 정확성과 관련해 의문이 있는 경우 영문 버전을 참조하시기 바랍니다. 다운로드 가능한 PDF는 영어로만 제공됩니다.

XSLT 매개 변수 개요

date_range 13-Jan-21

매개 변수는 명명되거나 이름이 지정되지 않은 템플릿 중 하나에 전달될 수 있습니다. 템플릿 내에서 매개 변수를 선언해야 하며 달러 기호($)로 이름을 접두사하여 참조할 수 있습니다.

매개 변수 선언

매개 변수의 범위는 전역 또는 로컬일 수 있습니다. 스크립트 초기화에서 Junos OS 값이 설정된 매개 변수는 전역 매개변수로 정의되어야 합니다. 전역 매개 변수 선언은 스타일 시트 선언 바로 후에 배치됩니다. 스크립트는 전역 매개 변수에 기본 값을 할당할 수 있으며, 이는 Junos OS 매개 변수에 값을 주지 않는 경우에 사용됩니다.

content_copy zoom_out_map
<?xml version="1.0" standalone="yes"?>
    <xsl stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         xmlns:junos="http://xml.juniper.net/junos/*/junos"
         xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm"
         xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"
         xmlns:ext="http://xmlsoft.org/XSLT/namespace" version="1.0">

<!-- global parameter -->
<xsl:param name="interface1"/>

로컬 매개 변수는 블록의 시작 부분에 선언되어야 하며 해당 범위는 선언된 블록으로 제한됩니다. 템플릿 안에서는 태그와 name 속성을 사용하여 매개 변수를 <xsl:param> 선언합니다. 선택적으로 XPath 표현식을 포함할 수 있는 속성을 포함하여 각 매개 변수에 select 대한 기본값을 선언합니다. 매개 변수 없이 템플릿이 호출되면 기본 표현식이 평가되고 결과가 매개 변수에 할당됩니다. 템플릿에서 기본값을 정의하지 않으면 매개 변수가 빈 문자열로 기본값으로 지정됩니다.

다음 명명된 템플릿 print-host-name 은 매개 변수 message 를 선언하고 기본값을 정의합니다.

content_copy zoom_out_map
<xsl:template name="print-host-name">
    <xsl:param name="message" 
        select="concat('host-name: ', system/host-name)"/>
    <xsl:value-of select="$message"/>
</xsl:template>

템플릿은 매개 변수 이름을 달러 기호($)로 접두사하여 매개 변수의 값 message 에 액세스합니다.

통과 매개 변수

템플릿을 호출할 때 요소와 name 속성을 사용하여 인수를 템플릿으로 <xsl:with-param> 전달합니다. 속성의 <xsl:with-param> name 값은 실제 템플릿에 정의된 매개 변수의 이름과 일치해야 하며, 그렇지 않으면 매개변수가 무시됩니다. 선택적으로 템플릿에 전달한 각 매개 변수에 대해 속성 또는 요소의 <xsl:with-param> 내용을 사용하여 select 값을 정의할 수 있습니다.

템플릿에서 사용되는 매개 변수 값은 템플릿이 호출되는 방식에 따라 다릅니다. 템플릿이라고 부르는 print-host-name 다음 세 가지 예는 가능한 호출 환경을 보여줍니다.

템플릿을 호출하지만 특정 매개 변수에 <xsl:with-param> 대한 요소를 포함하지 않으면 템플릿에 정의된 기본 표현식이 평가되고 결과가 매개 변수에 할당됩니다. 템플릿에 해당 매개 변수에 대한 기본값이 없는 경우, 매개 변수는 빈 문자열로 기본값으로 지정됩니다. 다음 예제에서는 명명된 템플릿 print-host-name 을 호출하지만 호출에 매개 변수는 포함하지 않습니다. 이 경우, 명명된 템플릿은 템플릿에 print-host-name 정의된 매개 변수의 message 기본값을 사용하거나 기본값이 존재하지 않는 경우 빈 문자열을 사용합니다.

content_copy zoom_out_map
<xsl:template match="configuration">
    <xsl:call-template name="print-host-name"/>
</xsl:template>

템플릿을 호출하고 매개 변수를 포함하지만 호출 환경에서 매개 변수에 대한 값을 정의하지 않으면 스크립트는 이전에 초기화되었거나 매개 변수가 선언되지 않은 경우 오류를 생성합니다. 다음 예는 명명된 템플릿 print-host-name 을 호출하고 매개 변수에서 message 통과하지만 값을 포함하지 않습니다. 스크립트에서 선언 및 초기화되고 범위가 블록에 표시되는 경우 message , 의 message 현재 값이 사용됩니다. 스크립트에서 선언되지만 초기화되지 않은 경우 messagemessage 값은 빈 문자열이 됩니다. 선언되지 않은 경우 message 스크립트가 오류를 생성합니다.

content_copy zoom_out_map
<xsl:template match="configuration">
    <xsl:call-template name="print-host-name">
        <xsl:with-param name="message"/>
    </xsl:call-template>
</xsl:template>

템플릿을 호출하는 경우 매개 변수를 포함하고 매개 변수에 대한 값을 정의하면 템플릿은 제공된 값을 사용합니다. 다음 예제에서는 매개 변수와 정의된 값이 message 있는 명명된 템플릿 print-host-name 을 호출하므로 템플릿은 새 값을 사용합니다.

content_copy zoom_out_map
<xsl:template match="configuration">
    <xsl:call-template name="print-host-name">
        <xsl:with-param name="message" 
          select=concat"('Host-name passed in: ', system/host-name)"/>
    </xsl:call-template>
</xsl:template>

예: 매개 변수 및 일치 템플릿

다음 템플릿은 XML 문서의 루트와 /일치합니다. 그런 다음 출력 문서에 추가되는 ,이라는 <outside>요소를 생성하고 Junos OS 관리 프로세스(mgd)에 템플릿을 하위 트리에 configuration/system 재귀적으로 적용하도록 지시합니다. 매개 변수 host 는 일치하는 노드를 처리하는 데 사용됩니다. 매개 변수의 host 값은 구성 계층의 host-name [edit system] 수준에서 명령문의 값입니다.

content_copy zoom_out_map
<xsl:template match="/">
    <outside>
        <xsl:apply-templates select="configuration/system">
            <xsl:with-param name="host" select="configuration/system/host-name"/>
        </xsl:apply-templates>
    </outside>
</xsl:template>

다음 템플릿은 이전 예에서 선택한 하위 트리의 상단인 요소와 일치 <system> 합니다. host 매개 변수는 기본값이 없는 것으로 선언됩니다. <inside> 요소가 생성되며, 이는 이전 예제의 host 태그에 <xsl:with-param> 정의된 매개변수 값을 포함합니다.

content_copy zoom_out_map
<xsl:template match="system">
    <xsl:param name="host"/>
    <inside>
        <xsl:value-of select="$host"/>
    </inside>
</xsl:template>

예: 매개 변수 및 명명된 템플릿

다음 명명된 템플릿 report-changed 은 두 가지 dot매개 변수를 선언합니다. 이는 현재 노드의 기본값이며changed, 은(는) 노드 dot속성에 기본값으로 지정됩니다changed.

content_copy zoom_out_map
<xsl:template name="report-changed">
    <xsl:param name="dot" select="."/>
    <xsl:param name="changed" select="$dot/@changed"/>
    <!-- ... -->
</xsl:template>

다음 stanza는 템플릿을 report-changed 호출하고 템플릿에 changed 정의된 report-changed 기본 소스와 다른 속성에 대한 소스를 정의합니다. 템플릿이 report-changed 호출되면 기본 소스 대신 속성에 대해 changed 새로 정의된 소스를 사용합니다.

content_copy zoom_out_map
<xsl:template match="system">
    <xsl:call-template name="report-changed">
        <xsl:with-param name="changed" select="../@changed"/>
    </xsl:call-template>
</xsl:template>

마찬가지로 템플릿 호출은 다음과 같이 매개 변수를 dot 포함하고 기본 현재 노드가 아닌 소스를 정의할 수 있습니다.

content_copy zoom_out_map
<xsl:template match="system">
    <xsl:call-template name="report-changed">
        <xsl:with-param name="dot" select="../../>
    </xsl:call-template>
</xsl:template>
external-footer-nav