org.apache.xalan.lib
Class Extensions

java.lang.Object
  extended by org.apache.xalan.lib.Extensions

public class Extensions
extends java.lang.Object

This class contains many of the Xalan-supplied extensions. It is accessed by specifying a namespace URI as follows:

    xmlns:xalan="http://xml.apache.org/xalan"
 


Nested Class Summary
private static class Extensions.DocumentHolder
          This class is not loaded until first referenced (see Java Language Specification by Gosling/Joy/Steele, section 12.4.1) The static members are created when this class is first referenced, as a lazy initialization not needing checking against null or any synchronization.
 
Constructor Summary
private Extensions()
          Constructor Extensions
 
Method Summary
static org.w3c.dom.Node checkEnvironment(ExpressionContext myContext)
          Return a Node of basic debugging information from the EnvironmentCheck utility about the Java environment.
private static org.w3c.dom.Node checkEnvironmentUsingWhich(ExpressionContext myContext, org.w3c.dom.Document factoryDocument)
          Private worker method to attempt to use org.apache.env.Which.
static org.w3c.dom.NodeList difference(org.w3c.dom.NodeList nl1, org.w3c.dom.NodeList nl2)
          Returns the difference between two node-sets.
static org.w3c.dom.NodeList distinct(org.w3c.dom.NodeList nl)
          Returns node-set containing distinct string values.
static XObject evaluate(ExpressionContext myContext, java.lang.String xpathExpr)
          Returns the result of evaluating the argument as a string containing an XPath expression.
static boolean hasSameNodes(org.w3c.dom.NodeList nl1, org.w3c.dom.NodeList nl2)
          Returns true if both node-sets contain the same set of nodes.
static org.w3c.dom.NodeList intersection(org.w3c.dom.NodeList nl1, org.w3c.dom.NodeList nl2)
          Returns the intersection of two node-sets.
static NodeSet nodeset(ExpressionContext myProcessor, java.lang.Object rtf)
          This method is an extension that implements as a Xalan extension the node-set function also found in xt and saxon.
static org.w3c.dom.NodeList tokenize(java.lang.String toTokenize)
          Returns a NodeSet containing one text node for each token in the first argument.
static org.w3c.dom.NodeList tokenize(java.lang.String toTokenize, java.lang.String delims)
          Returns a NodeSet containing one text node for each token in the first argument.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Extensions

private Extensions()
Constructor Extensions

Method Detail

nodeset

public static NodeSet nodeset(ExpressionContext myProcessor,
                              java.lang.Object rtf)
This method is an extension that implements as a Xalan extension the node-set function also found in xt and saxon. If the argument is a Result Tree Fragment, then nodeset returns a node-set consisting of a single root node as described in section 11.1 of the XSLT 1.0 Recommendation. If the argument is a node-set, nodeset returns a node-set. If the argument is a string, number, or boolean, then nodeset returns a node-set consisting of a single root node with a single text node child that is the result of calling the XPath string() function on the passed parameter. If the argument is anything else, then a node-set is returned consisting of a single root node with a single text node child that is the result of calling the java toString() method on the passed argument. Most of the actual work here is done in MethodResolver and XRTreeFrag.

Parameters:
myProcessor - Context passed by the extension processor
rtf - Argument in the stylesheet to the nodeset extension function NEEDSDOC ($objectName$) @return

intersection

public static org.w3c.dom.NodeList intersection(org.w3c.dom.NodeList nl1,
                                                org.w3c.dom.NodeList nl2)
Returns the intersection of two node-sets.

