java.lang.Objectjavax.xml.transform.sax.SAXResult
JDOMResult
public class JDOMResult
A holder for an XSL Transformation result, generally a list of nodes although it can be a JDOM Document also. As stated by the XSLT 1.0 specification, the result tree generated by an XSL transformation is not required to be a well-formed XML document. The result tree may have "any sequence of nodes as children that would be possible for an element node".
The following example shows how to apply an XSL Transformation to a JDOM document and get the transformation result in the form of a list of JDOM nodes:
public static List transform(Document doc, String stylesheet)
throws JDOMException {
try {
Transformer transformer = TransformerFactory.newInstance()
.newTransformer(new StreamSource(stylesheet));
JDOMSource in = new JDOMSource(doc);
JDOMResult out = new JDOMResult();
transformer.transform(in, out);
return out.getResult();
}
catch (TransformerException e) {
throw new JDOMException("XSLT Transformation failed", e);
}
}
transform.JDOMSource
Nested Class Summary | |
---|---|
private class | JDOMResult.DocumentBuilder |
private static class | JDOMResult.FragmentHandler |
Field Summary | |
---|---|
private static java.lang.String | CVS_ID |
private JDOMFactory | factory The custom JDOM factory to use when building the transformation result or null to use the default JDOM classes. |
static java.lang.String | JDOM_FEATURE If TransformerFactory.getFeature(java.lang.String) returns true when passed this value as an argument, the Transformer natively supports JDOM. |
private boolean | queried Whether the application queried the result (as a list or a document) since it was last set. |
private java.lang.Object | result The result of a transformation, as set by Transformer implementations that natively support JDOM, as a JDOM document or a list of JDOM nodes. |
Fields inherited from class javax.xml.transform.sax.SAXResult |
---|
FEATURE |
Fields inherited from interface javax.xml.transform.Result |
---|
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING |
Constructor Summary | |
---|---|
JDOMResult() Public default constructor. |
Method Summary | |
---|---|
Document | getDocument() Returns the result of an XSL Transformation as a JDOM document. |
JDOMFactory | getFactory() Returns the custom JDOMFactory used to build the transformation result. |
java.util.List | getResult() Returns the result of an XSL Transformation as a list of JDOM nodes. |
private void | retrieveResult() Checks whether a transformation result has been set and, if not, retrieves the result tree being built by the document builder. |
void | setDocument(Document document) Sets the document produced as result of an XSL Transformation. |
void | setFactory(JDOMFactory factory) Sets a custom JDOMFactory to use when building the transformation result. |
void | setHandler(org.xml.sax.ContentHandler handler) Sets the target to be a SAX2 ContentHandler. |
void | setLexicalHandler(org.xml.sax.ext.LexicalHandler handler) Sets the SAX2 LexicalHandler for the output. |
void | setResult(java.util.List result) Sets the object(s) produced as result of an XSL Transformation. |
Methods inherited from class javax.xml.transform.sax.SAXResult |
---|
getHandler, getLexicalHandler, getSystemId, setSystemId |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final java.lang.String CVS_ID
public static final java.lang.String JDOM_FEATURE
TransformerFactory.getFeature(java.lang.String)
returns true
when passed this value as an argument, the Transformer natively supports JDOM. Note: This implementation does not override the SAXResult.FEATURE
value defined by its superclass to be considered as a SAXResult by Transformer implementations not natively supporting JDOM.
private java.lang.Object result
private boolean queried
private JDOMFactory factory
null
to use the default JDOM classes. Constructor Detail |
---|
public JDOMResult()
Method Detail |
---|
public void setResult(java.util.List result)
Note: This method shall be used by the Transformer
implementations that natively support JDOM to directly set the transformation result rather than considering this object as a SAXResult
. Applications should not use this method.
result
- the result of a transformation as a list
of JDOM nodes (Elements, Texts, Comments, PIs...).getResult()
public java.util.List getResult()
If the result of the transformation is a JDOM document, this method converts it into a list of JDOM nodes; any subsequent call to getDocument()
will return null
.
public void setDocument(Document document)
Note: This method shall be used by the Transformer
implementations that natively support JDOM to directly set the transformation result rather than considering this object as a SAXResult
. Applications should not use this method.
document
- the JDOM document result of a transformation.setResult(java.util.List)
, getDocument()
public Document getDocument()
If the result of the transformation is a list of nodes, this method attempts to convert it into a JDOM document. If successful, any subsequent call to getResult()
will return an empty list.
Warning: The XSLT 1.0 specification states that the output of an XSL transformation is not a well-formed XML document but a list of nodes. Applications should thus use getResult()
instead of this method or at least expect null
documents to be returned.
null
if the result of the transformation can not be converted into a well-formed document.getResult()
public void setFactory(JDOMFactory factory)
factory
- the custom JDOMFactory
to use or null
to use the default JDOM classes.getFactory()
public JDOMFactory getFactory()
JDOMFactory
used to build the transformation result or null
if the default JDOM classes are being used.setFactory(JDOMFactory)
private void retrieveResult()
public void setHandler(org.xml.sax.ContentHandler handler)
setHandler
in class javax.xml.transform.sax.SAXResult
handler
- Must be a non-null ContentHandler reference.public void setLexicalHandler(org.xml.sax.ext.LexicalHandler handler)
This is needed to handle XML comments and the like. If the lexical handler is not set, an attempt should be made by the transformer to cast the ContentHandler to a LexicalHandler.
setLexicalHandler
in class javax.xml.transform.sax.SAXResult
handler
- A non-null LexicalHandler for handling lexical parse events.