| <?xml version="1.0" standalone="no"?> |
| <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"[ |
| <!ENTITY xsltcdone SYSTEM "XSLTCDONE"> |
| <!ENTITY xsltc_history SYSTEM "xsltc_history.xml">]> |
| |
| <s1 title="XSLTC Release Notes"> |
| <p>For this release, please note the following changes, additions, omissions, problems, procedures for running demos, |
| and new support for the TrAX API.</p> |
| <p>For an introduction to XSLTC, see <link idref="xsltc_usage">Using XSLTC</link>.</p> |
| <ul> |
| <li><link anchor="xsltcnew">Changes and New Features</link></li> |
| <li><link anchor="xsltcconf">Conformance</link></li> |
| <li><link anchor="xsltcknownproblems">Known Problems</link></li> |
| <li><link anchor="xsltcdemos">Running Demos</link></li> |
| <li><link anchor="xsltctrax">Translets and TrAX</link></li> |
| <li><link idref="xsltc_history">History of XSLTC software changes</link></li> |
| </ul> |
| <anchor name="xsltcnew"/> |
| <s2 title="Changes since &xslt4j; 2.2.D14"> |
| &xsltcdone; |
| </s2> |
| <anchor name="xsltcconf"/> |
| <s2 title="XSLT 1.0 Conformance and Extensions"> |
| <p>XSLTC does not yet support the following feature of the <resource-ref idref="xslt"/>:</p> |
| <ul> |
| <li>The namespace axis is not implemented. You cannot get a node set containing the namespace nodes |
| in scope from a context node in the document tree. Otherwise, namespace functionality is implemented.</li> |
| </ul> |
| <p>XSLTC does not support a number of features that are not required by the XSLT 1.0 specification, |
| but which are supported by a number of other XSLT processors:</p> |
| <ul> |
| <li>Incomplete support for extension elements and external Java functions. Currently you can set up an extension function |
| to call a static Java function. For the extension namespace, use<br/> |
| http://xml.apache.org/xalan/xsltc/java/<class><br/> |
| where <class> identifies the class with the static method.</li> |
| <li>Lack of support for the redirection of output to multiple |
| output files from within a stylesheet (equivalent to xalan:redirect or |
| saxon:output).</li> |
| <li>XSLTC does not implement a node-set extension to convert result tree fragments to |
| node-sets. This would enable sorting and grouping of nodes assigned to a tree </li> |
| </ul> |
| </s2> |
| <anchor name="xsltcknownproblems"/> |
| <s2 title="Known Problems"> |
| <ul> |
| <li>Casting variables: XSLTC requires you to explicitly type cast values |
| returned by variables or expressions, when you use them in tests. Always a good |
| practice, but it may seem like overkill in some in contexts, where other XSLT processors |
| automatically assume or convert to the correct type. For example. unless you cast $country |
| to a string in the following apply-templates, entry nodes whose <country> elements |
| contain a string matching the global $country parameter are NOT selected.<br/><br/> |
| <code><xsl:apply-templates select="entry[country=string($country)]"/></code></li> |
| <li>Order dependency of conditions within a predicate: If you have a predicate in a select or match |
| expression that has multiple conditions, one of which contains a union (X or Y), put it last. |
| Otherwise, the predicate fails to match node that it should.</li> |
| <li>When using DOM caching, as shown in the Servlet demo, if the source document is local to the |
| server, the cache is not refreshed when the source XML document is modified. This |
| problem does not apply when the source is associated with a URL.</li> |
| <li>If you have a list of references included or imported stylesheets, put any with |
| a relative path last; otherwise, stylesheets in the current directory are not found.</li> |
| <li>[1] should be treated equivalent to position()=1, but it is not. Therefore, if |
| you get unexpected results using such shortcut positional predicates, substitute the |
| full postion()= version.</li> |
| <li>XSLTC fails to match existing nodes when match expressions have |
| multiple steps with predicates containing the position function. |
| The following examples are taken from the XSLTMark oddtemplates.xsl test:<br/><br/> |
| <code> match='top/*[position()=2]'</code><br/> |
| <code> match='top/*[6]/kid[2]'</code><br/> |
| <code> match='top/*[position()=last()]'</code><br/></li> |
| <li>XSTLC has problems with output escaping, see bug 1403.</li> |
| <li>Case-order option with sorting is ignored.</li> |
| <li>As a minor side-effect of implementing simplified stylesheets, if you inadvertenly |
| go to compile a stylesheet and give the name of the .xml doc instead of the .xsl doc, |
| it may compile without a warning. In some cases, the compiler aborts with an error |
| about too many branches.</li> |
| </ul> |
| </s2> |
| <anchor name="xsltcdemos"/> |
| <s2 title="Running Demos"> |
| <p>XSLTC provides demos for using XSLTC as a servlet and as a handler for |
| Brazil (a new and powerful Web techology from Sun labs). To run these demos, |
| download Brazil from sunlabs:</p> |
| <p><code> <jump href="http://research.sun.com/research/download/index.html">http://research.sun.com/research/download/index.html</jump></code></p> |
| <p>and the java extensions for servlets from Sun:</p> |
| <p><code> |
| <jump href="http://java.sun.com/products/servlet/download.html"> |
| http://java.sun.com/products/servlet/download.html</jump> |
| </code></p> |
| <p>The translet must be specified as a pure class name, accessible |
| through the Brazil handler's classpath. For example:</p> |
| <p><code> translet=mk054</code></p> |
| <p>The document must be specified as a valid URL. For example:</p> |
| <p><code> document=http://server/path/to/filename.xml</code></p> |
| <p>If the file is local to the Brazil handler, it has to be |
| specified using the "file:filename.xml" format.</p> |
| <note>You also need to make the Brazil and javax classes available from your classpath</note> |
| <p>See also: <link idref="samples" anchor="translets">sample JAXP translets</link>.</p> |
| </s2> |
| |
| <anchor name="xsltctrax"/> |
| <s2 title="Translets and TrAX"> |
| <p> |
| The Translet API has been extended to conform with the JAXP1.1 TrAX model. |
| This release contains the first implementation of that extension. Two |
| new classes have been added to the Translet XSLT codebase, they are:</p> |
| <p>(1) <code>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</code> -<br/> |
| the Translet implementation of a SAXTransformerFactory.</p> |
| <p>(2) <code>org.apache.xalan.xsltc.runtime.TransletTemplates</code> - |
| the Translet implementation of a Templates object.</p> |
| <p> |
| The existing XSLT class 'org.apache.xalan.xsltc.runtime.AbstractTranslet' |
| that implements the Translet interface is now also extending the |
| javax.xml.transform.Transformer abstract class. |
| </p> |
| <p> |
| This implementation is only a partial implementation, with many limitations. |
| These limitations include: |
| </p> |
| <ol> |
| <li>Currently 'StreamSource' and 'StreamResult' are the only |
| TrAX Sources and Results that are supported.</li> |
| <li>The translet is compiled everytime a call is made to the<br/> |
| <code>TransformerFactoryImpl 'newTransformer()'</code> method.</li> |
| <li>The translet is compiled everytime a call is made to the <br/> |
| <code>TemplateFactoryImpl 'newTransformer()'</code> method.</li> |
| <li>Translet are currently not cached. (See (2) and (3)).</li> |
| <li>Several abstract methods from SAXTransformerFactory still need to |
| be implemented in the xsltc.runtime.TransformerFactoryImpl class:<br/><br/> |
| <code> TemplatesHandler newTemplatesHandler()</code><br/> |
| <code> TransformerHandler newTransformerHandler()</code><br/> |
| <code> TransformerHandler newTransformerHandler(Source src)</code><br/> |
| <code> TransformerHandler newTransformerHandler(Templates templates)</code><br/> |
| <code> XMLFilter newXMLFilter(Source src)</code><br/> |
| <code> XMLFilter newXMLFilter(Templates templates)</code></li> |
| <li>Several abstract methods from Transformer still need to be implemented in the |
| AbstractTranslet class:<br/><br/> |
| <code> ErrorListener getErrorListener()</code><br/> |
| <code> void setErrorListener(ErrorListener)</code><br/> |
| <code> Properties getOutputProperties()</code><br/> |
| <code> String getOutputProperty(String name)</code><br/> |
| <code> void setOutputProperties(Properties props)</code><br/> |
| <code> void setOutputProperty(String name, String value)</code><br/> |
| <code> URIResolver getURIResolver()</code><br/> |
| <code> void setURIResolver(URIResolver resolver)</code></li> |
| <li>Abstract method from Templates still need to be implemented in the TransletTemplates class:<br/><br/> |
| <code> Properties getOutputProperties()</code></li> |
| <li>Several abstract methods from TransformerFactory still need to be implemented |
| in the <code>xsltc.runtime.TransformerFactoryImpl</code> class:<br/><br/> |
| <code> ErrorListener getErrorListener()</code><br/> |
| <code> void setErrorListener(ErrorListener listener)</code><br/> |
| <code> Object getAttribute(String name)</code><br/> |
| <code> void setAttribute(String name, Object value)</code><br/> |
| <code> boolean getFeature(String name)</code><br/> |
| <code> URIResolver getURIResolver()</code><br/> |
| <code> void setURIResolver(URIResolver resolver)</code><br/> |
| <code> Source getAssociatedStylesheet(Source src, String media, String title,</code><br/> |
| <code> String charset)</code><br/> |
| <code> Templates newTemplates(Source xslSrc)</code><br/> |
| <code> Transformer newTransformer()</code></li> |
| <li>Whenever possible, the required methods that are currently unimplemented will throw an |
| exception if someone tries to call them- this will alert the user that the method is not implemented. |
| The message is of the form:<br/><br/> |
| <code> "<Class Name>:<Method Name>( <args> ) not implemented yet."</code> |
| </li> |
| </ol> |
| </s2> |
| </s1> |