XSLTForms/XSLTForms only Extensions
Configuration
Configuration options affecting the XSLTForms transformation are taken from the sources below, where the value for each option is the one found first:
- externally-defined XSLT Parameters,
- config_LANG.xsl file,
- Processing-Instructions(PIs).
XSLT Params
Under the xmlns="http://www.w3.org/1999/XSL/Transform" the following xsl-params are accepted:
- baseuri: If unspecified, defaults to the base-name of of the xsltforms.xsl href.
- xsltforms_caller:
- xsltforms_config: A nodeset having as child the configuration <properties> element that are to be copied on the result xforms-page. Defaults to the ones specified in config.xsl file.
- xsltforms_debug: 'yes' or anything else. If unspecified, assumed no-debug.
- xsltforms_lang: The suffix to use when selecting the language file config_<SUFFIX>.xsl which specifies messages, calendar and other localizations/I18Ns.
Note that xsltforms_config, xsltforms_debug, xsltforms_lang params are further applied to any subsequent transformations of documents containing a xsl-stylesheet PI, either on submission with replace="all" or SVGs, or when applying the transform() extension function.
Config File: config.xsl
Sample configuration file:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template name="config"> <options> <nocss><!-- When existent, no css-conversion hapens. --> </options> <properties> <!-- Accessible at run time from within model('xf-model-config')/instance('xf-instance-config'). --> <language>navigator</language> <!-- navigator or default --> <calendar.day0>Mon</calendar.day0> <calendar.day1>Tue</calendar.day1> <calendar.day2>Wed</calendar.day2> <calendar.day3>Thu</calendar.day3> <calendar.day4>Fri</calendar.day4> <calendar.day5>Sat</calendar.day5> <calendar.day6>Sun</calendar.day6> <calendar.initDay>6</calendar.initDay> <calendar.month0>January</calendar.month0> <calendar.month1>February</calendar.month1> <calendar.month2>March</calendar.month2> <calendar.month3>April</calendar.month3> <calendar.month4>May</calendar.month4> <calendar.month5>June</calendar.month5> <calendar.month6>July</calendar.month6> <calendar.month7>August</calendar.month7> <calendar.month8>September</calendar.month8> <calendar.month9>October</calendar.month9> <calendar.month10>November</calendar.month10> <calendar.month11>December</calendar.month11> <format.date>MM/dd/yyyy</format.date> <format.datetime>MM/dd/yyyy hh:mm:ss</format.datetime> <format.decimal>.</format.decimal> <status>... Loading ...</status> </properties> <extensions> <!-- JS script code to add. - When none of the following child elements exist, any elements here are copied - just after xsltforms.js and before init-scripts. --> <beforeInit/> <!-- Added in a separate <script> element, after xsltforms.js and before init-scipts. --> <onBeginInit/> <!-- Added within init-code <script> at the begining of initImpl() function, before any definitions. --> <onEndInit/> <!-- Added within init-code <script> at the end of initImpl() function, after xforms.init() invocation. --> <afterInit/> <!-- Added in a separate <script> element, after init-scripts. --> </extensions> </xsl:template> </xsl:stylesheet>
Processing Instructions
A xforms page can specify the following processing-instructions(PI) that act as configuraton parameters:
- xsltforms-options: It accepts 2 pseudo-attributes, sample:
<?xsltforms-options debug="yes" lang="en"?>
- css-conversion: sample:
<?css-conversion no?>
Elements
- xforms:tree: content-model: (xforms:label?, xforms:item/xforms:label*)
Functions
Extension functions supported by XSLTForms:
- is-valid(nodeset?): returns true when all nodes in the nodeset are valid.
- transform(nodeset, xslt-href): transforms the node from the node-set which is first in document order using the specified xslt, see https://sourceforge.net/mailarchive/forum.php?thread_name=4BB26785.4070807@agencexml.com&forum_name=xsltforms-support
- serialize(nodeset?): serializes the node from the node-set which is first in document order into string(??)
User-Defined Functions
Here is a sample of how to define user-defined XPath functions:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="xsltforms/xsltforms.xsl" type="text/xsl"?> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms" xmlns:nfunc="http://example.net/xforms/new-functions/" nfunc:bogus="Workaround for FF's bug: https://bugzilla.mozilla.org/show_bug.cgi?id=94270" > <head> <title>User-Defined XPath functions</title> <script >
XPathCoreFunctions['http://example.net/xforms/new-functions/ new-func'] =
new XPathFunction(
false, /* is accepting context as 1st-arg? */
XPathFunction.DEFAULT_NONE, /* context-form as 1st-arg, when (args.length == 0): [ DEFAULT_NONE | DEFAULT_NODE | DEFAULT_NODESET | DEFAULT_STRING ] */
false, /* is returning nodes? */
function() {
return "NEW FUNC";
}
);
</script> </head> <body> <p> Hello to <xf:output value="concat('My ', nfunc:new-func())" />. </p> </body> </html>
|
|
Notice the attribute on <html> element required for working under Firefox:
nfunc:bogus="Workaround for FF's bug: https://bugzilla.mozilla.org/show_bug.cgi?id=94270"(feel free to vote for this mozilla-bug to get fixed some day...) |
Objects in the javascript: pseudo-URL in xf:load/xf:resource@value
When the javascript: pseudo-URL is used within the xf:load/xf:resource@value attribute, the id of the enclosing <xf:load> element is contained by the following js object-property:
XSLTFormsContext.elementId