<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Brian Riggs</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/briggs/" />
    <link rel="self" type="application/atom+xml" href="http://blogs.adobe.com/briggs/atom.xml" />
   <id>tag:blogs.adobe.com,2008:/briggs/170</id>
    <link rel="service.post" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt-atom.cgi/weblog/blog_id=170" title="Brian Riggs" />
    <updated>2008-05-12T02:20:54Z</updated>
    <subtitle>On building a next-gen media player on AIR...</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 3.2</generator>
 
<entry>
    <title>Using AIR for XSLT Processing</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/briggs/2008/05/using_air_for_xslt_processing.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt-atom.cgi/weblog/blog_id=170/entry_id=5854" title="Using AIR for XSLT Processing" />
    <id>tag:blogs.adobe.com,2008:/briggs//170.5854</id>
    
    <published>2008-05-12T01:03:25Z</published>
    <updated>2008-05-12T02:20:54Z</updated>
    
    <summary>air xslt One of the features we&apos;re investigating for the next version of the media player requires that we be able to do client-side XSL transformations.&amp;#160; I had heard a few rumors that AIR exposes the XSLT processor that&apos;s built...</summary>
    <author>
        <name>Brian Riggs</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/briggs/">
        <![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>
	]]>
        
    </content>
</entry>
<entry>
    <title>Opening Credits</title>
    <link rel="alternate" type="text/html" href="http://blogs.adobe.com/briggs/2008/05/opening_credits.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://blogs.adobe.com/cgi-bin/mt-atom.cgi/weblog/blog_id=170/entry_id=5853" title="Opening Credits" />
    <id>tag:blogs.adobe.com,2008:/briggs//170.5853</id>
    
    <published>2008-05-11T22:11:51Z</published>
    <updated>2008-05-11T23:18:34Z</updated>
    
    <summary> Here&apos;s my intro, short and sweet.&amp;#160; My name is Brian Riggs, and I&apos;m the lead engineer for the Adobe Media Player project.&amp;#160; For the last year and a half, our team has been heads-down on development, but now that...</summary>
    <author>
        <name>Brian Riggs</name>
        
    </author>
    
    <content type="html" xml:lang="en" xml:base="http://blogs.adobe.com/briggs/">
        <![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>
  ]]>
        
    </content>
</entry>

</feed> 

