summaryrefslogtreecommitdiff
path: root/win32/sablot/README_JS
diff options
context:
space:
mode:
Diffstat (limited to 'win32/sablot/README_JS')
-rw-r--r--win32/sablot/README_JS107
1 files changed, 107 insertions, 0 deletions
diff --git a/win32/sablot/README_JS b/win32/sablot/README_JS
index c58760b..10611a9 100644
--- a/win32/sablot/README_JS
+++ b/win32/sablot/README_JS
@@ -1,107 +1,214 @@
Sablotron XSLT Extensions Readme File
+
=====================================
+
+
1. Building
+
----------------------------------------
+
+
Extension elements and functions as defined by XSLT 1.0 are
+
implemented in Sablotron since the version 0.80. Sablotron recognizes
+
the extension element <http://www.exslt.org/functions/script> as
+
suggested by exslt.org. There are some exceptions described later in
+
this document. Please note, that this feature is still supposed to be
+
EXPERIMENTAL.
+
+
If you want to benefit form this feature, you have to install
+
JavaScript engine from mozilla.org (SpiderMonkey). You have to do it
+
even when you have Mozilla browser installed, because the binary
+
browser installation doesn't include essential header files.
+
+
An alternative way to get all neccessary JS files is to download and
+
install Charlie application framework (see gingerall.org).
+
+
All you need to do on Sablotron side is to run the configure script
+
with --enable-javascript option. To use JS engine from Charlie
+
installation, type: ./configure --enable-javascript --enable-perlconnect
+
+
If you have installed JS libraries into non-standard directories, you
+
need to set (and export) CPLUS_INCLUDE_PATH/LIBRARY_PATH to point to
+
directories where the header files/lib files (e.g. libjs.so) can be found.
+
+
The default name for the linked library is 'js' (-ljs switch) - if you
+
need to override this value, you may set SABLOT_JSLIB environment
+
variable - the configure script uses -l$(SABLOT_JSLIB) in this case.
+
+
+
2. What is working
+
----------------------------------------
+
+
Sablotron supports JavaScript (ECMA) scripting as described in XSTL WD
+
1.1. with few exceptions:
+
+
- DOM functions handling namespaces (with NS in their name) are not
+
supported (throw NOT_SUPPORTED exception)
+
+
- DOM model is read only (as supported, may be changed later)
+
+
- XSLTContext.stringValue is not supported
+
+
- Document.getElementsByTagName{NS} are not supported
+
+
- Element.getElementsByTagName{NS} are not supported
+
+
- DTD definition nodes are not supported
+
+
+
The following summarizes what IS supported:
+
+
- exslt:script element support
+
+
- XSLTContext object
+
+
- DOM2 acces to a processed document
+
+
- type mapping between XPath and JavaScript including the XSLT
+
external object support
+
+
- function-available() function
+
+
- element-available() function
+
+
+
3. Sample stylesheet
+
----------------------------------------
+
+
<?xml version='1.0'?>
+
<xsl:stylesheet version='1.0'
+
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
+
xmlns:exslt='http://www.exslt.org/functions'
+
xmlns:my='http://gingerall.org/sablot/myfunc'
+
extension-element-prefixes='exslt'
+
exclude-result-prefixes='my'>
+
+
<xsl:output method='xml' indent='yes'/>
+
+
<exslt:script language='javascript' implements-prefix='my'>
+
<![CDATA[
+
+
function getNodeNames(nodeList)
+
{
+
ret = '';
+
for (i = 0; i < nodeList.length; i++)
+
{
+
ret += nodeList[i].nodeName + " ";
+
}
+
return ret;
+
}
+
+
]]>
+
</exslt:script>
+
+
+
<xsl:template match='/'>
+
<output>
+
<xsl:value-of select='my:getNodeNames(*)'/>
+
</output>
+
</xsl:template>
+
+
</xsl:stylesheet>
+