Hi, Ajay. ajay bhadauria <[EMAIL PROTECTED]> wrote on 2008-10-27 01:10:34 PM: > I am using xalan jar files for xsl transformation. I am using my > custom class to call java method. It gives me below error if I add > another node within /Doc:Document/Doc:camt.028.001.02/Doc:Assgnmt . > Please see the attached file c.xml file > > SystemId Unknown; Line #0; Column #0; org.w3c.dom.DOMException: > HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it > is not permitted.
I can't actually run your test, as I don't have your Validator class. However, I'm guessing that your stylesheet produces a result tree that consists of a root node with a non-whitespace text node child. Your Java program contains the following. DocumentBuilder dBuilder = dFactory.newDocumentBuilder(); Document doc = dBuilder.newDocument(); ... Source source = new DOMSource( document ); Result result = new DOMResult( doc ); System.out.println("debug1"); xformer.transform( source,result); So it's using a DOM Document node to contain the result. Although the XPath data model and XSLT allow for trees where the root node has non-whitespace text node children, and more than one element child, DOM Document nodes permit only one Element node child and no non-whitespace Text node children. To fix this, create either a DOM DocumentFragment node or a DOM Element node to contain the result tree, like this: DocumentFragment resultRoot = doc.createDocumentFragment(); Result result = new DOMResult( resultRoot ); Or you can use the zero-argument DOMResult constructor, in which case the processor will create a DocumentFragment node for you, like this: Result result = new DOMResult(); System.out.println("debug1"); xformer.transform( source,result); Node resultRoot = result.getNode(); I hope that helps. Thanks, Henry ------------------------------------------------------------------ Henry Zongaro XML Transformation & Query Development IBM Toronto Lab T/L 313-6044; Phone +1 905 413-6044 mailto:[EMAIL PROTECTED]