Node-set to XML string via Java extensions in Xalan-J: possible? 2007-02-22 - By Mike Brown
Mike Brown wrote: > I'm trying to serialize nodes to an XML string, using Java extensions. I'm > trying to avoid writing my own. I thought perhaps I could use the > DOMSerializer in Xalan-J.
FWIW, using JAXP methods, as shown below, seems to work OK. I'd still like to know what went wrong with the DOMSerializer, though.
<xsl:template match="/"> <!--Node node = (a node-set for which the 1st node in document order will be serialized)--> <xsl:variable name="node" select="/"/> <!--TransformerFactory tfactory = new TransformerFactory.newInstance();--> <xsl:variable name="tfactory" select="java:javax.xml.transform .TransformerFactory.newInstance()"/> <!--Transformer t = tfactory.newTransformer();--> <xsl:variable name="t" select="java:newTransformer($tfactory)"/> <!--DOMSource isrc = new DOMSource(nodeset);--> <xsl:variable name="isrc" select="java:javax.xml.transform.dom.DOMSource .new($node)"/> <!--StringWriter buffer = new StringWriter();--> <xsl:variable name="buffer" select="java:java.io.StringWriter.new()"/> <!--StreamResult result = new StreamResult(buffer);--> <xsl:variable name="result" select="java:javax.xml.transform.stream .StreamResult.new($buffer)"/> <!--t.transform(isrc, result)--> <xsl:variable name="void0" select="java:transform($t, $isrc, $result)"/> <!--System.out.write(buffer.toString());--> <!--Also clean up newlines--> <xsl:value-of select="translate(java:toString($buffer), ' ', '')"/> </xsl:template>
Mike
|
|