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.
Node-set to XML string via Java extensions in Xalan-J: possible?

Node-set to XML string via Java extensions in Xalan-J: possible?

2007-02-22       - By Mike Brown
Reply:     1     2     3     4     5     6     7  

Kevin Cormier wrote:
> The getDefaultMethodProperties(String method) method of the
> org.apache.xml.serializer.OutputPropertiesFactory class is static, so you
> can't call it on the instance that you've created.  You can call it like
> this:
>
> <xsl:variable name="formatprops"
> select="java:org.apache.xml.serializer.OutputPropertiesFactory
.getDefaultMethodProperties('xml')"/>
>
> As for the SerializerFactory, its constructor is private, so it can't be
> instantiated directly.  You have to use the static getSerializer(Properties
> format) method to obtain an instance.

Ah! Thank you! That was exactly what I needed. I knew I must've overlooked
something. Here's XSLT demonstrating both the pure-JAXP and DOMSerializer
methods. I couldn't find a SAXSerializer in the Xalan 2.7.1 distribution.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:java="http://xml.apache.org/xalan/java">

 <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:text>JAXP:&#10;=====&#10;</xsl:text>
    <xsl:call-template name="serialize-xml-via-JAXP"/>
    <xsl:text>&#10;&#10;org.apache.xml.serializer.DOMSerializer:&#10;============
============================&#10;</xsl:text>
    <xsl:call-template name="serialize-xml-via-DOMSerializer"/>
  </xsl:template>

  <xsl:template name="serialize-xml-via-JAXP">
    <!--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(
.)"/>
    <!--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>

  <xsl:template name="serialize-xml-via-DOMSerializer">
    <!--String method = org.apache.xml.serializer.Method.XML;
       Properties formatprops = OutputPropertiesFactory
.getDefaultMethodProperties(method);-->
    <xsl:variable name="formatprops" select="java:org.apache.xml.serializer
.OutputPropertiesFactory.getDefaultMethodProperties('xml')"/>
    <!--Serializer serializer = SerializerFactory.getSerializer(formatprops);-->
    <xsl:variable name="serializer" select="java:org.apache.xml.serializer
.SerializerFactory.getSerializer($formatprops)"/>
    <!--StringWriter buffer = new StringWriter();-->
    <xsl:variable name="buffer" select="java:java.io.StringWriter.new()"/>
    <!--serializer.setWriter(buffer);-->
    <xsl:variable name="void1" select="java:setWriter($serializer, $buffer)"/>
    <!--DOMSerializer domserializer = serializer.asDOMSerializer();-->
    <xsl:variable name="domserializer" select="java:asDOMSerializer($serializer)"
/>
    <!--domserializer.serialize(node);-->
    <xsl:variable name="void2" select="java:serialize($domserializer, .)"/>
    <!--System.out.write(buffer.toString());-->
    <xsl:value-of select="java:toString($buffer)"/>
  </xsl:template>

</xsl:stylesheet>