SetVariable
Associates a value with a variable name. The value can be a simple value or a more complex one consisting of several elements.
Child elements
Attribute, ClearPage, Column, Columns, Copy-of, Element, ForAll, Loop, Ol, Output, Paragraph, PlaceObject, SortSequence, Switch, Table, TableNewPage, Tablehead, Tablerule, Td, Tr, Ul, Value
Parent elements
AtPageCreation, AtPageShipout, Case, Contents, ForAll, Function, Include, Layout, Loop, Otherwise, Record, SavePages, Table, Until, While
Attributes
execute(optional, since version 4.11.8)-
Execute the contents of setvariable now or execute it on usage.
now-
Execute the contents during SetVariable (default).
later-
Execute the contents when evaluated during Copy-of. Experimental.
select(XPath expression, optional)-
The value of the contents.
trace(optional)-
Show information about the assignment in the log file.
yes-
Show information.
no-
Don’t show information (default).
type(optional, since version 4.3.10)-
Set the data type of the variable. Currently only supported for MetaPost variables.
sd:any-
The default (any) datatype for variables in the speedata layout language.
mp:boolean-
A MetaPost boolean value.
mp:cmykcolor-
A MetaPost CMYK color.
mp:numeric-
A MetaPost numeric value.
mp:string-
A MetaPost string value.
mp:rgbcolor-
A MetaPost RGB color.
variable(text)-
The name of the variable that holds the contents.
Remarks
Variables have global scope.
Example
<Record element="product">
<SetVariable variable="wd" select="5"/>
<PlaceObject>
<Textblock width="{ $wd }">
<Paragraph>
<Value select="$articlenumber"/>
</Paragraph>
</Textblock>
</PlaceObject>
</Record>
The following example shows a more complex scenario: you can collect complex elements in a variable.
<Record element="products">
<SetVariable variable="articletext"/>
<ProcessNode select="article"/>
<PlaceObject>
<Textblock>
<Value select=" $articletext "/>
</Textblock>
</PlaceObject>
</Record>
<Record element="article">
<SetVariable variable="articletext">
<!-- the previous contents is added -->
<Value select="$articletext"/>
<Paragraph>
<Value select=" @description "/>
</Paragraph>
</SetVariable>
</Record>
See also
The sections Programming and Create and use images with MetaPost.