For me it appears that
XML::XSLT croaks when it tries to open an external XML file. Line 62 of
blog.xsl confirms it:
<xsl:for-each select="document('menu.xml')/menu/item">
Have you provided the file
menu.xml for the XSLT processor? I guess you have not...:-)
What really makes me wonder here is that XML::LibXSLT gives fairly sane output, even without the menu.xml file. Now this is really strange! Though, I admit that I am not really an expert of XSLT....
Update: after setting the debug_callback for XML::LibXSLT it seems that the parser just silently ignores the missing file here (only noing that the for-each did not produce a node list). XML::XSLT appears to be much more picky here...