/** Process the tag. */ public int doEndTag() throws JspException { try { PageContextImpl pageContext = (PageContextImpl) this.pageContext; ELContext env = pageContext.getELContext(); JspWriter out = pageContext.getOut(); TransformerFactory factory = TransformerFactory.newInstance(); Source source = getSource(_xslt, _xsltSystemId); Transformer transformer = factory.newTransformer(source); for (int i = 0; i < _paramNames.size(); i++) { String name = _paramNames.get(i); String value = _paramValues.get(i); transformer.setParameter(name, value); } if (_xml != null) source = getSource(_xml, _xmlSystemId); else { BodyContent bodyContent = getBodyContent(); source = new StreamSource(bodyContent.getReader()); source.setSystemId(((HttpServletRequest) pageContext.getRequest()).getRequestURI()); } Result result; Node top = null; if (_result != null) { result = (Result) _result.evalObject(env); } else if (_var != null) { top = new com.caucho.xml.QDocument(); result = new DOMResult(top); } else result = new StreamResult(out); transformer.transform(source, result); if (_var != null) CoreSetTag.setValue(pageContext, _var, _scope, top); } catch (Exception e) { throw new JspException(e); } return SKIP_BODY; }