Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

XPath の概要

XSLT では、 XML パス言語 (XPath)標準を使用して、入力ドキュメントの XML 階層内の要素を指定して位置を指定します。XPath のパワフルな表現構文では、XML 入力ドキュメントの一部を選択するための複雑な基準を定義できます。

ノードと軸

XPath は、ドキュメント階層のすべての部分をノードとして表示 します。コミットスクリプト、opスクリプト、イベントスクリプト、SNMPスクリプトでは、ノードの重要なタイプは 要素ノードテキストノードおよび属性ノードです。次の XML タグを検討してください。

これらの 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">含むことをお勧めします。この要素を使用すると、スクリプト内のプログラミング手順(または <xsl:if>など<xsl:for-each>)のすべての XPath 式からルート要素を除外/configuration/できるため、Junos 階層レベルで XPath 式を開始できます(例えば)。 system/domain-name詳細については、「コミット スクリプトに必要な定型プレート」を参照してください。

パスと述語の構文

XPath 式には、パス構文と述部構文の 2 種類の構文が含まれています。パス構文では、現在のコンテキスト ノードからドキュメントの階層にある軸の 1 つ上のパス位置を検査するノードを指定します。パス構文の例をいくつか紹介します。

  • 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]現在のコンテキストの子で、 という名前inactiveの属性(*軸からノードを選択)があるノード(@任意のノードに一致)をattribute選択します。

  • route[starts-with(next-hop, '10.10.')]現在のコンテキストの子であり、値が文字列 10.10 で始まる という名前の子要素を持つという名前routenext-hopの要素を選択します。

    この starts-with 関数は、XPath に組み込まれている多くの関数の 1 つです。XPath は、関係テスト、等価テスト、およびここに記載されていないその他の多くの機能もサポートしています。

XPath 演算子

XPath は、および(または)などのAND標準的な論理演算子、、 などの<!=>=比較演算子、 などの数値演算子+*-をサポートします。|

XSLT では、XSLT スクリプトは XML ドキュメントであるため、()演算子は次のように、小さい演算子&lt;<=&lt;=次のように表<し、少ない演算子は XML で表現される必要があります。

XPath の機能と演算子の詳細については、包括的な XPath リファレンス ガイドを参照してください。XPathは、 http://w3c.org/TR/xpath のW3C仕様で完全に記述されています。