<?xml version=“1.0”?> <tests>

<test name="adopt_recon_default">

        <doc name="doc1"><![CDATA[<p1 xmlns="urn:test:AAA"><a/></p1>]]></doc>
        <doc name="doc2"><![CDATA[<p1 xmlns="urn:test:BBB"><b/></p1>]]></doc>
        <doc name="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"/>]]></doc>
        <var name="a">
                <xpath doc="doc1" select-node="/a:p1/a:a">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="b" >
                <xpath doc="doc2" select-node="/b:p1/b:b">
                        <reg-ns prefix="b" ns="urn:test:BBB"/>                          
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc3" select-node="/z:p2">
                        <reg-ns prefix="z" ns="urn:test:ZZZ"/>                          
                </xpath>
        </var>

        <remove node="a"/>
        <adopt dest-doc="doc3" node="a"/>
        <append-child parent="p2" child="a"/>

        <!-- This time without a previous removing. -->
        <adopt dest-doc="doc3" node="b"/>
        <append-child parent="p2" child="b"/>

        <reconcile-ns node="p2"/>
        <expected doc="doc3"><![CDATA[<p2 xmlns="urn:test:ZZZ"><a xmlns="urn:test:AAA"/><b xmlns="urn:test:BBB"/></p2>]]></expected>
</test>

<test name="adopt_recon">               
        <doc name="doc1"><![CDATA[<a:p1 xmlns:a="urn:test:AAA"><a:a/></a:p1>]]></doc>
        <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
        <var name="a">
                <xpath doc="doc1" select-node="/a:p1/a:a">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc2" select-node="/a:p2">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>                          
                </xpath>
        </var>
        <adopt dest-doc="doc2" node="a"/>
        <append-child parent="p2" child="a"/>
        <reconcile-ns node="a"/>
        <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"><a:a/></a:p2>]]></expected>
</test>

<test name="adopt_recon_attr">          
        <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@b:attr">
                        <reg-ns prefix="b" ns="urn:test:BBB"/>
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc2" select-node="/a:p2">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>                          
                </xpath>
        </var>
        <adopt dest-doc="doc2" node="attr" />
        <append-child parent="p2" child="attr"/>
        <reconcile-ns node="p2"/>
        <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
</test>

