<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>ASF: Extensions for XSLTC</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="stylesheet" type="text/css" href="resources/apache-xalan.css" />
</head>
<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements. See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership. The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the  "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 -->
<body>
<div id="title">
<table class="HdrTitle">
<tbody>
<tr>
<th rowspan="2">
<a href="../index.html">
<img alt="Trademark Logo" src="resources/XalanJ-Logo-tm.png" width="190" height="90" />
</a>
</th>
<th text-align="center" width="75%">
<a href="index.html">Xalan XSL Transformer User's Guide</a>
</th>
</tr>
<tr>
<td valign="middle">Extensions for XSLTC</td>
</tr>
</tbody>
</table>
<table class="HdrButtons" align="center" border="1">
<tbody>
<tr>
<td>
<a href="http://www.apache.org">Apache Foundation</a>
</td>
<td>
<a href="http://xalan.apache.org">Xalan Project</a>
</td>
<td>
<a href="http://xerces.apache.org">Xerces Project</a>
</td>
<td>
<a href="http://www.w3.org/TR">Web Consortium</a>
</td>
<td>
<a href="http://www.oasis-open.org/standards">Oasis Open</a>
</td>
</tr>
</tbody>
</table>
</div>
<div id="navLeft">
<ul>
<li>
<a href="resources.html">Resources</a>
<br />
</li>
<li>
<a href="http://xalan.apache.org/index.html">Home</a>
</li></ul><hr /><ul>
<li>
<a href="index.html">Xalan-J 2.7.2</a>
</li>
<li>
<a href="charter.html">Charter</a>
</li></ul><hr /><ul>
<li>
<a href="whatsnew.html">What's New</a>
</li>
<li>
<a href="readme.html">Release Notes</a>
</li></ul><hr /><ul>
<li>
<a href="overview.html">Overview</a>
</li>
<li>
<a href="downloads.html">Download/Build</a>
</li>
<li>
<a href="getstarted.html">Getting Started</a>
</li>
<li>
<a href="xsltc_usage.html">Using XSLTC</a>
</li></ul><hr /><ul>
<li>
<a href="faq.html">FAQs</a>
</li></ul><hr /><ul>
<li>
<a href="samples.html">Sample Apps</a>
</li>
<li>
<a href="commandline.html">Command Line</a>
</li></ul><hr /><ul>
<li>
<a href="features.html">Features</a>
</li>
<li>
<a href="trax.html">Transform API</a>
</li>
<li>
<a href="xpath_apis.html">XPath API</a>
</li>
<li>
<a href="usagepatterns.html">Usage Patterns</a>
</li></ul><hr /><ul>
<li>
<a href="apidocs/index.html">Xalan-J API</a>
</li>
<li>
<a href="public_apis.html">Public APIs</a>
</li>
<li>
<a href="dtm.html">DTM</a>
</li></ul><hr /><ul>
<li>
<a href="extensions.html">Extensions</a>
</li>
<li>
<a href="extensionslib.html">Extensions Library</a>
</li>
<li>XSLTC Exts<br />
</li></ul><hr /><ul>
<li>
<a href="design/design2_0_0.html">Xalan 2 Design</a>
</li>
<li>
<a href="xsltc/index.html">XSLTC Design</a>
</li></ul><hr /><ul>
<li>
<a href="builds.html">Building a release</a>
</li>
<li>
<a href="http://xml.apache.org/xalan-j/test/overview.html">Testing</a>
</li>
<li>
<a href="bugreporting.html">Bug Reporting</a>
</li></ul><hr /><ul>
<li>
<a href="contact_us.html">Contact us</a>
</li>
</ul>
</div>
<div id="content">
<h2>Extensions for XSLTC</h2>
<ul>
<li>
<a href="#intro">Introduction</a>
</li>
<li>
<a href="#constraints">Constraints</a>
</li>
<li>
<a href="#java_ext">Java extension</a>
</li>
<li>
<a href="#exslt_ext">EXSLT extensions</a>
</li>
<li>
<a href="#nodeset_ext">nodeset</a>
</li>
<li>
<a href="#redirect_ext">output/redirect</a>
</li>
</ul>
<a name="intro">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Introduction</h3>
  <p>XSLTC supports the use of extension functions implemented in external Java classes. It also
  supports the <a href="#nodeset_ext">nodeset</a>, <a href="#redirect_ext">output/redirect</a> 
  and <a href="#exslt_ext">EXSLT</a> extension functions. Extension support in XSLTC is
  still under development. It is currently not as complete as the extension support in the
  Xalan-Java Interpretive processor. There are constraints in some areas.</p>
  

<a name="constraints">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Constraints</h3>
  <p>In addition to the constraints listed below for each particular extension, extension support
  in XSLTC also has the following limitations:</p>
  <ol>
  <li>
