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), '&#13;', '')"/>
  </xsl:template>

Mike

Reply via email to