The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

package MyApp::Templates;

use base 'Template::Declare';
use Template::Declare::Tags
        'RDF::EM' => { namespace => 'em' }, 'RDF';

template foo => sub {
    RDF {
        attr {
            'xmlns' => "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
            'xmlns:em' => 'http://www.mozilla.org/2004/em-rdf#'
        }
        Description {
            attr { about => 'urn:mozilla:install-manifest' }
            em::id { 'foo@bar.com' }
            em::version { '1.2.0' }
            em::type { '2' }
            em::creator { 'Agent Zhang' }
        }
    }
};

package main;
use Test::More tests => 1;

Template::Declare->init( roots => ['MyApp::Templates']);
my $out = Template::Declare->show('foo') . "\n";
is $out, <<'_EOC_';

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
 <Description about="urn:mozilla:install-manifest">
  <em:id>foo@bar.com</em:id>
  <em:version>1.2.0</em:version>
  <em:type>2</em:type>
  <em:creator>Agent Zhang</em:creator>
 </Description>
</RDF>
_EOC_