| <?xml version="1.0" standalone="no"?> |
| <!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd"> |
| |
| <!-- |
| * The Apache Software License, Version 1.1 |
| * |
| * |
| * Copyright (c) 1999-2003 The Apache Software Foundation. All rights |
| * reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in |
| * the documentation and/or other materials provided with the |
| * distribution. |
| * |
| * 3. The end-user documentation included with the redistribution, |
| * if any, must include the following acknowledgment: |
| * "This product includes software developed by the |
| * Apache Software Foundation (http://www.apache.org/)." |
| * Alternately, this acknowledgment may appear in the software itself, |
| * if and wherever such third-party acknowledgments normally appear. |
| * |
| * 4. The names "Xalan" and "Apache Software Foundation" must |
| * not be used to endorse or promote products derived from this |
| * software without prior written permission. For written |
| * permission, please contact apache@apache.org. |
| * |
| * 5. Products derived from this software may not be called "Apache", |
| * nor may "Apache" appear in their name, without prior written |
| * permission of the Apache Software Foundation. |
| * |
| * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED |
| * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
| * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR |
| * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF |
| * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
| * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT |
| * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| * SUCH DAMAGE. |
| * ==================================================================== |
| * |
| * This software consists of voluntary contributions made by many |
| * individuals on behalf of the Apache Software Foundation and was |
| * originally based on software copyright (c) 1999, Lotus |
| * Development Corporation., http://www.lotus.com. For more |
| * information on the Apache Software Foundation, please see |
| * <http://www.apache.org/>. |
| --> |
| |
| <s1 title="&xslt4j; Overview"> |
| <ul> |
| <li><link anchor="intro">Introduction</link></li> |
| <li><link anchor="features">&xslt4j; Features</link></li> |
| <li><link anchor="towork">Getting to work with &xslt4j;</link></li> |
| <li><link anchor="uptospeed">Getting up to speed with XSLT</link></li> |
| <li><link anchor="glossary">Glossary</link></li> |
| </ul> |
| <anchor name="intro"/> |
| <s2 title="Introduction"> |
| <p>&xslt4j; (named after a rare musical instrument) fully implements <resource-ref idref="xslt"/> |
| and the <resource-ref idref="xpath"/>. XSLT is the first part of the XSL stylesheet language for |
| XML. It includes the XSL Transformation vocabulary and XPath, a language for addressing parts of |
| XML documents. For links to background materials, discussion groups, frequently asked questions, |
| and tutorials on XSLT, see <link anchor="uptospeed">Getting up to speed with XSLT</link>.</p> |
| <note>XSL also includes a vocabulary for formatting documents, which is not part of &xslt4j;. |
| For more information, see <resource-ref idref="xsl"/> and the <jump |
| href="http://xml.apache.org/fop">Apache XML FOP (Formatting Objects Project)</jump>.</note> |
| <p>You use the XSLT language to compose XSL stylesheets. An XSL stylesheet contains instructions |
| for transforming XML documents from one document type into another document type (XML, HTML, |
| or other). In structural terms, an XSL stylesheet specifies the transformation of one tree of |
| nodes (the XML input) into another tree of nodes (the output or transformation result).</p> |
| <note>The XSL stylesheet may generate and refer to cascading style sheets (<jump |
| href="http://www.w3.org/Style/CSS/">CSS</jump>) as part of its output.</note> |
| <p>In the following example, the foo.xsl stylesheet is used to transform foo.xml into foo.out:</p> |
| <p>foo.xml:</p> |
| <source><?xml version="1.0"?> |
| <doc>Hello</doc></source> |
| <p>foo.xsl:</p> |
| <source><?xml version="1.0"?> |
| <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> |
| <xsl:template match="doc"> |
| <out><xsl:value-of select="."/></out> |
| </xsl:template> |
| </xsl:stylesheet></source> |
| <p>foo.out:</p> |
| <source><out>Hello</out></source> |
| <p>By default, &xslt4j; uses &xml4j;, and it may be configured with system properties to work with |
| other XML parsers (see <link idref="usagepatterns" anchor="plug">Plugging in a Transformer and |
| XML parser</link>). The input may be submitted in the form of a stream of XML markup (from a URI, |
| a character or byte stream, or another transformation), a SAX InputStream, or a DOM Node.</p> |
| <p>&xslt4j; performs the transformations specified in the XSL stylesheet and packages a sequence of |
| SAX events that may be serialized to an output stream or writer, used to build a DOM tree, or |
| forwarded as input to another transformation.</p> |
| </s2> |
| |
| <anchor name="features"/> |
| <s2 title="&xslt4j; Features"> |
| <ul> |
| <li>Includes an Interpretive processor for use in a tooling and debugging environment and |
| a Compiling processor (XSLTC) for use in a high performance runtime environment.<br/><br/></li> |
| <li>Implements the relevant W3C specifications: <resource-ref idref="xslt"/> and |
| <resource-ref idref="xpath"/>.<br/><br/></li> |
| <li>Implements <link idref="trax">TrAX (Transformation API for XML)</link>, now part of |
| <resource-ref idref="jaxp12"/>, and builds on <resource-ref idref="sax2"/> and |
| <resource-ref idref="dom2"/>.<br/><br/></li> |
| <li>May be configured to work with any XML parser, such |
| <jump href="http://xml.apache.org/xerces-j/index.html">&xml4j;</jump>, that implements |
| <resource-ref idref="jaxp12"/> (see <link idref="usagepatterns" anchor="plug">Plugging in an XML |
| parser</link>).<br/><br/></li> |
| <li>Can process Stream, SAX or DOM input, and output to a Stream, SAX or DOM.<br/><br/></li> |
| <li>Transformations may be chained (the output of one transformation may be the input for |
| another).<br/><br/></li> |
| <li>May be run from the <link idref="commandline">command line</link> for convenient file-to-file |
| transformations.<br/><br/></li> |
| <li>Includes an <link idref="usagepatterns" anchor="applet">applet wrapper</link>.<br/><br/></li> |
| <li>May be used in a <link idref="samples" anchor="servlet">servlet</link> to transform XML documents |
| into HTML and serve the results to clients.<br/><br/></li> |
| <li>Supports the creation of <link idref="extensions">Java and scripting language extensions</link>. |
| and provides a growing library of extension elements and functions.</li> |
| </ul> |
| </s2> |
| |
| <anchor name="towork"/> |
| <s2 title="Getting to work with &xslt4j;"> |
| <p>For instructions and some suggestions about how to get started using the XSLT Interpretive |
| processor, see <link idref="getstarted">Getting Started with Interpretive Processing</link>.</p> |
| <p>For instructions and some suggestions about how to get started using the XSLT Compiling |
| processor, see <link idref="xsltc_usage">Getting Started with XSLTC</link>.</p> |
| </s2> |
| |
| <anchor name="uptospeed"/> |
| <s2 title="Getting up to speed with XSLT"> |
| <p>If you are still working through the details of the XSLT spec (the W3C 1.0 Recommendation), you |
| may want to consult one or more of the following:</p> |
| <ul> |
| <li>XSLT - XSL Transformations in |
| <jump href="http://www.brics.dk/~amoeller/XML/"> |
| The XML Revolution: Technologies for the future Web</jump> by Anders Møller and Michael |
| I. Schwartzbach (Web pages, but designed for sequential reading)</li> |
| <li>Crane Softwright's <jump href="http://www.CraneSoftwrights.com/training/">Free preview of |
| Practical Transformation Using XSLT and XPath</jump><br/><br/></li> |
| <li>Doug Tidwell's <jump href="http://www.oreilly.com/catalog/xslt/">XSLT</jump>, O'Reilly, 2001 |
| <br/><br/></li> |
| <li>Bob Ducharme's <jump href="http://www.manning.com/ducharme/index.html">XSLT Quickly</jump>, |
| Manning Publications, 2001<br/><br/></li> |
| <li>John Robert Gardner and Zarella Rendon's |
| <jump href="http://vig.prenhall.com/catalog/academic/product/1,4096,0130404462,00.html">XSLT |
| and XPath: A Guide to Transformations</jump>, Prentice-Hall, 2001<br/><br/></li> |
| <li>Michael Kay's <jump href="http://www.wrox.com/Books/Book_Details.asp?ISBN=1861005067">XSLT |
| Programmer's Reference</jump>, 2nd ed., Wrox Press, 2001<br/><br/></li> |
| <li>Steven Holzner's <jump href="http://www.newriders.com/books/title.cfm?isbn=0735711364">Inside |
| XSLT</jump>, New Riders, 2001<br/><br/></li> |
| <li>Neil Bradley's <jump href="http://www.awlonline.com/product/0,2627,0201674874,00.html">XSL |
| Companion</jump>, Addison-Wesley, 2000<br/><br/></li> |
| <li>Khun Yee Fung's <jump href="http://www.awlonline.com/product/0,2627,0201711036,00.html">XSLT: |
| Working with XML and HTML</jump>, Addison-Wesley, 2001<br/><br/></li> |
| <li>Dave Pawson's <resource-ref idref="dpawsonxslfaq"/> to search out particular answers and |
| techniques<br/><br/></li> |
| <li>Miloslav Nic's <jump href="http://zvon.vscht.cz/HTMLonly/XSLTutorial/Books/Book1/index.html">XSL |
| Tutorial</jump>, a collection of stylesheet examples<br/><br/></li> |
| <li>Elliotte Rusty Harold's <jump href="http://metalab.unc.edu/xml/books/bible/updates/14.html"> |
| Chapter 14 of the XML Bible: XSL Transformations</jump><br/><br/></li> |
| <li>The Mulberry <jump href="http://www.mulberrytech.com/xsl/xsl-list/">XSL-List -- Open Forum on |
| XSL</jump> (of interest to XSL users at all levels)<br/><br/></li> |
| <li>Objects by Design's <jump href="http://www.objectsbydesign.com/projects/xmi_to_html.html"> |
| Transforming XMI to HTML</jump> (oriented towards XMI, "an XML-based, stream representation |
| of a UML model," but also covers "generic" XML transformations) and their related |
| <jump href="http://objectsbydesign.com/projects/xslt/xslt_by_example.html">XSLT by Example</jump> |
| <br/><br/></li> |
| <li>OASIS (the Organization for the Advancement of Structured Information Standards): |
| <jump href="http://www.oasis-open.org/cover/xsl.html">Extensible Stylesheet Language (XSL)</jump> |
| by Robin Cover<br/><br/></li> |
| <li>Donald Ball's <jump href="http://www.webslingerZ.com/balld/xsl/designer_manual.xml">A Guide to |
| XML and XSL for Designers</jump><br/><br/></li> |
| </ul> |
| <p>When you come across other useful introductory or background materials, please email |
| <human-resource-ref idref="xalandev"/>, so we can add them to this list.</p> |
| |
| </s2><anchor name="glossary"/> |
| <s2 title="Glossary"> |
| <gloss> |
| <label>XSLT Namespace</label> |
| <item>The <jump href="http://www.w3.org/TR/REC-xml-names/">XML namespace</jump> for XSLT. An XML |
| namespace is a collection of element and attribute names, identified by a Unique Resource |
| Identifier (URI), which often takes the form of a URL, but is really just a unique string, |
| not a pointer to a web page. The XSLT namespace URI is http://www.w3.org/1999/XSL/Transform. |
| In each XSLT stylesheet, you must declare this namespace in the stylesheet element tag and |
| bind it to a local prefix. Like the XSLT specification, we always use xsl as the XSLT |
| namespace prefix in our descriptions and examples, although you are free to bind any prefix |
| to this namespace.<br/><br/></item> |
| |
| <label>XSL Instruction</label> |
| <item>Any tag associated with the XSLT namespace.<br/><br/></item> |
| |
| <label>Template</label> |
| <item>An element, usually with child elements, that specifies a "rule" or set of |
| instructions to perform when a particular kind of node is encountered in the source |
| tree.<br/><br/></item> |
| |
| <label>XSL Template Instruction</label> |
| <item>Any tag that occurs inside an xsl:template element and is associated with the XSLT |
| namespace.<br/><br/></item> |
| |
| <label>Source Tree</label> |
| <item>The XML tree input to the XSL process.<br/><br/></item> |
| |
| <label>Result Tree</label> |
| <item>The tree that is output by the XSL process.<br/><br/></item> |
| |
| <label>Match Pattern</label> |
| <item>The part of a template that defines the kind(s) of nodes to which the template |
| applies.<br/><br/></item> |
| |
| </gloss> |
| <p>For more definitions of XSLT terminology, see Dave Pawson's |
| <jump href="http://www.dpawson.co.uk/xsl/vocab.html">XSLT Terminology |
| Clarification</jump> and the Glossary in Michael Kay's |
| <jump href="http://www.wrox.com/Consumer/Store/Details.asp?ISBN=1861003129">XSLT Programmer's Reference</jump>.</p> |
| </s2> |
| </s1> |