--- /dev/null
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use XML::Simple;
+use Data::Dumper;
+
+my $doc = XMLin(
+ 'kpac.xml',
+ KeyAttr => ['id'],
+ ForceArray => ['layout', 'page', 'cell'],
+ NormaliseSpace => 2
+);
+
+#print Dumper($doc);
+
+sub render_page {
+ my $id = shift;
+ my $page = $doc->{pages}->{page}->{$id};
+ my $ncols = $page->{columns};
+ my $idx = 0;
+
+ print $page->{name} . "\n";
+ print '-'x20 . "\n";
+ for my $cell (@{$page->{cell}}) {
+ if ($idx++ == $ncols) { print "\n\n"; $idx = 1; }
+
+ if ($cell->{type} eq 'topic') {
+ my $topic_page = $doc->{pages}->{page}->{$cell->{content}};
+ print $topic_page->{name} . " : " . $topic_page->{img} . " | ";
+
+ } elsif ($cell->{type} eq 'search') {
+ print $cell->{name} . " : " . $cell->{img} . " : " . $cell->{content} . " | ";
+
+ } elsif ($cell->{type} eq 'link') {
+ print $cell->{name} . " : " . $cell->{img} . " : " . $cell->{content} . " | " ;
+ }
+ }
+}
+
+
+for my $layout (@{$doc->{layout}}) {
+ render_page($layout->{page});
+ print "\n" . '-'x50 . "\n";
+}
+
+print "\n\n\n";
+
+render_page(10);
+
+
--- /dev/null
+<kpac version="1.0" xmlns="http://evergreen-ils.org/spec/OPAC/kpac/v1">
+ <pages>
+ <page id="1" columns="3" name="Home" img="/images/home.jpg">
+ <cell type="topic">10</cell>
+ <cell type="topic">11</cell>
+ <cell type="topic">12</cell>
+ </page>
+ <!-- ABC wants veggies first -->
+ <page id="23" columns="3" name="ABC Home" img="/images/abc-logo.jpg">
+ <cell type="topic">11</cell>
+ <cell type="topic">10</cell>
+ <cell type="topic">12</cell>
+ </page>
+ <page id="10" columns="3" name="Animals" img="/images/lion.jpg">
+ <cell name="Mammals" img="/images/koala.jpg" type="search">su:mammal audience(j)</cell>
+ <cell name="Reptiles" img="/images/snake.jpg" type="search">su:reptile audience(j)</cell>
+ <cell name="Fish" img="/images/fish.jpg" type="search">su:fish audience(j)</cell>
+ <cell name="Invertabrates" img="/images/starfish.jpg" type="search">su:invertebrate audience(j)</cell>
+ <cell name="Yeti" img="/images/yeti.jpg" type="search">su:yeti audience(j)</cell>
+ <cell name="Monsters" img="/images/monsters.jpg" type="search">su:monsters audience(j)</cell>
+ <cell name="Aliens" img="/images/aliens.jpg" type="search">su:aliens audience(j)</cell>
+ <cell name="Other Reading..." img="/images/book.jpg" type="link">http://wikipedia.org/animals</cell>
+ </page>
+ <page id="11" columns="1" name="Vegetables" img="/images/carrot.jpg">
+ <cell name="Greens" img="/images/kale.jpg" type="saved_search">92</cell>
+ <cell name="Bulbs" img="/images/onion.jpg" type="search">onions and such audience(j)</cell>
+ </page>
+ <page id="12" columns="3" name="Minerals" img="/images/rock.jpg">
+ <cell name="Igneous" img="/images/volcano.jpg" type="search">su:igneous rock audience(j)</cell>
+ <cell name="Sedimenatry" img="/images/lake.jpg" type="search">su:sedimentary rock audience(j)</cell>
+ <cell name="Metamorphic" img="/images/marble.jpg" type="search">su:metamorphic rock audience(j)</cell>
+ </page>
+ </pages>
+ <layout owner="1" page="1"/>
+ <layout owner="213" page="23"/>
+</kpac>