You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by Roger Kjensrud <rk...@CJ.COM> on 2002/06/17 22:12:43 UTC
values ignored
Hello,
I am using Xalan 2.3.1 to chain XMLFilter together (similar to the "UseXMLFilters" example). The parent XMLReader is a custom reader that generates SAXEvents for a JDBC ResultSet. I would like to control the output format of the generated data, for example csv and xml, and reading under the "Usage Patterns" on the site it seems like I should be able to set the output properties, but I can't get it to work.
Here are some sample code to illustrate what I am doing:
1. Setting up and kicking off the transformation:
...
...
Serializer serializer = SerializerFactory.getSerializer
(OutputProperties.getDefaultMethodProperties("xml"));
serializer.setOutputStream(new FileOutputStream(outputFile));
xmlFilter.setContentHandler(serializer.asContentHandler());
xmlFilter.parse(inputSource);
2. Override the output properties:
When I want to output csv format, the xml declaration should be removed:
<xsl:output xalan:method="text" />
When I want to output xml format, add DTD to the generated XML file:
<xsl:output xalan:doctype-system="system_id" />
These <xsl:output> elements are ignored. I am able to get it working if I specify the OutputProperties when I create the serializer, but it would be much more convenient for me if I can do it in the stylesheets.
What am I doing wrong? Does the implementation of my custom XMLReader affect the overriding of the output properties?
Any feeback is much appreciated. Thanks for your time.
Roger Kjensrud
RE: values ignored
Posted by Gary L Peskin <ga...@firstech.com>.
Roger --
I'm using the examples in the UseXMLFilters example, since I don't have
your exact details. Instead of
XMLFilter xmlFilter3 = saxTFactory.newXMLFilter(new
StreamSource("foo3.xsl"));
on the "last" filter, create a Templates object instead like this:
Templates template3 = saxTFactory.newTemplates(new
StreamSource("foo3.xsl"));
A Templates object is a "compiled" representation of your foo3.xsl
stylesheet. Then, get the output properties designated by the foo3.xsl
stylesheet which will incorporate your xsl:output options:
Properties myProps = template3.getOutputProperties();
Now, you can build your serializer with the proper properties:
Serializer = SerializerFactory.getSerializer(myProps);
Finally, create your XMLFilter from the same compiled Templates object:
XMLFilter xmlFilter3 = saxTFactory.newXMLFilter(template3);
And you can continue with your existing code:
serializer.setOutputStream(new FileOutputStream(outputFile));
xmlFilter3.setContentHandler(serializer.asContentHandler());
xmlFilter3.parse(inputSource);
HTH,
Gary
> -----Original Message-----
> From: Roger Kjensrud [mailto:rkjensrud@CJ.COM]
> Sent: Monday, June 17, 2002 1:13 PM
> To: xalan-j-users@xml.apache.org
> Subject: <xsl:output> values ignored
>
>
> Hello,
>
> I am using Xalan 2.3.1 to chain XMLFilter together (similar
> to the "UseXMLFilters" example). The parent XMLReader is a
> custom reader that generates SAXEvents for a JDBC ResultSet.
> I would like to control the output format of the generated
> data, for example csv and xml, and reading under the "Usage
> Patterns" on the site it seems like I should be able to set
> the output properties, but I can't get it to work.
>
> Here are some sample code to illustrate what I am doing:
>
> 1. Setting up and kicking off the transformation:
> ...
> ...
> Serializer serializer = SerializerFactory.getSerializer
>
> (OutputProperties.getDefaultMethodProperties("xml"));
> serializer.setOutputStream(new
> FileOutputStream(outputFile));
>
> xmlFilter.setContentHandler(serializer.asContentHandler());
> xmlFilter.parse(inputSource);
>
> 2. Override the output properties:
>
> When I want to output csv format, the xml declaration should
> be removed:
>
> <xsl:output xalan:method="text" />
>
> When I want to output xml format, add DTD to the generated
> XML file: <xsl:output xalan:doctype-system="system_id" />
>
> These <xsl:output> elements are ignored. I am able to get it
> working if I specify the OutputProperties when I create the
> serializer, but it would be much more convenient for me if I
> can do it in the stylesheets.
>
> What am I doing wrong? Does the implementation of my custom
> XMLReader affect the overriding of the output properties?
>
> Any feeback is much appreciated. Thanks for your time.
>
> Roger Kjensrud
>
>
>
>