/** * Returns the result of an XSL Transformation as a JDOM document. * * <p>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 {@link #getResult} will return an * empty list. * * <p><strong>Warning</strong>: 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 {@link #getResult} instead of this method or at least expect <code>null</code> documents to * be returned. * * @return the transformation result as a JDOM document or <code>null</code> if the result of the * transformation can not be converted into a well-formed document. * @see #getResult */ public Document getDocument() { Document doc = null; // Retrieve result from the document builder if not set. this.retrieveResult(); if (result instanceof Document) { doc = (Document) result; } else { if ((result instanceof List) && (queried == false)) { // Try to create a document from the result nodes try { JDOMFactory f = this.getFactory(); if (f == null) { f = new DefaultJDOMFactory(); } doc = f.document(null); doc.setContent((List) result); result = doc; } catch (RuntimeException ex1) { // Some of the result nodes are not valid children of a // Document node. => return null. } } } queried = true; return (doc); }