Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

XPath 개요

XSLT 는 XPath( XML 경로 언어 ) 표준을 사용하여 입력 문서의 XML 계층에서 요소를 지정하고 찾습니다. XPath의 강력한 표현식 구문을 사용하면 XML 입력 문서의 일부를 선택하기 위한 복잡한 기준을 정의할 수 있습니다.

노드 및 축

XPath는 문서 계층의 모든 부분을 노드로 간주합니다. 커밋 스크립트, op 스크립트, 이벤트 스크립트 및 SNMP 스크립트의 경우 중요한 노드 유형은 요소 노드, 텍스트 노드속성 노드입니다. 다음 XML 태그를 고려하십시오.

이러한 XML 태그 요소는 다음 유형의 XPath 노드의 예를 보여줍니다.

  • <host-name>my-router</host-name>- 요소 노드

  • my-router- 텍스트 노드

  • inactive="inactive"- 속성 노드

XPath는 노드가 특정 축에 배열되어 있는 것으로 간주 합니다. 다음 목록에는 몇 가지 공통 축이 포함되어 있습니다. 그러나 XPath에는 여기에 나열되지 않은 다른 축이 많이 있습니다.

  • ancestor—노드에서 일련의 상위 노드를 통해 위로 가리킵니다

  • child - 요소 노드의 직접 하위 노드 목록을 가리킵니다.

  • attribute - 요소 노드의 속성 집합 목록을 가리킵니다

  • follow-sibling—노드를 따르지만 동일한 상위 아래에 있는 노드를 통해 가리킵니다.

  • descendant - 노드의 모든 하위 항목을 포함합니다

XSLT는 컨텍스트 노드 (또는 간단히 컨텍스트)라고 하는 특정 노드에서 각 XPath 식을 평가합니다. 컨텍스트 노드는 XSLT 프로세서가 현재 찾고 있는 노드입니다. XSLT는 문서의 계층을 트래버스할 때 컨텍스트를 변경합니다. 특정 컨텍스트 노드에서 XPath 식을 평가합니다.

메모:

Junos OS 커밋 스크립트에서 컨텍스트 노드 개념은 Junos OS 계층 수준에 해당합니다. 예를 들어, XPath 식은 /configuration/system/domain-name 컨텍스트 노드를 계층 수준으로 [edit system domain-name] 설정합니다.

모든 커밋 스크립트에 템플릿을 <xsl:template match="configuration"> 포함하는 것이 좋습니다. 이 요소를 사용하면 스크립트의 프로그래밍 명령(예: <xsl:for-each> 또는 <xsl:if>)의 모든 XPath 식에서 루트 요소를 제외 /configuration/ 할 수 있습니다. 따라서 XPath 표현식은 Junos 계층 수준(예: system/domain-name)에서 시작할 수 있습니다. 자세한 내용은 커밋 스크립트에 필요한 상용구를 참조하십시오.

경로 및 조건자 구문

XPath 표현식에는 경로 구문과 조건자 구문의 두 가지 유형의 구문이 포함되어 있습니다. 경로 구문은 현재 컨텍스트 노드의 문서 계층에 있는 축 중 하나에 있는 경로 위치에 따라 검사할 노드를 지정합니다. 경로 구문의 몇 가지 예는 다음과 같습니다.

  • accounting-options- 현재 컨텍스트의 하위 항목인 요소 accounting-options 노드를 선택합니다.

  • server/name- 현재 컨텍스트의 자식인 요소 server 의 자식인 요소 노드 name 를 선택합니다.

  • /configuration/system/domain-name- 문서configuration의 루트 요소()의 자식인 요소 system 의 자식인 요소 노드 domain-name 를 선택합니다.

  • parent::system/host-name- 현재 컨텍스트 노드의 상위인 요소 system 의 하위 요소 노드 host-name 를 선택합니다. 축을 parent:: 두 마침표(..)로 축약할 수 있습니다.

조건자 구문을 사용하면 경로 구문으로 선택한 각 노드에서 테스트를 수행할 수 있습니다. 결과 집합에는 테스트를 통과하는 노드만 포함됩니다. 술어는 경로 노드 뒤의 대괄호([ ]) 안에 나타납니다. 다음은 조건자 구문의 몇 가지 예입니다.

  • server[name = '10.1.1.1']- 현재 컨텍스트의 자식이며 값이 10.1.1.1인 자식 요소가 name 있는 요소를 선택합니다server.

  • *[@inactive]- 현재 컨텍스트의 자식이고 라는 이름inactive의 속성(@축에서 attribute 노드 선택)이 있는 노드(모든 노드와 일치)를 선택합니다*.

  • route[starts-with(next-hop, '10.10.')]- 현재 컨텍스트의 하위이며 값이 문자열 10.10으로 시작하는 자식 요소가 next-hop 있는 요소를 선택합니다route.

    starts-with 함수는 XPath에 내장된 많은 함수 중 하나입니다. XPath는 또한 관계형 테스트, 같음 테스트 및 여기에 나열되지 않은 더 많은 기능을 지원합니다.

XPath 연산자

XPath는 다음과 같은 많은 연산자를 지원합니다.

  • 논리 연산자(예 AND : and | (or)

  • 비교 연산자(예 =: , !=, <, 및 >

  • 숫자 연산자(예 +: , -, 및 *

XSLT 스크립트는 XML 문서입니다. XSLT에서는 XML에서와 동일한 방식으로 보다 작은 기호를 나타내야 합니다. 따라서 보다 작거나< 작은 () 연산자를 로 &lt; 나타내고 보다 작거나 같거나 같아야 (<=) 연산자를 로 &lt;=나타내야 합니다.

XPath 함수 및 연산자에 대한 자세한 내용은 포괄적인 XPath 참조 가이드를 참조하십시오. XPath는 http://w3c.org/TR/xpath 의 W3C 사양에 자세히 설명되어 있습니다.