Hi There.
I have a similar problem - fails for DOMSource but succeeds for StreamSource - but failure is not an error, it is a different output.

I have the following XML:
<apple xmlns="http://purl.oclc.org/NET/JSX/0.3/Apple";>
    <shop type="happy-days">
        <owner name="Jhon" type="big"/>
    </shop>
    <order name="GooGoo" type="org.goo" />
</apple>

I have two parsers - an identity-transformer and a xsl-transformer :
        Transformer tfCopy = javax.xml.transform.TransformerFactory
                              .newInstance().newTransformer();
        Transformer tf = javax.xml.transform.TransformerFactory
                        .newInstance()newTransformer(
                           new StreamSource(new File("Apple.xsl")));

I have three source type - by stream, builder-parsed, builder-created:
Document parsedDoc = builder.parse(new File("apple.xml"));
DOMSource parsedSource = new DOMSource(parsedDoc);
StreamSource streamSource = new StreamSource(new File("apple.xml"));
DOMSource builtSource = new DOMSource(build()); // build() is a manual build of the parsed document


When I use the identity-transformer the results are the same:
tfCopy.transform(streamSource, new StreamResult(new File("d:/streamed.xml"))); tfCopy.transform(builtSource, new StreamResult(new File("d:/built.xml"))); tfCopy.transform(parsedSource, new StreamResult(new File("d:/parsed.xml")));



When I use the XSL-based-transformer, results are completely different.
tf.transform(builtSource, new StreamResult(new File("d:/built.html"))); tf.transform(parsedSource, new StreamResult(new File("d:/parsed.html"))); tf.transform(streamSource, new StreamResult(new File("d:/streamed.html")));


I won't include them since they are long, but to sum up:
The stream-source gave the expected results.
The parsed-dom-source (from the same file as the stream-source) gave bad results - its like the Document was not recognized.
The manually-built-dom-source gave the expected results.


Question: how come identity-transformer worked fine with the parsed DOM and a xsl-transformer did not?


My current solution is:
Use the identity-transformer to copy from the parsed-dom to a result-dom. Then take the node from the result-dom. The XSL-transformer works fine with that node.

Thank you for your help,
Ziv.



SORENS,MICHAEL (HP-Boise,ex1) wrote:
I want to do a transform with a DOMSource input. If I do this from a file
(i.e. StreamSource), it works fine, but changing only the argument to
transform() to be a DOMSource, then the transformation fails with a
HIERARCHY_REQUEST_ERR. I boiled down a test for this to its simplest form,
containing 80 lines of code below. This code performs one of three
transforms (differing in type of argument) by invoking with "-A", "-B", or
"-C". It uses supplementary files test.xml and test.xsl following. Question 1: Why does transform() fail if I use a DOMSource argument??

I believe I am using Xalan 2.4.0 and Xerces 2.3.0.
Question 2: How does one query Xalan/Xerces to find the version number?

Reply via email to