Subjects
Home
Xalan extension functions
Fomatting question serializing DOM with pretty print
xalan with pull parser
Cannot find the declaration
Apache Xalan drop support to run on JRE 1 1 x
Why does Doctype change processing of a document
Node set to XML string via Java extensions in Xalan J: possible?
Templates/Transformers + thread safety???
Problem evaluating xpath with muliple prefix with different namespace
remove an arbitrary attribute from xsl output
Xalan3 XSLT 2 0 XPath 2 0 support?
Problem using compiled translets with Xalan !!
Xalan and jstl 1 1 problem with transform tag
NullPointer in DOM2DTM getLocalName
URIResolvers base parameter with xsltc and cascaded imports
Performance problem for Xalan J on intel dual core
Standard libraries in JAXP?
Serializing a DOM tree to XML file, customize entities replacement
Library Conflict Involving BCEL Library
A question on how users are using <xsl:message >
Kevin Cormier as a new Apache Xalan J committer
Struggling to iterate over tokenized string
Xalan count() trouble
Problem with recursive xpath
Error when switching to java 1 5
document( ' ')
Problem with Xalan2 7 0 transformation
cr/lf options
entity encoded XML
can xalan transform 2 xml using one xslt?
Xalan J JIRA defect review Monday October 16, 2006 from 2:00 to 3:30 pm ED
xsl transform with cdata section elements
xslt parameters not expanded
Weird behavior of XPath evaluate()
How to avoid <xsl:message > instruction prints stylesheet file informations ?
Cannot find SimpleTransform subdirectory after installing Xalan J
recover from document not found exceptions
jdk1 5 and Xalan jar differences?
Performance Issue
Error/Bug adding floating point numbers
XPathAPI: eval exp using nodes with default namespace
modifying xalan to output invalid XML
NullPointerException
mege two separate xml nodes into one
Is this a XALAN document identification bug?
is StylesheetRoot really java io Serializable ?
transform() fails for DOMSource but succeeds for StreamSource
Thoughts on Transformer parameter passing
HELP, Xalan and jstl 1 1 problem with transformer
Problem with XPath namespace axis?
string utils:replace deleting search string if replacement string is an HTML
help with enumeration values pls
xalan 2 5 1 vs 2 7 performance question
How to insert/update in XML document
HTML Serialization and Handling of Ampersands in HREF Attributes
XHTML link tag stripping
SystemId Unknown; Line #24; Column #49; java lang NullPointerException
xpath text() help
Apostrophe problem with xalan 2 7 0
How to set variables in XML document?
Links
Home
Oracle database error code ...
 
Search:  
Power your search with and, or, +, -, or "some phrase" operators.
transform() fails for DOMSource but succeeds for StreamSource

transform() fails for DOMSource but succeeds for StreamSource

2003-08-15       - By SORENS,MICHAEL (HP-Boise,ex1)
Reply:     1     2     3     4     5     6  

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?

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
[File: TransformTest.java]
package com.cleancode.xml;

import java.io.File;
import java.io.FileOutputStream;

import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

import org.apache.xalan.serialize.Serializer;
import org.apache.xalan.serialize.SerializerFactory;
import org.apache.xalan.templates.OutputProperties;

public class TransformTest {

  private static void echoXml(Node node, String what) throws Exception
{
    System.out.println("Echoing "+what+":");
    Serializer serializer = SerializerFactory.getSerializer
 
(OutputProperties.getDefaultMethodProperties("xml"));
    serializer.setOutputStream(System.out);
    serializer.asDOMSerializer().serialize(node);
    System.out.println("");
    System.out.println("Echo "+what+" complete.");
  }

  public static void main( String[] args ) throws Exception {
    String inName = "test.xml";
    String outName = "test.out";
    String xslName = "test.xsl";
    boolean optA = (args.length > 0) && "-A".equals(args[0]);
    boolean optB = (args.length > 0) && "-B".equals(args[0]);
    boolean optC = (args.length > 0) && "-C".equals(args[0]);

    boolean ignoreWhitespace = false;
    boolean ignoreComments = false;
    boolean putCDATAIntoText = false;
    boolean createEntityRefs = false;
    DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    dbf.setIgnoringComments(ignoreComments);
    dbf.setIgnoringElementContentWhitespace(ignoreWhitespace);
    dbf.setCoalescing(putCDATAIntoText);
    dbf.setExpandEntityReferences(!createEntityRefs);
    DocumentBuilder db = dbf.newDocumentBuilder();
    Element docRoot = db.parse(inName).getDocumentElement();
    echoXml(docRoot, "Input");

    File XslFile = new File(xslName);
    TransformerFactory tFactory =
TransformerFactory.newInstance();
    Transformer transformer =
      tFactory.newTransformer(new StreamSource(XslFile));
    DOMResult dr = new DOMResult();
    if (optA) {
      transformer.transform(new StreamSource(inName), dr);
      echoXml(dr.getNode(), "Output");
    }
    else if (optB) {
      try { transformer.transform(new DOMSource(docRoot),
dr); }
      catch (Exception e) {
        System.out.println("transform
[DOMSource=>DOMResult] failed:" + e);
      }
      echoXml(dr.getNode(), "Output");
    }
    else if (optC) {
      transformer.transform(new DOMSource(docRoot),
        new StreamResult(new
FileOutputStream(outName)));
      System.out.println("output stored in " + outName);
    }
    else {
      System.out.println("usage: TransformTest [ -A|-B|-C
]");
    }
  }
}

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
[File: test.xsl]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:cc="stuff.com"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />

<xsl:template match="/files">
  <cc:myDoc>
  <xsl:for-each select="file">
    <cc:indexItem>
      <file><xsl:value-of select="."/></file>
    </cc:indexItem>
  </xsl:for-each>
  </cc:myDoc>
</xsl:template>

</xsl:stylesheet>

- - - - - - - - - - - - - - - - - - - - - - - - - - - -
[File: test.xml]
<?xml version="1.0" encoding="UTF-8"?>
<files>
  <file>motivation.xml</file>
  <file>history.xml</file>
</files>
- - - - - - - - - - - - - - - - - - - - - - - - - - - -