XML::XOXO - Package for working with Extensible Open XHTML Outlines (XOXO) lists.


 #!/usr/bin/perl -w
 use strict; 
 use XML::XOXO;
 my $x = XML::XOXO::Parser->new; 
 my $xoxo = $x->parsefile('/Users/tima/Desktop/code/xoxo/test.xoxo');
 # print a list of urls and titles extracted from
 # the XOXO data.
 my @nodes = $xoxo->[0]->query('//li');
 foreach (@nodes) {
     if (defined $_->attributes->{url}) {
         print $_->attributes->{url};
         print ' '.$_->attributes->{title} if $_->attributes->{title};
         print "\n";
 # output the XOXO markup from the root element of 
 # the first list found.
 print $xoxo->[0]->as_xml;


XML::XOXO is an object-oriented Perl API for working with XOXO lists. The package includes a parser, a simple perlish object tree model and a basic facility for re-serializing the data into XHTML fragments. The intent of XML::XOXO was to provide developer's with the core functionality needed to implement this more expressive and versatile alternative to OPML in their applications. It was also designed as the foundation for a library to work with the attention.xml specification and API that is in-progress, but incomplete.


XML::Parser, Class::XPath


XML::XOXO::Parser, XML::XOXO::Node

Extensible Open XHTML Outlines (XOXO)


The software is released under the Artistic License. The terms of the Artistic License are described at


Except where otherwise noted, XML::XOXO is Copyright 2005, Timothy Appnel, All rights reserved.

2 POD Errors

The following errors were encountered while parsing the POD:

Around line 11:

=begin without a target?

Around line 79:

'=end' without a target?