number
構文
number expression {
format numbering-style;
grouping-separator character;
grouping-size number;
}
number {
count nodes;
format numbering-style;
from nodes;
grouping-separator character;
grouping-size number;
level "single" | "multiple" | "any";
}
説明
書式設定された数値文字列を生成し、結果ツリーに出力します。引数と共に使用すると、ステートメントはその XPath 式で指定された数値をフォーマットします。引数を指定せずに使用すると、ステートメントは 、 、fromおよび level のオプションcountを使用して、現在の XML ドキュメント内の 1 つ以上のノードの位置に基づいて数値を生成します。どちらの場合も、オプションのステートメントはその数値のフォーマットを指定します。必要に応じて、書式設定された数値文字列を結果ツリーではなく変数または出力メソッドにリダイレクトすることもできます。
属性
number expression |
書式設定する数値を指定する XPath 式。 |
||||||||||||||||||||||||
count nodes |
カウントするノードを指定する XPath 式。省略すると |
||||||||||||||||||||||||
format numbering-style |
数値の書式設定を定義する文字列、変数、または XPath 式。 このオプションには
|
||||||||||||||||||||||||
from nodes |
カウントを開始する要素を指定する XPath 式。または |
||||||||||||||||||||||||
grouping-separator character |
10 進形式で表された数値の桁のグループを区切るために使用される文字。たとえば、10 進表記では、数字グループ間の区切り文字としてコンマを使用します。 |
||||||||||||||||||||||||
grouping-size number |
10 進形式で表された数値のグループ内の桁数を定義します。このオプションを設定すると、書式設定された数値がグループ化サイズに従って複数のグループに分割され、グループ化区切り記号によってグループが区切られます。たとえば、10 進表記では、多くの場合、グループ化サイズ 3 が使用されます。 |
||||||||||||||||||||||||
level |
実行するカウントのタイプを指定します。指定できる値は
|
現在、libxslt (1.1.26) は、 <xsl:number> 要素の "言語" および "文字値" オプションをサポートしていません。SLAXはこれらのXSLT構造をエンコードする手段を提供しますが、Junos OSでは使用できません。
SLAXの例
次のサンプル コードは、1 から 5 まで反復処理します。各整数について、ステートメントは number 同等の大文字のローマ数字値を出力します。
for $i (1 ... 5) {
number $i {
format "I ";
}
}
I II III IV V
次のサンプル コードは、文字列 "1234567890" をステートメントに提供し、出力を number グループ サイズ 3 の 10 進形式で書式設定し、グループ区切り記号としてコンマを使用します。
number "1234567890" {
grouping-size 3;
grouping-separator ",";
format "1";
}
1,234,567,890
次のサンプルコードは、 name 変数 $dataに格納されている構成階層内のすべての要素をカウントします。countオプションと level "multiple" オプションを組み合わせると、 、 、unitおよび address 要素の下にあるinterface要素のnameカウントが追跡されます。
オプション (1.A.a) には format 、開始文字列 (左括弧) と終了文字列 (右括弧とスペース文字) が含まれます。数値トークンは "1"、"A"、および "a" で、数値の書式設定をそれぞれ 10 進形式、大文字のアルファベット番号、および小文字の英字番号として定義します。トークン区切り記号はピリオドであり、これも出力に含まれます。
var $data := {
<interfaces> {
<interface> {
<name> "ge-0/0/0";
<unit> {
<name> "0";
}
<unit> {
<name> "1";
}
}
<interface> {
<name> "ge-0/1/0";
<unit> {
<name> "10";
<family> {
<inet>;
}
}
}
<interface> {
<name> "ge-2/0/2";
<unit> {
<name> "0";
<family> {
<inet> {
<address> {
<name> "10.1.1.1/24";
}
}
}
}
}
}
}
for-each ($data//name) {
number {
level "multiple";
count interface|unit|address;
format "(1.A.a) ";
}
expr . _ "\n";
}
生成された数値が結果ツリーに表示される場合、括弧内の 10 進数は特定のインターフェイスに関連付けられています。各インターフェイスにおいて、大文字は各論理ユニット名に関連付けられ、小文字はその論理ユニットのアドレス name 要素(IP アドレス)に関連付けられます。
(1) ge-0/0/0 (1.A) 0 (1.B) 1 (2) ge-0/1/0 (2.A) 10 (3) ge-2/0/2 (3.A) 0 (3.A.a) 10.1.1.1/24
リリース情報
Junos OSリリース12.2以降のリリースでサポートされているSLAX言語のバージョン1.1で導入されたステートメント。