<a href="extensions.html#ext-elements">Extension element</a> is not supported.
  The extension element mechanism is closely related to the internal implementation of the XSLT processor.
  The current extension element mechansim is designed for the Xalan-Java Interpretive processor. It does not work with XSLTC.</li>
  <li>The <a href="extensions.html#supported-lang">xalan:component and xalan:script</a> extension elements are not supported at the moment. This has
  the implication that you cannot use scripting languages (e.g. javascript) with XSLTC.</li>
  <li>
<a href="extensionslib.html#sql">The SQL extension</a> is not supported in XSLTC at the moment.</li>
  </ol>
  
  
<a name="java_ext">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>Java extension</h3>
  <p>Java extension is supported in XSLTC. Constructors, static and instance methods are all supported.
  You can use any of the <a href="extensions.html#ext-func-calls">three namespace formats</a>
   (Java, package and class) in your stylesheet.
  </p>
  <p>The official namespace for the Java extension is <code>http://xml.apache.org/xalan/java</code>. The old XSLTC Java namespace
  <code>http://xml.apache.org/xalan/xsltc/java</code> and the old Xalan-Java namespace <code>http://xml.apache.org/xslt/java</code>
  are also supported for backward compatibility.</p>
  <p>All usage syntax for the Xalan-Java Interpretive processor also applies to XSLTC with only one 
  exception: XSLTC does not support the notion of default object 
  in <a href="extensions.html#ext-func-calls">class format namespace</a>. 
  When using instance methods, you should always specify the class instance as the first argument
  to the extension function.</p>
  <p>The following example shows you how to call constructors, static, and nonstatic functions,
  using different namespace formats:</p>

  <blockquote class="source">
<pre>&lt;xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:date="http://xml.apache.org/xalan/java/java.util.Date"
    xmlns:java_lang="http://xml.apache.org/xalan/java/java.lang"
    exclude-result-prefixes="date java_lang"&gt;

  &lt;!--
  * test: construction of Date object using a parameter calculated
  *       by a static call to the java.lang.Math object. Then call
  *       a non-static method (getTime()) on the newly created Date
  *       object. Demonstrates calling constructors, static functions
  *       (Math.max) and non-static functions (getTime()).
  *
  * Output:
  *   &lt;?xml version="1.0" encoding="UTF-8"?&gt;
  *     Date of object: Sat Nov 30 17:32:41 EST 2002
  *     Time of object: 1038695561000
  *
  --&gt;

  &lt;xsl:template match="/"&gt;
   &lt;!-- create Date object with calculated parameter --&gt;
   &lt;xsl:variable name="dateObject"
     select="date:new(
         java_lang:Math.max(1027695561000,1038695561000)
     )"/&gt;
   Date of object: &lt;xsl:value-of select="$dateObject"/&gt;
   Time of object: &lt;xsl:value-of select="date:getTime($dateObject)"/&gt;
  &lt;/xsl:template&gt;

  &lt;/xsl:stylesheet&gt;
  </pre>
</blockquote>
  <table class="note">
<tr>
<td class="noteImg">
<img src="resources/note.gif" alt="note" />
</td>
<td class="noteTxt">Always use the abbreviated syntax for Java extension, because the xalan:component/xalan:script
  constructs are not supported in XSLTC.</td>
</tr>
</table>
  
  
<a name="exslt_ext">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>EXSLT extensions</h3>
  <p>The following EXSLT extension modules are supported in XSLTC:</p>
  <ul>
  <li>
<a href="apidocs/org/apache/xalan/lib/ExsltCommon.html">EXSLT common functions</a>
</li>
  <li>
<a href="apidocs/org/apache/xalan/lib/ExsltMath.html">EXSLT math functions</a>
</li>
  <li>
<a href="apidocs/org/apache/xalan/lib/ExsltSets.html">EXSLT set functions</a>
</li>
  <li>
<a href="apidocs/org/apache/xalan/lib/ExsltDatetime.html">EXSLT date-and-time functions</a>
</li>
  <li>
<a href="apidocs/org/apache/xalan/lib/ExsltStrings.html">EXSLT string functions</a>
</li>
  </ul> 
  <p>The functions in the <a href="apidocs/org/apache/xalan/lib/ExsltDynamic.html">dynamic</a> module 
  (e.g. evaluate) are not supported because of the XSLTC design limitation.
  Work is currently underway on <a href="http://www.exslt.org/func/elements/function/index.html">user 
  defined EXSLT functions (with the function and result elements)</a>.</p>
  <p>The <code>nodeset</code> and <code>objectType</code> extension functions in the <a href="apidocs/org/apache/xalan/lib/ExsltCommon.html">common</a> 
  module are implemented natively in XSLTC. For all other EXSLT extension functions,
  XSLTC uses the same implementation as the Xalan-Java Interpretive processor. The implementation classes 
  are under <code>org.apache.xalan.lib</code>.
  Depending on the packaging, these classes can be in a separate jar file (e.g. xalan.jar) from
  the XSLTC classes. In this case you need to add the jar file containing the EXSLT classes to your
  classpath in order to use EXSLT extensions in XSLTC.</p>
  
  
