blob: 408e7988c5cab5442bdb9cf69818ca8677ea4b03 [file] [log] [blame]
<?xml version="1.0" standalone="no"?>
<!DOCTYPE s1 SYSTEM "../../style/dtd/document.dtd">
<!--
* The Apache Software License, Version 1.1
*
*
* Copyright (c) 1999 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 the <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>&lt;?xml version="1.0"?>
&lt;doc>Hello&lt;/doc></source>
<p>foo.xsl:</p>
<source>&lt;?xml version="1.0"?>
&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
&lt;xsl:template match="doc">
&lt;out>&lt;xsl:value-of select="."/>&lt;/out>
&lt;/xsl:template>
&lt;/xsl:stylesheet></source>
<p>foo.out:</p>
<source>&lt;out>Hello&lt;/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>Implements the relevant W3C specifications: <resource-ref idref="xslt"/> and <resource-ref idref="xpath"/>.<br/><br/></li>
<li>Implements <resource-ref idref="trax"/>, now part of <resource-ref idref="jaxp"/>, 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="jaxp"/> (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 &xslt4j;, see
<link idref="getstarted">Getting Started</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>Michael Kay's <jump href="http://www.wrox.com/Consumer/Store/Details.asp?ISBN=1861003129">XSLT Programmer's
Reference</jump>, Wrox Press, 2000<br/><br/></li>
<li>Neil Bradley's XSL Companion, Addison-Wesley, 2000<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>Crane Softwright's <jump href="http://www.CraneSoftwrights.com/training/">Free preview of Practical
Transformation Using XSLT and XPath</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>Dave Pawson's <resource-ref idref="dpawsonxslfaq"/><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)<br/><br/></li>
<li>Objects by Design;'s <jump href="http://objectsbydesign.com/projects/xslt/xslt_by_example.html">XSLT by
Example</jump><br/><br/></li>
<li>Miloslav Nic's <jump href="http://zvon.vscht.cz/HTMLonly/XSLTutorial/Books/Book1/index.html">XSL Tutorial</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>
<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&oslash;ller and Michael I. Schwartzbach</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>