<test name="adopt_recon_attr_2">                
    <!-- Here we will specify a destination-parent for adoption. -->
        <doc name="doc1"><![CDATA[<p1 xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA"/>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@b:attr">
                        <reg-ns prefix="b" ns="urn:test:BBB"/>
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc2" select-node="/a:p2">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>                          
                </xpath>
        </var>          
        <adopt dest-doc="doc2" dest-parent="p2" node="attr" />          
        <append-child parent="p2" child="attr"/>
        <reconcile-ns node="p2"/>
        <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:AAA" xmlns:b="urn:test:BBB" b:attr="marvin"/>]]></expected>
</test>

<test name="adopt_recon_attr_3">                
    <!-- Conflicting ns-prefixes for the added attribute. -->
        <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa"/>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@a:attr">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc2" select-node="/a:p2">
                        <reg-ns prefix="a" ns="urn:test:aaa"/>
                </xpath>
        </var>          
        <adopt dest-doc="doc2" node="attr" />
        <append-child parent="p2" child="attr"/>
        <reconcile-ns node="p2"/>
        <expected doc="doc2"><![CDATA[<a:p2 xmlns:a="urn:test:aaa" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>]]></expected>
</test>

<test name="adopt_recon_attr_4">
    <!-- Qualified attribute added to default namespaced elem. -->
        <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<p2 xmlns="urn:test:AAA"/>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@a:attr">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="p2">
                <xpath doc="doc2" select-node="/a:p2">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>          
        <adopt dest-doc="doc2" node="attr" />
        <append-child parent="p2" child="attr"/>
        <reconcile-ns node="p2"/>
        <expected doc="doc2"><![CDATA[<p2 xmlns="urn:test:AAA" xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></expected>
</test>

<test name="adopt_recon_attr_5">
        <!-- Shadowed and conflicting prefix. dest-parent IS given. -->
        <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@a:attr">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="p3">
                <xpath doc="doc2" select-node="/p2/a:p3">
                        <reg-ns prefix="a" ns="urn:test:ZZZ"/>
                </xpath>
        </var>          
        <adopt dest-doc="doc2" node="attr" dest-parent="p3"/>
        <append-child parent="p3" child="attr"/>
        <!-- Note that we don't need to reconcile here, since done during
             adoption. -->
        <expected doc="doc2"><![CDATA[

<p2 xmlns:a=“urn:test:AAA”>

<a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>

</p2>]]></expected>

</test>

<test name="adopt_recon_attr_6">
        <!-- Shadowed and conflicting prefix. dest-parent NOT given. -->
        <doc name="doc1"><![CDATA[<p1 xmlns:a="urn:test:AAA" a:attr="marvin"/>]]></doc>
        <doc name="doc2"><![CDATA[<p2 xmlns:a="urn:test:AAA"><a:p3 xmlns:a="urn:test:ZZZ"/></p2>]]></doc>
        <var name="attr">
                <xpath doc="doc1" select-node="/p1/@a:attr">
                        <reg-ns prefix="a" ns="urn:test:AAA"/>
                </xpath>
        </var>
        <var name="p3">
                <xpath doc="doc2" select-node="/p2/a:p3">
                        <reg-ns prefix="a" ns="urn:test:ZZZ"/>
                </xpath>
        </var>          
        <adopt dest-doc="doc2" node="attr"/>
        <append-child parent="p3" child="attr"/>
        <reconcile-ns node="p3"/>
        <expected doc="doc2"><![CDATA[

<p2 xmlns:a=“urn:test:AAA”>

<a:p3 xmlns:a="urn:test:ZZZ" xmlns:a1="urn:test:AAA" a1:attr="marvin"/>

</p2>]]></expected>

</test>

<test name="shadow_1">

        <doc name="doc"><![CDATA[

<foo xmlns:foo=“urn:test:mine”>

<p xmlns:bar="urn:test:mine"/>
<a1>
        <a2 xmlns:bar="urn:test:OTHER">
                <foo:a3/>
        </a2>
</a1>

</foo> ]]></doc>

<var name="a1">
        <xpath doc="doc" select-node="/foo/a1"/>
</var>
<var name="p" >
        <xpath doc="doc" select-node="/foo/p"/>
</var>
<remove node="a1"/>
<append-child parent="p" child="a1"/>
<reconcile-ns node="a1"/>               
<expected doc="doc"><![CDATA[

<foo xmlns:foo=“urn:test:mine”>

<p xmlns:bar="urn:test:mine">
        <a1>
                <a2 xmlns:bar="urn:test:OTHER">
                        <foo:a3/>
                </a2>
        </a1>
</p>

</foo> ]]></expected>

</test>

<test name="norm_1">

        <doc name="doc"><![CDATA[

<foo>

<p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C">
        <a:a>
                <b:b a:attr="dont" c:attr="panic"/>
        </a:a>
</p1>
<p2/>

</foo> ]]></doc>

<var name="a">
        <xpath doc="doc" select-node="/foo/p1/a:a">
                <reg-ns prefix="a" ns="urn:test:A"/>
        </xpath>
</var>
<var name="p2" >
        <xpath doc="doc" select-node="/foo/p2"/>
</var>
<remove node="a"/>
<append-child parent="p2" child="a"/>
<reconcile-ns node="a"/>                
<expected doc="doc"><![CDATA[

<foo>

<p1 xmlns:a="urn:test:A" xmlns:b="urn:test:B" xmlns:c="urn:test:C"/>            
<p2>
        <a:a xmlns:a="urn:test:A">
                <b:b xmlns:b="urn:test:B" xmlns:c="urn:test:C" a:attr="dont" c:attr="panic"/>
        </a:a>
</p2>

</foo> ]]></expected>

</test>

</tests>