use t::TestBase;
run_template_process;
__DATA__
=== using id() function hack
--- vars
'id("foo")' => 'xxx'
--- template
<div>
<span id="foo">replace me</span>
</div>
--- expected
<div>
<span id="foo">xxx</span>
</div>
=== id() cannot catch xml:id
--- vars
'id("foo")' => 'xxx'
--- template
<div>
<span xml:id="foo">foo</span>
</div>
--- expected
<div>
<span xml:id="foo">foo</span>
</div>
=== use @xml:id="" instead of id()
--- vars
'//*[@xml:id="foo"]' => 'xxx'
--- template
<div>
<span xml:id="foo">foo</span>
</div>
--- expected
<div>
<span xml:id="foo">xxx</span>
</div>
=== xhtml default xmlns hack
--- vars
'//span' => 'xxx'
--- template
<html xmlns="http://www.w3.org/1999/xhtml">
<span>replace me</span>
</html>
--- expected
<html xmlns="http://www.w3.org/1999/xhtml">
<span>xxx</span>
</html>
=== xhtml with xmlns
--- vars
'//span' => 'xxx',
'//foo:span' => 'zzz',
--- template
<html xmlns:foo="http://example/foo">
<span>foo</span>
<foo:span>foo</foo:span>
</html>
--- expected
<html xmlns:foo="http://example/foo">
<span>xxx</span>
<foo:span>zzz</foo:span>
</html>
=== no dtd, no xml declaration
--- vars
'//foo' => 'xxx'
--- template
<root>
<foo>bar</foo>
</root>
--- expected
<root>
<foo>xxx</foo>
</root>
=== with dtd
--- vars
'//span' => 'xxx'
--- template
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<span>foo</span>
</html>
--- expected
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<span>xxx</span>
</html>
=== with xml declaration
--- vars
'//foo' => 'xxx'
--- template
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo>bar</foo>
</root>
--- expected
<?xml version="1.0" encoding="UTF-8"?>
<root>
<foo>xxx</foo>
</root>
=== repeat block with whitespace 1
--- vars
'//div' => sub {
[
{ 'span' => '001' },
{ 'span' => '002' },
{ 'span' => '003' },
]
}
--- template
<root>
<div>
<img src="foo" />
<span>bar</span>
</div>
</root>
--- expected
<root>
<div>
<img src="foo" />
<span>001</span>
</div>
<div>
<img src="foo" />
<span>002</span>
</div>
<div>
<img src="foo" />
<span>003</span>
</div>
</root>
=== repeat block with whitespace 2
--- vars
'//div' => sub {
[
{ 'span' => '001' },
{ 'span' => '002' },
{ 'span' => '003' },
]
}
--- template
<root>
<div>
<img src="foo" />
<span>bar</span>
</div>
</root>
--- expected
<root>
<div>
<img src="foo" />
<span>001</span>
</div>
<div>
<img src="foo" />
<span>002</span>
</div>
<div>
<img src="foo" />
<span>003</span>
</div>
</root>
=== repeat block with whitespace 3
--- vars
'//div' => sub {
[
{ 'span' => '001' },
{ 'span' => '002' },
{ 'span' => '003' },
]
}
--- template
<root>
test
<div>
<img src="foo" />
<span>bar</span>
</div>
</root>
--- expected
<root>
test
<div>
<img src="foo" />
<span>001</span>
</div><div>
<img src="foo" />
<span>002</span>
</div><div>
<img src="foo" />
<span>003</span>
</div>
</root>
=== s/&/&/ for "EntityRef: expecting ';'"
--- vars
--- template
<a href="/?foo=&foo=">foo & bar & baz</a>
--- expected
<a href="/?foo=&foo=">foo & bar & baz</a>