Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

XSLT 프로그래밍 지침 개요

XSLT 에는 여러 가지 기존 프로그래밍 지침이 있습니다. 구문이 XML 요소에서 구축되기 때문에 형식이 정적인 경향이 있습니다.

스크립트 내에서 플로우 제어를 제공하는 커밋, op, 이벤트 및 SNMP 스크립트에서 가장 일반적으로 사용되는 XSLT 프로그래밍 지침은 다음 섹션에서 설명합니다.

<xsl:선택> 프로그래밍 명령

지침은 <xsl:choose> 다른 상황에서 다른 지침을 처리하도록 하는 조건부 구조입니다. 이는 기존 프로그래밍 언어의 스위치 명령문과 유사합니다. 지침에는 <xsl:choose> 하나 이상의 <xsl:when> 요소가 포함되어 있으며, 각 요소는 XPath 표현식을 테스트합니다. 테스트가 true로 평가되면 XSLT 프로세서는 요소에서 <xsl:when> 지침을 실행합니다. XSLT 프로세서가 true로 평가되는 요소에서 <xsl:when> XPath 표현식을 찾은 후 XSLT 프로세서는 XPath 표현식이 true로 평가되더라도 지침에 <xsl:choose> 포함된 모든 후속 <xsl:when> 요소를 무시합니다. 즉, XSLT 프로세서는 속성이 true로 평가되는 첫 번째 <xsl:when> 요소 test 에 포함된 지침만 처리합니다. 요소의 test 속성 중 <xsl:when> 어느 것도 true로 평가되지 않으면, 선택 요소 <xsl:otherwise> 의 컨텐츠가 있는 경우 처리됩니다.

<xsl:choose> 명령문은 다른 프로그래밍 언어의 스위치 명령문과 유사합니다. 요소는 <xsl:when> 스위치 명령문의 "케이스"이며, 다양한 <xsl:when> 요소를 추가할 수 있습니다. 요소는 <xsl:otherwise> 스위치 명령문의 "기본값"입니다.

<xsl:for-each> 프로그래밍 명령

요소는 <xsl:for-each> XSLT 프로세서에 일련의 노드를 함께 수집하고 하나씩 처리하도록 지시합니다. 노드는 속성에 의해 지정된 XPath 표현식에 select 의해 선택됩니다. 그런 다음 각 노드는 구조에 보관 <xsl:for-each> 된 지침에 따라 처리됩니다.

명령 내의 <xsl:for-each> 코드는 XPath 표현식과 일치하는 각 노드에 대해 재귀적으로 평가됩니다. 즉, 현재 컨텍스트는 절에서 선택한 <xsl:for-each> 각 노드로 이동되며 처리는 현재 컨텍스트와 상대적입니다.

다음 예시에서 구조는 <xsl:for-each> 계층의 각 노드를 [system syslog file] 재귀적으로 처리합니다. 각 일치하는 노드에 현재 컨텍스트를 업데이트하고 현재 컨텍스트의 하위 요소인 요소 값을 name 인쇄합니다.

<xsl:if> 프로그래밍 명령

<xsl:if> 프로그래밍 명령은 속성에 있는 test XPath 표현식이 을(를) 평가하면 명령이 처리되도록 하는 조건부 구조입니다true.

해당하는 다른 조항은 없습니다.

XSLT 프로그래밍 지침 및 의사 코드 샘플

표 1 에는 의사 코드 설명과 함께 여러 XSLT 프로그래밍 지침을 사용하는 예가 제시됩니다.

표 1: XSLT 프로그래밍 지침에 대한 예 및 유사 코드

프로그래밍 명령

의사 코드 설명

<xsl:choose>
<xsl:when test="system/host-name">
     <change>
          <system>
               <host-name>M320</host-name>
          </system>
     </change>
</xsl:when>
<xsl:otherwise>
     <xnm:error>
          <message>
              Missing [edit system host-name] M320.
          </message>
     </xnm:error>
</xsl:otherwise>
</xsl:choose>

host-name 문이 계층 수준에 포함 [edit system] 되면 호스트 이름을 으로 변경합니다M320.

그렇지 않으면 다음과 같은 경고 메시지를 Missing [edit system host-name] M320발행합니다.

<xsl:for-each select="interfaces/
interface[starts-with(name, 'ge-')]/unit">

계층 수준에서 구성된 [edit interfaces ge-fpc/pic/port unit logical-unit-number] 각 기가비트 이더넷 인터페이스에 대해.

<xsl:for-each select="data[not(value)]/name">

매개 변수 값을 포함하지 않는 매크로 매개변수를 선택합니다.

즉, 다음 형식의 모든 apply-macro 문을 일치시킬 수 있습니다.

apply-macro apply-macro-name {
    parameter-name;
}

양식의 모든 apply-macro 문을 무시합니다.

apply-macro apply-macro-name {
    parameter-name parameter-value;
}
<xsl:if test="not(system/host-name)">

host-name 문이 계층 수준에 포함되지 [edit system] 않은 경우.

<xsl:if test="apply-macro[name = 'no-igp']

apply-macro 라는 명령 no-igp 문이 현재 계층 수준에 포함되어 있는 경우.

<xsl:if test="not(../apply-macro[name = 'no-ldp'])

apply-macro 이름이 no-ldp 있는 문이 현재 계층 수준보다 두 개의 계층 수준을 포함하지 않은 경우.