<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Brian Riggs</title>
      <link>http://blogs.adobe.com/briggs/</link>
      <description>On building a next-gen media player on AIR...</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Sun, 11 May 2008 17:03:25 -0800</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Using AIR for XSLT Processing</title>
         <description><![CDATA[<!-- #BeginTags --><p class="tags"><a href="http://www.technorati.com/tag/air xslt" rel="tag">air xslt</a></p><!-- #EndTags -->
	<p>One of the features we're investigating for the next version of the media player requires that we be able to do client-side XSL transformations.&#160; I had heard a few rumors that AIR exposes the XSLT processor that's built into WebKit (which is AIR's embedded HTML engine), so I shot off a couple of emails to the AIR team.&#160; Sure enough, this functionality is exposed through AIR's Javascript API. </p>
	<p>Here's a Javascript method that takes an XML document, an XSL transformation, and returns the result of transforming the document:</p>
	<blockquote style="background-color: #CCCCCC;">
      <pre>
function transformXML(xml,xsl)
{
  var domParser = new DOMParser();
  var xmlObject = domParser.parseFromString(xml,"text/xml");
  var xslObject = domParser.parseFromString(xsl,"text/xml");
  var xsltProcessor = new XSLTProcessor();
  xsltProcessor.importStylesheet(xslObject);
  var result = xsltProcessor.transformToFragment(
    xmlObject,document);

  var serializer = new XMLSerializer();
  return serializer.serializeToString(result);
}
</pre>
    </blockquote>
	<p>If you're building a pure-Javascript AIR app, then this is probably all you need.&#160; But if you want to use this functionality in an ActionScript-based AIR app, then there's one small problem:&#160; WebKit's API isn't available in ActionScript!&#160; Fortunately, there's a workaround: use the script bridging capabilities of AIR to call a Javascript function from ActionScript.&#160;First, you create a new instance of an HTMLLoader and pass in the URL of the HTML file that contains the transformXML function:</p>
	<blockquote style="background-color: #CCCCCC;">
      <pre>var html:HTMLLoader = new HTMLLoader();
var urlReq:URLRequest = new URLRequest("xslt.html");
html.load(urlReq);
</pre>
    </blockquote>
	<p>Then invoke the transformXML method via the HTMLLoader's window property:</p>
	<blockquote style="background-color: #CCCCCC;">
      <pre>
var result:String = html.window.transformXML(xml,xsl);
</pre>
    </blockquote>
	<p>Here's <a href="http://blogs.adobe.com/briggs/XSLTApp.air">a simple AIR app</a> that demonstrates this.&#160; Just enter some XML in the top text box, an XSLT in the second text box, click "Process", and you'll see the output in the lower text box.&#160; Right click on the application to see source code.    </p>
	]]></description>
         <link>http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html</link>
         <guid>http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html</guid>
         <category></category>
         <pubDate>Sun, 11 May 2008 17:03:25 -0800</pubDate>
      </item>
            <item>
         <title>Opening Credits</title>
         <description><![CDATA[	<p>Here's my intro, short and sweet.&#160; My name is Brian Riggs, and I'm the lead engineer for the <a href="http://www.adobe.com/products/mediaplayer/">Adobe Media Player</a> project.&#160; For the last year and a half, our team has been heads-down on development, but now that the media player has actually shipped (woohoo!), I've got a little bit more free time on my hands.&#160; I'm planning to use this blog to share my thoughts on developing on Flex and AIR.</p>
	<p><a href="http://www.adobe.com/products/air/">AIR</a> is an insanely cool platform on which to build a rich internet application.&#160;It boggles my mind that you can build and deploy an application that works on Windows, Mac, and (soon) Linux without writing any platform-specific code and without having to create any installers.&#160; For these reasons alone, AIR is probably the best technology I've seen for creating one-off demo apps and proofs of concept.&#160; And the combination of Flex/Flash with HTML/Javascript opens up some very interesting possibilities. </p>
	<p>I'm also hoping to talk about some of the interesting features in the media player, and how we implemented them.&#160; Speaking of the media player, anyone notice that  The Daily Show and The Colbert Report are now available?<BR/>
    </p>
  ]]></description>
         <link>http://blogs.adobe.com/briggs/2008/05/opening_credits.html</link>
         <guid>http://blogs.adobe.com/briggs/2008/05/opening_credits.html</guid>
         <category></category>
         <pubDate>Sun, 11 May 2008 14:11:51 -0800</pubDate>
      </item>
      
   </channel>
</rss>
