1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
-
- This file is part of the OpenLink Software Virtuoso Open-Source (VOS)
- project.
-
- Copyright (C) 1998-2018 OpenLink Software
-
- This project is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; only version 2 of the License, dated June 1991.
-
- This program is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-->
<refentry id="xpf_assign">
<refmeta>
<refentrytitle>assign</refentrytitle>
<refmiscinfo>XPATH</refmiscinfo>
</refmeta>
<refnamediv>
<refname>assign</refname>
<refpurpose>Creates a local variable and assign a value to it.</refpurpose>
</refnamediv>
<refsynopsisdiv>
<funcsynopsis id="xpf_syn_assign">
<funcprototype id="xpf_proto_assign">
<funcdef>null <function>assign</function></funcdef>
<paramdef><parameter>var_name</parameter> string</paramdef>
<paramdef><parameter>var_value</parameter> any</paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="xpf_desc_assign"><title>Description</title>
<para>
This function calculates the first argument, <parameter>var_name</parameter>,
and converts it to the string, if needed.
Then it checks if there is a local variable or parameter with such name.
If not found, it checks if there is a global variable or parameter with such name.
If nothing found in both cases, a new local variable is created with this name.
The the value of found or created variable is changed to the value of
the second argument, <parameter>var_value</parameter>.
</para>
<para>
The value of the variable may be accessed like the value of any variable created
by <xsl:variable> XSL element or FLWR operator of XQUERY.
The same $name should be used to get the value.
</para>
<para>
In XSLT, common rules for local variables are used for variables created by assign() function.
</para>
<para>
This function is not a part of XPATH 1.0 or XQUERY 1.0 libraries of standard functions.
It may produce strange results if
used in XQUERY expressions in order to change the value of local variable created
by FLWR expression.
It may cause infinite loop if
used in XSLT expressions in order to change the value of a variable used in
currently executed <xsl:apply-templates> instruction.
For both safety and portability, it is much better to use <xsl:variable> and
<xsl:param> XSL elements in stylesheets or LET operator in XQUERY expressions.
In addition, let() function is not portable,
but it may be used in XPATH or XSLT without the risk of
undesired effects.</para>
</refsect1>
<refsect1 id="xpf_params_assign"><title>Parameters</title>
<refsect2><title>var_name</title>
<para>The name of variable which must be found or created.</para></refsect2>
<refsect2><title>var_value</title>
<para>The value which should be assigned to the variable.</para></refsect2>
</refsect1>
<refsect1 id="xpf_ret_assign"><title>Return Types</title><para>Null</para></refsect1>
<refsect1 id="xpf_examples_assign"><title>Examples</title>
<example id="xpf_ex_assign"><title></title>
<para>Increment local variable $counter by 1.</para>
<screen>
assign('counter', $counter+1);
</screen>
</example>
</refsect1>
<refsect1 id="xpf_seealso_assign"><title>See Also</title>
<para><link linkend="xpf_let">let()</link></para>
</refsect1>
</refentry>
|