<a name="nodeset_ext">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>nodeset</h3>
  <p>XSLTC also supports the nodeset() extension function for transforming an RTF (result 
    tree fragment) into a node set.</p>
    <p>The nodeset extension can be used as an XSLTC extension function in the namespace
    <code>http://xml.apache.org/xalan/xsltc</code>, a Xalan-Java extension function in the namespace
    <code>http://xml.apache.org/xalan</code>, an EXSLT extension function in the namespace 
    <code>http://exslt.org/common</code> or as a standard XPATH function. When it is used as
    an EXSLT extension function, you need to refer to the nodeset extension function as 
    <code>node-set</code>.</p>
    <p>The following exmaple shows you how to use the nodeset extension
    function in different namespaces:</p>
    <blockquote class="source">
<pre>&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"        
  xmlns:xsltc-extension="http://xml.apache.org/xalan/xsltc"
  xmlns:xalan="http://xml.apache.org/xalan"
  xmlns:exslt="http://exslt.org/common"
  version="1.0"&gt;
  &lt;xsl:template match="/"&gt;
    &lt;xsl:variable name="rtf"&gt;
      &lt;docelem&gt;
        &lt;elem1&gt;elem1&lt;/elem1&gt;
        &lt;elem2&gt;elem2&lt;/elem2&gt;
      &lt;/docelem&gt;
    &lt;/xsl:variable&gt;
    &lt;!-- Use nodeset as an XSLTC extension function --&gt;
    &lt;xsl:value-of select="xsltc-extension:nodeset($rtf)/docelem/elem1"/&gt;
    &lt;!-- Use nodeset as a Xalan-Java extension function --&gt;
    &lt;xsl:value-of select="xalan:nodeset($rtf)/docelem/elem1"/&gt;
    &lt;!-- Use nodeset as an EXSLT extension function --&gt;
    &lt;xsl:value-of select="exslt:node-set($rtf)/docelem/elem1"/&gt;
    &lt;!-- Use nodeset as standard function --&gt;
    &lt;xsl:value-of select="nodeset($rtf)/docelem/elem1"/&gt;
  &lt;/xsl:template&gt; 
&lt;/xsl:stylesheet&gt;
</pre>
</blockquote>
<br />
<table class="note">
<tr>
<td class="noteImg">
<img src="resources/note.gif" alt="note" />
</td>
<td class="noteTxt">The preferred solution is to use the EXSLT node-set function so that it can work
with multiple XSLT processors.</td>
</tr>
</table>
  
  
<a name="redirect_ext">‌</a>
  <p align="right" size="2">
<a href="#content">(top)</a>
</p>
<h3>output/redirect</h3>
  <p>XSLTC supports the output extension element for redirecting the output to one 
  or more files. The output extension element is also aliased to the write extension element 
  in the namespace <code>http://xml.apache.org/xalan/redirect</code>. Therefore you can use
  it in the same way as the <a href="extensionslib.html#redirect">redirect</a> 
  extension in Xalan-Java.</p>
  <p>You can use the file and append attributes with the output/redirect extension. The value of the file
  attribute is an attribute value template. If the value of the append attribute is true or yes, the
  output is appended to the file rather than overwriting the file.</p>
  <p>The following example shows you how to use the output/redirect extension:</p>
    <blockquote class="source">
<pre> &lt;xsl:stylesheet 
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xsltc="http://xml.apache.org/xalan/xsltc"
   xmlns:redirect="http://xml.apache.org/xalan/redirect"
   extension-element-prefixes="xsltc redirect"
   version="1.0"&gt;
   &lt;xsl:template match="/"&gt;
     &lt;xsl:text&gt;This goes to standard output&lt;/xsl:text&gt;
     &lt;xsltc:output file="blob.xml"&gt;
       &lt;xsl:text&gt;This ends up in the file 'blob.xml'&lt;/xsl:text&gt;
     &lt;/xsltc:output&gt;
     &lt;redirect:write file="blob2.xml"&gt;
       &lt;xsl:text&gt;This ends up in the file 'blob2.xml'&lt;/xsl:text&gt;
     &lt;/redirect:write&gt;
   &lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;</pre>
</blockquote>  
  

<p align="right" size="2">
<a href="#content">(top)</a>
</p>
</div>
<div id="footer">Copyright © 1999-2014 The Apache Software Foundation<br />Apache, Xalan, and the Feather logo are trademarks of The Apache Software Foundation<div class="small">Web Page created on - Thu 2014-05-15</div>
</div>
</body>
</html>
