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

use Template::Semantic;

subtest 'xinclude' => sub {
    plan tests => 2;
    
    my $input = q{<?xml version="1.0"?>
    <root xmlns:xi="http://www.w3.org/2001/XInclude">
        <body>
            <xi:include href="t/10_xinclude.xml" parse="xml"/>
        </body>
    </root>};

    my $ts = Template::Semantic->new( expand_xinclude => 1 );
    my $out = $ts->process(\$input, {
        '#foo' => 'xxx',
        '.bar' => 'xxx',
    })->process({
        '@xml:base' => undef,
    });
    
    like($out, qr{<div id="foo">xxx</div>});
    like($out, qr{<div class="bar">xxx</div>});
};

subtest 'dynamic xinclude?' => sub {
    plan skip_all => 'not implemented';
    
    my $input = q{<?xml version="1.0"?>
    <root xmlns:xi="http://www.w3.org/2001/XInclude">
        <body>
            <xi:include href="" parse="xml" id="include"/>
        </body>
    </root>};

    my $ts = Template::Semantic->new( expand_xinclude => 1 );
    my $out = $ts->process('t/10_xinclude.xml', {
        '#inc@src' => 't/10_xinclude.xml',
    })->process({
        '#foo' => 'xxx',
        '.bar' => 'xxx',
    });

    like($out, qr{<div id="foo">xxx</div>});
    like($out, qr{<div class="bar">xxx</div>});
};

done_testing;