B
Bloody Viking
I've got an XSLT stylesheet which I've written and maintained for over
2 years now. I've always simply processed it with java
org.apache.xalan.xslt.Process, but now I'm trying to speed things up,
by compiling the stylesheet once, and processing hundreds of XML docs
with it. The output is HTML.
This is Java 1.4.1 on a Sparc9.
The relevant code:
in main():
TransformerFactory tFactory = TransformerFactory.newInstance();
translet = tFactory.newTemplates(new StreamSource(xslInURI));
and then, in a method:
Transformer transformer = translet.newTransformer();
transformer.setParameter("baseurl", baseurlParam);
transformer.setParameter("directory", dirParam);
transformer.setParameter("imageurl", imageParam);
transformer.transform(new StreamSource(xmlInURI),
new StreamResult(new
FileOutputStream(htmlOutURI)));
The problem is, unlike when using Process, the following bit of XSLT
inserts a newline between the </img> and the </a>, which causes the
HTML to display an undesirable underscore after cite.gif (which is a
small paragraph symbol the user is expected to click to invoke the
javascript).
In the source for this stylesheet, all the text within the <xsl:if> is
on a single line of nearly 700 characters.
<xsl:if test="@seqNum">
<a><xsl:attribute
name="href">javascript:showCitation('<xsl:value-of
select="$citableAuthors"/>','<xsl:value-of
select="$citableTitle"/>','<xsl:value-of
select="$journalName"/>','<xsl:value-of
select="$volume"/>','<xsl:value-of
select="$pages"/>','<xsl:value-of
select="$citableSectionTitle"/>','<xsl:value-of
select="@seqNum"/>&apos</xsl:attribute><img border="0"><xsl:attribute
name="src">/images/cite.gif</xsl:attribute><xsl:attribute
name="alt"><xsl:value-of select="$citableAuthors"/> S-<xsl:value-of
select="ancestor::*...@sectNum"/> #<xsl:value-of
select="@seqNum"/></xsl:attribute></img></a>
</xsl:if>
- Paul M Lieberman
American Psychological Association
2 years now. I've always simply processed it with java
org.apache.xalan.xslt.Process, but now I'm trying to speed things up,
by compiling the stylesheet once, and processing hundreds of XML docs
with it. The output is HTML.
This is Java 1.4.1 on a Sparc9.
The relevant code:
in main():
TransformerFactory tFactory = TransformerFactory.newInstance();
translet = tFactory.newTemplates(new StreamSource(xslInURI));
and then, in a method:
Transformer transformer = translet.newTransformer();
transformer.setParameter("baseurl", baseurlParam);
transformer.setParameter("directory", dirParam);
transformer.setParameter("imageurl", imageParam);
transformer.transform(new StreamSource(xmlInURI),
new StreamResult(new
FileOutputStream(htmlOutURI)));
The problem is, unlike when using Process, the following bit of XSLT
inserts a newline between the </img> and the </a>, which causes the
HTML to display an undesirable underscore after cite.gif (which is a
small paragraph symbol the user is expected to click to invoke the
javascript).
In the source for this stylesheet, all the text within the <xsl:if> is
on a single line of nearly 700 characters.
<xsl:if test="@seqNum">
<a><xsl:attribute
name="href">javascript:showCitation('<xsl:value-of
select="$citableAuthors"/>','<xsl:value-of
select="$citableTitle"/>','<xsl:value-of
select="$journalName"/>','<xsl:value-of
select="$volume"/>','<xsl:value-of
select="$pages"/>','<xsl:value-of
select="$citableSectionTitle"/>','<xsl:value-of
select="@seqNum"/>&apos</xsl:attribute><img border="0"><xsl:attribute
name="src">/images/cite.gif</xsl:attribute><xsl:attribute
name="alt"><xsl:value-of select="$citableAuthors"/> S-<xsl:value-of
select="ancestor::*...@sectNum"/> #<xsl:value-of
select="@seqNum"/></xsl:attribute></img></a>
</xsl:if>
- Paul M Lieberman
American Psychological Association