Parameters:
nl1 - NodeList for first node-set
nl2 - NodeList for second node-set
Returns:
a NodeList containing the nodes in nl1 that are also in nl2 Note: The usage of this extension function in the xalan namespace is deprecated. Please use the same function in the EXSLT sets extension (http://exslt.org/sets).

difference

public static org.w3c.dom.NodeList difference(org.w3c.dom.NodeList nl1,
                                              org.w3c.dom.NodeList nl2)
Returns the difference between two node-sets.

Parameters:
nl1 - NodeList for first node-set
nl2 - NodeList for second node-set
Returns:
a NodeList containing the nodes in nl1 that are not in nl2 Note: The usage of this extension function in the xalan namespace is deprecated. Please use the same function in the EXSLT sets extension (http://exslt.org/sets).

distinct

public static org.w3c.dom.NodeList distinct(org.w3c.dom.NodeList nl)
Returns node-set containing distinct string values.

Parameters:
nl - NodeList for node-set
Returns:
a NodeList with nodes from nl containing distinct string values. In other words, if more than one node in nl contains the same string value, only include the first such node found. Note: The usage of this extension function in the xalan namespace is deprecated. Please use the same function in the EXSLT sets extension (http://exslt.org/sets).

hasSameNodes

public static boolean hasSameNodes(org.w3c.dom.NodeList nl1,
                                   org.w3c.dom.NodeList nl2)
Returns true if both node-sets contain the same set of nodes.

Parameters:
nl1 - NodeList for first node-set
nl2 - NodeList for second node-set
Returns:
true if nl1 and nl2 contain exactly the same set of nodes.

evaluate

public static XObject evaluate(ExpressionContext myContext,
                               java.lang.String xpathExpr)
                        throws org.xml.sax.SAXNotSupportedException
Returns the result of evaluating the argument as a string containing an XPath expression. Used where the XPath expression is not known until run-time. The expression is evaluated as if the run-time value of the argument appeared in place of the evaluate function call at compile time.

Parameters:
myContext - an ExpressionContext passed in by the extension mechanism. This must be an XPathContext.
xpathExpr - The XPath expression to be evaluated.
Returns:
the XObject resulting from evaluating the XPath
Throws:
org.xml.sax.SAXNotSupportedException - Note: The usage of this extension function in the xalan namespace is deprecated. Please use the same function in the EXSLT dynamic extension (http://exslt.org/dynamic).

tokenize

public static org.w3c.dom.NodeList tokenize(java.lang.String toTokenize,
                                            java.lang.String delims)
Returns a NodeSet containing one text node for each token in the first argument. Delimiters are specified in the second argument. Tokens are determined by a call to StringTokenizer. If the first argument is an empty string or contains only delimiters, the result will be an empty NodeSet. Contributed to XalanJ1 by Benoit Cerrina.

Parameters:
toTokenize - The string to be split into text tokens.
delims - The delimiters to use.
Returns:
a NodeSet as described above.

tokenize

public static org.w3c.dom.NodeList tokenize(java.lang.String toTokenize)
Returns a NodeSet containing one text node for each token in the first argument. Delimiters are whitespace. That is, the delimiters that are used are tab ( ), linefeed ( ), return ( ), and space ( ). Tokens are determined by a call to StringTokenizer. If the first argument is an empty string or contains only delimiters, the result will be an empty NodeSet. Contributed to XalanJ1 by Benoit Cerrina.

Parameters:
toTokenize - The string to be split into text tokens.
Returns:
a NodeSet as described above.

checkEnvironment

public static org.w3c.dom.Node checkEnvironment(ExpressionContext myContext)
Return a Node of basic debugging information from the EnvironmentCheck utility about the Java environment.

Simply calls the EnvironmentCheck utility to grab info about the Java environment and CLASSPATH, etc., and then returns the resulting Node. Stylesheets can then maniuplate this data or simply xsl:copy-of the Node. Note that we first attempt to load the more advanced org.apache.env.Which utility by reflection; only if that fails to we still use the internal version. Which is available from http://xml.apache.org/commons/.

We throw a WrappedRuntimeException in the unlikely case that reading information from the environment throws us an exception. (Is this really the best thing to do?)

Parameters:
myContext - an ExpressionContext passed in by the extension mechanism. This must be an XPathContext.
Returns:
a Node as described above.

checkEnvironmentUsingWhich

private static org.w3c.dom.Node checkEnvironmentUsingWhich(ExpressionContext myContext,
                                                           org.w3c.dom.Document factoryDocument)
Private worker method to attempt to use org.apache.env.Which.

Parameters:
myContext - an ExpressionContext passed in by the extension mechanism. This must be an XPathContext.
factoryDocument - providing createElement services, etc.
Returns:
a Node with environment info; null if any error