Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

Keynote APXL possibilities and research Apps
I was intrigued by the bundled .key file that Keynote presentations are saved in, and I had heard that Keynote was built on XML (APXL to be exact), so I decided to check it out.

At my company, we create a Windows-based PowerPoint monthly report (with Word tables and Excel charts) and I am interested in making a case for making it in Keynote. The typography alone might do it, but what if you added automating the content as well? You see, the presentation always has the exact same number of slides and the same tables and charts.

Read the rest of the article for some background info on the Keynote file format...

I'm only into my first hour of investigation, but here's what I've discovered so far (and I know VERY LITTLE about XML):
  1. The Keynote presentation APXL file is editable in BBEdit (and syntax-colored!). Apple has detailed info about the schema of the APXL on their developer site. It's VERY detailed, so I expect you could find enough to build an AppleScript Studio program to handle a lot of the presentation. Think of a 100 person organization with 1 copy of Keynote but with a distributed basic AppleScript slide maker on every desktop! You could always have the presentations meet corporate branding ID standards!

  2. If you have the keynote presentation open in Keynote and BBEdit and save a change in Keynote, it updates in BBEdit! This is very handy to see what your adjustments do to the APXL.

  3. Slides are identified by number:
    <slide id="slide-1" master-slide-id="master-slide-1">
    This could give you a way of identifying the beginning of each slide.

  4. Charts are fairly easily recognized and the data (a pie, for example) is broken into arrays within an array (the pie is the simplest example since it has one array for series names and one for their data):
    
    <array>
      <array>
        <null/>
        <string>Company1</string>
        <string>Company2</string>
        <string>Company3</string>
        <string>Company4</string>
      </array>
      <array>
        <string>Year-Over-Year</string>
        <string>250</string>
        <string>110</string>
        <string>15</string>
        <string>25</string>
      </array>
    </array>
    So, change the data in the second array and you've changed the data in the chart which Keynote will render the next time the presentation is opened. I'd like to find a better way to identifiy specific objects, though. "<!--" comments don't work because Keynote will wipe them out on the next save. If someone figures out how to comment out objects, please post it!)
Anyway, I think this APXL structure, once really understood, could lead to VERY robust scripting for making dynamic presentations. Don't forget you could also dynamically add images and other media to the .key bundle and reference those in your XML (see this hint, which means your AppleScript app could handle that, as well.

Hope this inspires some entreprenurial spirit to make some Keynote apps! Maybe tying information from Watson (your stock data, perhaps) and piping that into Keynote's XML charts? And that's just off the top of my head.

I'll post again if I get to a point where I actually have some dynamic action going on...
    •    
  • Currently 1.00 / 5
  • 1
  • 2
  • 3
  • 4
  • 5
  (1 vote cast)
 
[9,356 views]  

Keynote APXL possibilities and research | 6 comments | Create New Account
Click here to return to the 'Keynote APXL possibilities and research' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
OpenDarwin's Keynote Project
Authored by: digdog on Mar 25, '03 10:48:44AM

http://www.opendarwin.org/pipermail/keynote-tools/2003-March/000003.html



[ Reply to This | # ]
Keynote APXL possibilities and research
Authored by: Anonymous on Mar 25, '03 01:43:25PM

I just edited an keynote file for an client, i modified the disolvetime in the APXL file, and made an AppleScript that plays the file, controls the time between the slides and repeats it in an ongoing loop for display purposes.

An good dose of patience and some coding skills will get you some awesome results in keynote.



[ Reply to This | # ]
Automating animated slide show presentations
Authored by: martinx on Mar 25, '03 03:20:59PM

Ok, this might be slightly off topic, but... I can think of a great use for
this, but I don't know if Keynote supports what I would like to do.

Basically I would like to create a presentation that is a slideshow, except
I would like to animate the images in the slideshow. Panning and
zooming, at a rate I control. iMovie has this feature, which it calls the
"Ken Burns effect" but it takes way too much space to store the video. I
just want to store the original image and the numbers to control moving
the image extents around and zoom in real time.

Is this the type of thing that is possible using Keynote?
If so, I can imagine being able to write an app to generate the image
movement numbers, and writing them out to APXL...



[ Reply to This | # ]
Think XSLT
Authored by: wfolta on Mar 25, '03 07:38:29PM

You can use an XSLT processor to modify XML for various purposes. Like, say, turning it into HTML, or maybe taking XML from a database query and run it through an XSLT script to turn it into an APXL file.

If you want to learn more about XSLT, check out O'Reilly pages and download TestXSLT from versiontracker, etc. This tool provides two different XSLT processors and a graphical interface to test your scripts in. Very nice.



[ Reply to This | # ]
Keynote APXL possibilities and research
Authored by: Anonymous on Mar 26, '03 08:38:03PM

I'm fairly sure Keynote's file format isn't actually well-formed XML.



[ Reply to This | # ]
Keynote APXL possibilities and research
Authored by: Spartacus on Mar 30, '03 04:33:13PM

I'm fairly sure that not only is it well formed, but also that it validates against the APXL Schema provided here:

http://developer.apple.com/technotes/tn2002/tn2067.html

Of course, like you, I give no arguments to support my assertion.



[ Reply to This | # ]