[j-nsp] break statement in SLAX

Martin T m4rtntns at gmail.com
Thu Dec 13 13:04:45 EST 2018


On Thu, Dec 13, 2018 at 7:15 PM Martin T <m4rtntns at gmail.com> wrote:
>
> Hi!
>
> I have a XML text node which contains random integers between 1 and 10
> and are separated by LF(0x0a). I convert this text node into a string
> and use jcs:break-lines() to put those numbers into a node-set. This
> means, that eventually I have an object like this:
>
> (sdb) print $int_ns
> [node-set] (10)
> <text>8</text>
> <text>8</text>
> <text>2</text>
> <text>1</text>
> <text>2</text>
> <text>9</text>
> <text>3</text>
> <text>4</text>
> <text>7</text>
> <text>1</text>
>
> (sdb)
>
>
> Now I want to process only the first three integers which are less
> than 5. As I understand, for-each loop does not support breaking out
> from the loop so I did it like this:
>
> $ cat read_part_of_node-set.slax
> version  1.2;
>
> main <top> {
>
>         var $int := {
>                 <text> 8;
>                 <text> 8;
>                 <text> 2;
>                 <text> 1;
>                 <text> 2;
>                 <text> 9;
>                 <text> 3;
>                 <text> 4;
>                 <text> 7;
>                 <text> 1;
>         }
>
>         var $int_ns := $int/*;
>
>         mvar $n;
>         set $n = 1;
>
>         mvar $m;
>         set $m = 1;
>
>         while ( $m < 4 ) {
>                 if ( $int_ns[number($n)] < 5 )  {
>                         <output> $int_ns[number($n)];
>                         set $m = $m + 1;
>                 }
>                 set $n = $n + 1;
>         }
> }
> $ slaxproc -g -E read_part_of_node-set.slax
> <?xml version="1.0"?>
> <top>
>   <output>2</output>
>   <output>1</output>
>   <output>2</output>
> </top>
> $
>
> Just wondering, maybe there is a more elegant solution for this?
>
>
> thanks,
> Martin

In addition, it would require a protection against an endless loop
inside the while loop. Something like this:

if ( $n > count($int_ns) ) {
    set $m = 4;
}


Martin


More information about the juniper-nsp mailing list