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