abdera-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Garrett Rooney" <roo...@electricjellyfish.net>
Subject Re: Conneg & styling PIs
Date Sun, 06 Aug 2006 23:49:02 GMT
On 8/6/06, James M Snell <jasnell@gmail.com> wrote:
> Danny,
>
> There are two things you could do here.
>
> 1. Drop down to the Axiom APIs to add the PI (so the browser can apply
> the transform)
>
>     Factory factory = Factory.INSTANCE;
>     Document<Feed> doc = factory.newDocument();
>
>     // drop down to the Axiom interfaces
>     OMFactory omfactory = (OMFactory) factory;
>     omfactory.createOMProcessingInstruction(
>       (OMContainer)doc,
>       "xml-stylesheet",
>       "href=\"foo.xslt\"");
>
>     // then create the root element
>     factory.newFeed(doc);
>
>     doc.writeTo(System.out);
>
>     yields:
>
>     <?xml version='1.0' encoding='UTF-8'?>
>     <?xml-stylesheet href="foo.xslt"?>
>     <a:feed xmlns:a="http://www.w3.org/2005/Atom"/>
>
> 2. Apply the XSLT transform on the server.  You can apply XSLT
> transforms directly to the Abdera objects.
>
>     TransformerFactory factory = TransformerFactory.newInstance();
>
>     // Prepare the XSLT
>     Document xslt = Parser.INSTANCE.parse(
>       XsltExample.class.getResourceAsStream("/test.xslt"));
>     AbderaSource xsltSource = new AbderaSource(xslt);
>     Transformer transformer = factory.newTransformer(xsltSource);
>
>     // Now let's get the feed we're going to transform
>     Document<Feed> feed = Parser.INSTANCE.parse(
>       XsltExample.class.getResourceAsStream("/simple.xml"));
>     AbderaSource feedSource = new AbderaSource(feed);
>
>     // Transform and output
>     ByteArrayOutputStream out = new ByteArrayOutputStream();
>     Result result = new StreamResult(out);
>     transformer.transform(feedSource, result);
>     System.out.println(out);

Should we consider adding some non-axiom-specific way to do this sort
of thing?  Stylesheets are becoming more and more common in feeds, and
it would be nice to be able to portably add one to a feed generated by
Abdera.  Doing so via XSLT seems like an interesting work around, but
perhaps we should consider adding support for this to the core of the
system.

-garrett

Mime
View raw message