This API describes which variables in the graph
gxsl
you may use to tweak your audit trail.
Download this
sample model and copy the gxsl
graph to your own
model to get started, or use the gxsl library instead.
To use the audit trail as an output document in your model, use one of the provided audit trails.
gxsl.exclude.empty_answers
if '0' (the default), output all questions. If '1', skip questions that have not been answered. NOTE: To skip single, unchecked, checkboxes, use gxsl.exclude.unchecked_single_checkboxes
.
gxsl.exclude.graphs
newline ('\n') separated list of graphs to be excluded.
Example: 'main\ng_exclude_a\ng_exclude_b' will exclude the following graphs:
gxsl.exclude.links
NOTE: available since 4.5 release.
Newline (\n) separated list of link interfaces to be excluded.
Example: 'main.exclude.link1\nmain.exclude.link2 will exclude the following texts:
gxsl.exclude.nodes
newline ('\n') separated list of nodes to be excluded.
Example: 'main.exclude_a\nmain.g_exclude_b\nmain.g_exclude_c' will exclude the following nodes:
gxsl.exclude.questions
newline ('\n') separated list of questions to be excluded.
Example: 'main.exclude.question1\nmain.exclude.question2\nmain.exclude.question3' will exclude the following questions:
gxsl.exclude.texts
NOTE: available since 4.5 release.
Newline (\n) separated list of text interfaces to be excluded.
Example: 'main.exclude.text1\nmain.exclude.text2\nmain.exclude.text3' will exclude the following texts:
gxsl.exclude.unchecked_single_checkboxes
if not '0' (the default), skip single unchecked checkboxes.
gxsl.images.maxheight
odt Maximum height in pixels, for any content image; defaults to 582 (5.5 inch at 96 dpi).
gxsl.images.maxwidth
odt Maximum width in pixels, for any content image; defaults to 567 (5.91 inch at 96 dpi).
gxsl.include.currentgroup
If '1', include current group: the node currently shown (default = '0' = off).
May still be overriden by gxsl.exclude.*
settings.
gxsl.include.links
If '1', include links
May be overriden by gxsl.exclude.links
settings.
gxsl.tables.factor
odt An author may use fixed width columns, by specifying for at
least one of the columns a width that is not 100px, thereby
deviating from the default.
Depending on things like font size, the specific width may be
inappropriate in the ODT output. When using fixed widths, the
actual table and column width will be scaled by this
factor.
gxsl.tables.insert_generated_graphs
Insert generated graphs (SVGs) in the document, after the table
they are based upon, when showasgraph
is on for the table in question.
NOTE: This only works when converted to PDF, since the images
are referenced relatively, and the images are only accessible in
that way from the same file system (read: not over HTTP/another
machine).
Depends upon a plugin uploading these generated graphs.
Defaults to not using it.
gxsl.tables.max_width
odt An author may use fixed width columns, by specifying for at
least one of the columns a width that is not 100px, thereby
deviating from the default.
Depending on things like font size, the width of the table may
exceed that of the page. This variable sets a max width in inches.
gxsl.titles.policy
All 'font-style headings' (see below for an explanation) are rendered
according to their intended level, but demoted with 1, in order to be
lower than the document title, with a max of 6. Anything that would be
lower remains at 6. This is in line with what is done in newer
presentation layers on the web, where all headings are demoted
according to the context of the rest of the web page, in order to
always get a proper (web) document hierarchy.
So, in your audit trail:
MarkDown headings are demoted the same way when occurring inside a
'node context', that is, when the MarkDown appears inside screen text.
When occurring outside of a 'node context' β such as in front
matter or closing words, MarkDown headings are not demoted.
Setting the variable gxsl.titles.policy
to 'legacy' allows authors to
revert to the old, blunt, rendering, which was as follows:
With the term 'font-style headings' we understand headings that are
headings because they use one of the following styles defined in the
Studio:
Any other style starting with 'Heading'
The first digit in the range 1 through 6 from the left is used as
the initial level. If there is no such digit in the style name, we
default to '1'.
Note that the 'shoehorning' to level 6 will cause an initially
deep hierarchy to flatten out from level 5 onwards for documents, and
from perhaps higher levels (4 or even 3) on the web. For this reason
we advise not to use levels 4 through 6 in your model, but to
stick to Heading 1, Heading 2 and Heading 3 and the equivalent mark-up
in MarkDown: # Heading 1
, ## Heading 2
, ### Heading 3
).
This warning of course does not apply to gxsl.vars.front_matter
andgxsl.vars.closing_words
where demotion never takes place.
gxsl.titles.skip_repeated
Skip recurring titles. 'Recurring titles' means any title that
has the same style and text. A 'title' is any text with
something with 'Title' or 'Heading' in its style name.
Defaults to 0 (= off).
gxsl.urls.after
Text to use after the URL when gxsl.urls.show
is on (1).
Defaults to ')'
.
If you want to insert nothing after the URL, use 0 (zero).
gxsl.urls.before
Text to use before the URL when gxsl.urls.show
is on (1).
Defaults to ' ('
(including the space).
If you want to insert nothing before the URL, use 0 (zero).
gxsl.urls.show
Write out the URL of a link after its text, but only if they differ.
Defaults to 0 (= off).
gxsl.userfields
odt User fields in the node gxsl.userfields
can be quoted in an ODT-style audit trail.
The ODT template used (see gxsl.vars.template
) needs to define them first.
In a header we might for instance want to show a version
number. Define and set it in LibreOffice via Insert > Field >
More fields (Ctrl+F2) > User Field.
The Name
that you use should be a valid single variable
identifier in the Berkeley Studio software.
The Value
can be set in which case it serves as a fallback in
the template.
Make sure to choose the Text format, as we do not yet see any
use to make it more complex than that.
The variables inside gxsl.userfields
will be used fill in the
blanks in the template when generating a document.
gxsl.vars.closing_words
Β (text fragment)Closing words, such as a disclaimer, that we do not want in the interactive model. It will be inserted after all other questions. Markdown may be used within.
See also gxsl.vars.front_matter
and gxsl.vars.order_by
.
Note this one is defined as a text fragment.
It is advised to (only) output this text fragment
inside the node gxsl.vars
, but
see below for the situation since version 4.5 of the
Berkeley Server.
From version 4.5 onwards, it does not matter where in the model
you output this text fragment; The last text fragment with this
name along with its namesakes in the same node will be used for
this.
Note that ^{variables}
in text fragments are resolved the moment
text fragments are declared.
If your fragment does not show up, this may mean you have a variable
of the same name, i.e. gxsl.vars.closing_words
. This can be
the case with older sample models and libraries. If this is so, please
remove the variable gxsl.vars.closing_words
from your
model.
gxsl.vars.creator
The author of the document
gxsl.vars.decimal_format
The decimal format to use (choose from european or us).
'european': period as radix point, comma as thousands separator
'us': comma as radix point, period as thousands separator
gxsl.vars.front_matter
Β (text fragment)Front matter, such as an introductory text, that we do
not want in the interactive model. Will be inserted after the
title, and before the questions and answers. Markdown may be used
within.
See also gxsl.vars.closing_words and gxsl.vars.order_by
.
Note this one is defined as a text fragment.
It is advised to (only) output this text fragment
inside the node gxsl.vars
, but
see below for the situation since version 4.5 of the
Berkeley Server.
From version 4.5 onwards, it does not matter where in the model
you output this text fragment; The last text fragment with this
name along with its namesakes in the same node will be used for
this.
Note that ^{variables}
in text fragments are resolved the moment
text fragments are declared.
If your fragment does not show up, this may mean you have a variable
of the same name, i.e. gxsl.vars.front_matter
. This can be
the case with older sample models and libraries. If this is so, please
remove the variable gxsl.vars.front_matter
from your
model.
gxsl.vars.just_chosen_checkboxes
if '0' (the default), output all options alongside the chosen ones, if '1', output just the chosen ones. NOTE this does not apply to single checkboxes, only to check lists. To skip single, unchecked, checkboxes, use gxsl.exclude.unchecked_single_checkboxes
.
gxsl.vars.lang
lang overrides the model's default language.
gxsl.vars.markdown
Perform markdown conversion, if set to 1.
NEW: If set to 2, will use a post-processor based on markdown-it
(beta) which is designed to solve memory problems encountered by
the XSLT implementation.
Currently the post-processor only works on ODT output, so do not
use this with HTML (yet). Also, the server installation needs to
support it (all will, in due time).
gxsl.vars.markdown_baseuri
Prefix non-absolute MarkDown images with this baseuri
gxsl.vars.markdown_breaks
Insert line breaks within paragraphs if present in
source (defaults to do this). NOTE This behaviour is a breaking
change, but considered very convenient. Set this explicitly to '0' (zero)
to opt out.
gxsl.vars.order_by
This specifies a variable name which, if used in a node,
indicates the relative order that node should have in regard to
the rest of the nodes.
If for example in node gxsl.vars
you have a formula setting order_by
to the name 'order_in_doc_a'
:
order_by := 'order_in_doc_a';
And in some other node, e.g. conclusion
you set the variable order_in_doc_a
to -1:
order_in_doc_a := -1;
this node conclusion
will be output before all others. Likewise, one
may move a node all the way to the back by giving order_in_doc_a
a
positive number (1, 2, etc).
NOTE: Nodes that do not contain this very variable default to 0 (so they will be output 'in the middle').
See also gxsl.vars.front_matter
and gxsl.vars.closing_words
.
gxsl.vars.pagebreak_after
This specifies a variable name which, if used in a node,
indicates that a page break needs to be inserted after that node.
If for example in node gxsl.vars
you have a formula setting pagebreak_after
to the name 'break_after_in_doc_a'
:
pagebreak_after := 'break_after_in_doc_a';
And in some other node, e.g. end_of_chapter
you set the variable break_after_in_doc_a
to 1:
break_after_in_doc_a := 1;
this node end_of_chapter
will be followed by a page break.
gxsl.vars.pagebreak_before
This specifies a variable name which, if used in a node,
indicates that a page break needs to be inserted before that node.
If for example in node gxsl.vars
you have a formula setting pagebreak_before
to the name 'break_before_in_doc_a'
:
pagebreak_before := 'break_before_in_doc_a';
And in some other node, e.g. annex_start
you set the variable break_before_in_doc_a
to 1:
break_before_in_doc_a := 1;
this node annex_start
will be preceded by a page break.
gxsl.vars.single_radio
if '0', output all options alongside the chosen one, otherwise output just the chosen one (the default)
gxsl.vars.stylesheet
htmlStylesheet to use for HTML output
gxsl.vars.stylesheet_default
htmlif '0', do not use the default stylesheet, (defaults to '1': on)
gxsl.vars.template
odtName of ODT (OpenDocument) template
gxsl.vars.text_after
This specifies a text fragment name which, if used in a node,
indicates that text fragments of that name need to be inserted after that node.
If for example in node gxsl.vars
you have a formula setting text_after
to the name 'text_after_in_doc_a'
:
text_after := 'text_after_in_doc_a';
And in some other node, e.g. intro
you output the fragment text_after_in_doc_a
:
textoutput('text_after_in_doc_a', '**MarkDown** allowed, hurray!')
this node intro
will be followed by this text.
Markdown is allowed; headings will not be shoe-horned (so '# Page
title' will output a heading of level 1 - the same as the document
title)
Note the text will come before any trailing pagebreak.
gxsl.vars.text_before
This specifies a text fragment name which, if used in a node,
indicates that text fragments of that name need to be inserted before that node.
If for example in node gxsl.vars
you have a formula setting text_before
to the name 'text_before_in_doc_a'
:
text_before := 'text_before_in_doc_a';
And in some other node, e.g. annex_start
you output the fragment text_before_in_doc_a
:
textoutput('text_before_in_doc_a', '**MarkDown** allowed, hurray!')
this node annex_start
will be preceded by this text.
Markdown is allowed; headings will not be shoe-horned (so '# Page
title' will output a heading of level 1 - the same as the document
title)
Note the text will come after any leading pagebreak.
gxsl.vars.title
if title is not specified, it's taken from model description
gxsl.vars.vspace
odtExtra space, in points, inserted extra after a question;
defaults to 6(pt). The actual space inserted is a bit of black magic it seems, so just try and tweak.