이 페이지에서
XPath 개요
XSLT 는 XPath(XML Path Language ) 표준을 사용하여 입력 문서의 XML 계층에서 요소를 지정하고 찾습니다. XPath의 강력한 표현식 구문을 사용하면 XML 입력 문서의 일부를 선택하는 데 복잡한 기준을 정의할 수 있습니다.
노드 및 축
XPath는 문서 계층의 모든 부분을 노드로 간주합니다. 커밋 스크립트, op 스크립트, 이벤트 스크립트 및 SNMP 스크립트의 경우 중요한 노드 유형은 요소 노드, 텍스트 노드 및 속성 노드입니다. 다음 XML 태그를 고려하십시오.
<system> <host-name>my-router</host-name> <accounting inactive="inactive"> </system>
이러한 XML 태그 요소는 다음 유형의 XPath 노드 예시를 보여줍니다.
<host-name>my-router</host-name>
—요소 노드my-router
—텍스트 노드inactive="inactive"
—속성 노드
노드는 특정 축으로 배열되는 것으로 간주됩니다. 상위 축 은 일련의 상위 노드를 통해 노드에서 을(를) 가리킵니다. 하위 축 은 요소 노드의 직접 하위 노드 목록을 가리킵니다. 속성 축 은 요소 노드의 속성 집합 목록을 가리킵니다. 다음 형제 축 은 노드를 따르지만 동일한 상위 아래에 있는 노드를 가리킵니다. 하위 축 에는 노드의 모든 하위 축이 포함됩니다. 여기에 나열되지 않은 다른 축이 많이 있습니다.
각 XPath 표현식은 컨텍스트 노드 (또는 단순히 컨텍스트)라고 하는 특정 노드에서 평가됩니다. 컨텍스트 노드는 XSLT 프로세서가 현재 찾고 있는 노드입니다. XSLT는 문서의 계층이 통과될 때 컨텍스트를 변경하고 XPath 표현식은 해당 특정 컨텍스트 노드에서 평가됩니다.
Junos OS 커밋 스크립트에서 컨텍스트 노드 개념은 Junos OS 계층 수준에 해당합니다. 예를 들어 XPath /configuration/system/domain-name
표현식은 컨텍스트 노드를 [edit system domain-name]
계층 수준으로 설정합니다.
모든 커밋 스크립트에 템플릿을 <xsl:template match="configuration">
포함하는 것이 좋습니다. 이 요소를 사용하면 스크립트의 /configuration/
프로그래밍 지침(예: <xsl:for-each>
또는 <xsl:if>
)의 모든 XPath 표현식에서 루트 요소를 제외할 수 있으므로 Junos 계층 수준에서 XPath 표현식을 시작할 수 있습니다(예: system/domain-name
). 자세한 내용은 커밋 스크립트에 대한 필수 상용구 판을 참조하십시오.
경로 및 구문 예측
XPath 표현식에는 두 가지 유형의 구문, 경로 구문 및 사전 구문이 포함됩니다. 경로 구문은 현재 컨텍스트 노드에서 문서 계층의 축 중 하나에서 경로 위치의 관점에서 검사할 노드를 지정합니다. 경로 구문의 몇 가지 예는 다음과 같습니다.
accounting-options
- 현재 컨텍스트의 하위인 요소accounting-options
노드를 선택합니다.server/name
-라는 요소 노드name
가 현재 컨텍스트의 하위인 요소의 자식server
인 을(를) 선택합니다./configuration/system/domain-name
- 문서의configuration
루트 요소()의 자식인 요소의 자식인 라는domain-name
system
요소 노드를 선택합니다.parent::system/host-name
- 현재 컨텍스트 노드의 상위 요소인 요소의 자식인 요소host-name
system
노드를 선택합니다. 축은parent::
2개의 기간(..
)으로 축으로 축약할 수 있습니다.
사전 구문을 사용하면 경로 구문으로 선택한 각 노드에서 테스트를 수행할 수 있습니다. 테스트를 통과한 노드만 결과 집합에 포함됩니다. 전제는 경로 노드 후 대괄호([ ]
) 내부에 나타납니다. 다음은 사전 구문의 몇 가지 예입니다.
server[name = '10.1.1.1']
-현재 컨텍스트의 하위인 라는server
요소를 선택하고 값이 10.1.1.1인 하위name
요소 를 입니다.*[@inactive]
—현재 컨텍스트의 하위이며 특성(축에서attribute
노드 선택)이 있는 모든 노드*
(@
모든 노드와 일치)inactive
를 선택합니다.route[starts-with(next-hop, '10.10.')]
- 현재 컨텍스트의 하위 요소이고 값이 문자열 10.10으로 시작하는 라는next-hop
하위 요소가 있는 라는 요소를route
선택합니다.이
starts-with
기능은 XPath에 내장된 많은 기능 중 하나입니다. XPath는 또한 관계 테스트, 평등 테스트 및 여기에 나열되지 않은 더 많은 기능을 지원합니다.
XPath 연산자
XPath는 및 (또는)와 같은 AND
표준 논리 연산자, 와 같은 숫자 연산자와 같은 <
>
=
!=
비교 연산자를 +
*
-
지원합니다.|
XSLT에서 XSLT 스크립트는 XML 문서이고, 징후보다 적은 징후가 XML에서 이러한 방식으로 표현되기 때문에 XSLT에서는 항상 () 미만<
의 연산 <
자를 로, (<=
) 연산자를 <=
로 나타내야 합니다.
XPath 기능 및 운영자에 대한 자세한 내용은 포괄적인 XPath 참조 가이드를 참조하십시오. XPath는 http://w3c.org/TR/xpath W3C 사양에 완전히 설명되어 있습니다.