Wiki source for Lists
=====Plain sequences=====
Note that 'lists' are really sequences according to the XDM model, but don't let that put you off.
These are lists of items [sequences ] which might be strings for instance. Created with the '(' ... ')' notation. For example
%%
ls=(a b c)
%%
To access the command line parameters from a script, as, say 'xmlsh scriptname a.xml b.xml c.xml
%%
parms=$*
for f in $parms
do
echo $f
done
%%
which will produce
%%
a.xml
b.xml
c.xml
%%
on stdout
To retain the list nature of a command output, use the form ($var) e.g.
%%
lst=$(ls)
for file in $lst
do
echo $file
done
%%
====xml items====
To form a 'list' of xml items, use the notation '<[item, item, item]>'
But note that the contents of the list can be any type valid for xml, including content from the current context, e.g.
%%
ls=<[a, "b", //x[3]]>
%%
which adds the content of element a (from the current context), a string "b" and the third x element from the root context.
Note the difference between the two types of list and use the appropriate form
===Using variables holding sequences===
The rule is
() creates a sequence {} preserves one when calling a function, another script or even calling an initial script.
given a sequence in $x
%%
x=(a b c)
y=$x
%%
$y is now a list
To call another script or a function with x as a parameter, where you want to retain the parameter as a sequence use
%%
functname param1 param2 {$x} is the required syntax
%%
which ensures that the function receives, and can process $x as a sequence.
Note that 'lists' are really sequences according to the XDM model, but don't let that put you off.
These are lists of items [sequences ] which might be strings for instance. Created with the '(' ... ')' notation. For example
%%
ls=(a b c)
%%
To access the command line parameters from a script, as, say 'xmlsh scriptname a.xml b.xml c.xml
%%
parms=$*
for f in $parms
do
echo $f
done
%%
which will produce
%%
a.xml
b.xml
c.xml
%%
on stdout
To retain the list nature of a command output, use the form ($var) e.g.
%%
lst=$(ls)
for file in $lst
do
echo $file
done
%%
====xml items====
To form a 'list' of xml items, use the notation '<[item, item, item]>'
But note that the contents of the list can be any type valid for xml, including content from the current context, e.g.
%%
ls=<[a, "b", //x[3]]>
%%
which adds the content of element a (from the current context), a string "b" and the third x element from the root context.
Note the difference between the two types of list and use the appropriate form
===Using variables holding sequences===
The rule is
() creates a sequence {} preserves one when calling a function, another script or even calling an initial script.
given a sequence in $x
%%
x=(a b c)
y=$x
%%
$y is now a list
To call another script or a function with x as a parameter, where you want to retain the parameter as a sequence use
%%
functname param1 param2 {$x} is the required syntax
%%
which ensures that the function receives, and can process $x as a sequence.