Naxos is an XSLT 1.0 processor implemented in pure XSLT 1.0.
I presented Naxos at the Open Source Developers' Conference 2006. The conference paper is available online.
java com.icl.saxon.StyleSheet xml-document naxos.xslNaxos obtains the stylesheet from the document's xml-stylesheet declaration.
Naxos is very slow and memory-hungry. Stylesheets larger than toy-sized will probably fail to run even if you specify a large heap for the JVM with -Xmx.
Naxos contains an implementation of XPath 1.0, including the core functions defined for XPath 1.0 and many extension functions defined in XSLT 1.0.
| Function name | Implemented |
|---|---|
| last() | Yes |
| posiiton() | Yes |
| count() | Yes |
| id() | Yes1 |
| local-name() | Yes |
| namespace-uri() | Yes |
| name() | Yes |
| string() | Yes |
| concat() | Yes |
| starts-with() | Yes |
| contains() | Yes |
| substring-before() | Yes |
| substring-after() | Yes |
| string-length() | Yes |
| normalize-space() | Yes |
| translate() | Yes |
| boolean() | Yes |
| true() | Yes |
| false() | Yes |
| lang() | Yes |
| number() | Yes |
| sum() | Yes |
| floor() | Yes |
| ceiling() | Yes |
| round() | Yes |
| Function name | Implemented |
|---|---|
| document() | Yes |
| key() | No |
| format-number() | No |
| current() | Yes |
| unparsed-entity-uri() | No |
| generate-id() | Yes |
| system-property() | Yes |
| function-available() | No |
| element-available() | No |
Naxos implements a subset of XSLT 1.0. <xsl:import> is also supported.
| Element | Implemented |
|---|---|
| xsl:attribute-set | No |
| xsl:decimal-format | No |
| xsl:include | Yes |
| xsl:key | No |
| xsl:namespace-alias | No |
| xsl:output | Partial (@method="text" or @method="xml") |
| xsl:param | Partial23 |
| xsl:preserve-space | No |
| xsl:template | Yes |
| xsl:variable | Partial4 |
Naxos can process most template instructions. <xsl:sort> is available for both <xsl:apply-templates> and <xsl:for-each>. <xsl:with-param> is available for both <xsl:apply-templates> and <call-template>. <xsl:when> and <xsl:otherwise> are both available for <xsl:choose>.
| Element | Implemented |
|---|---|
| xsl:apply-imports | No |
| xsl:apply-templates | Yes |
| xsl:attribute | Yes |
| xsl:call-template | Yes |
| xsl:choose | Yes |
| xsl:comment | Yes |
| xsl:copy | No |
| xsl:copy-of | No |
| xsl:element | Yes |
| xsl:fallback | No |
| xsl:for-each | Yes |
| xsl:if | Yes |
| xsl:message | Yes |
| xsl:number | No |
| xsl:param | Yes |
| xsl:processing-instruction | Yes |
| xsl:text | Yes (@disable-output-escaping not supported) |
| xsl:value-of | Yes |
| xsl:variable | Yes |
Naxos is Copyright © 2006 by Deborah Pickett, debbiep hyphen naxos at futzle full-stop com. Naxos is released under the Artistic License 2.0, the Apache License 2.0, and the GNU Public License 2. You are free to use any part of Naxos in accordance with one or more of these licences.