Hi Folks
I am using saxonb9-1-0-2j
When I serialize through a sax pipeline which is handling
ContentHandler and LexicalHandler events and I run through a saxon XSLT
transformer, my DOCTYPE dissapears unless I use the the saxon serializer.
When I run through a sax pipeline that just parses and serializes, my DOCTYPE
dissapears unless I use the Sun provided serializer.
This causes problems for generalizing the code.
Here is my XSL and serializer setup code below:
**************** XSL
<xsl:stylesheet version='2.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<!-- conrefTargets.xsl
Make the link target text for the navigation
link targets. This expects topic input.
-->
<xsl:output method="xml"
encoding="UTF-8" />
<xsl:param name='parm1' select="'Parm1
Default Value'"></xsl:param>
<!-- Define a newline character -->
<xsl:variable name='newline'>
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:variable name='topicId'
select='/topic/@id'></xsl:variable>
<!--
*********************************************************************************
The outer target node list.
*********************************************************************************
-->
<!-- <xsl:template
match="*|@*|text()"> -->
<xsl:template match='node()|@*'>
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="p">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
<p class="- topic/p
"><xref class="- topic/xref " href=""{$parm1}""
>Hello Link</xref></p>
</xsl:template>
</xsl:stylesheet>
//******************* SERIALIZER CODE
private void init(Writer writer)
{
try
{
TransformerFactory transFact = this.getTransformerFactory();
SAXTransformerFactory saxTFactory = (SAXTransformerFactory) transFact;
TransformerHandler serialT = saxTFactory.newTransformerHandler();
Transformer
t = serialT.getTransformer();
t.setOutputProperty(OutputKeys.METHOD, "xml"); // always Xml
StreamResult streamResult = new StreamResult(writer);
serialT.setResult(streamResult);
// set the
super pass through to point to here
super.setContentHandler(serialT);
super.setLexicalHandler(serialT);
}
catch
(TransformerConfigurationException ex)
{
throw new
SysException(ex);
}
}
/**
* Returns the Xml string from this
serializer.
* @return String xml.
*/
public String getXmlString()
{
return
m_charWriter.toString();
}
/**
* clear and reset this class so it
can create a new Xml serialization
* with a fresh set of incoming sax
events.
* WARNING!! This may be called after
construction but before any SAX events.
* You have passed this writer on
contruction, so clear it, not its reference.
* Thats why char writer was chosen.
*/
public void clear()
{
m_charWriter.reset();
}
private TransformerFactory
getTransformerFactory()
{
// TransformerFactory
transFact = new net.sf.saxon.TransformerFactoryImpl();
TransformerFactory
transFact = new TransformerFactoryImpl(); // gets the JDK internal one
return transFact;
}
http://www.bluestream.com
Jim Tivy
604 669 4469 x116