xquery version "1.0";

declare function local:splitter($name)
{
    let $first := substring-before($name, ' ')
    let $last  := substring-after ($name, ' ')
    
    return (
        <first> {$first} </first>,
        <last>  {$last}  </last>
    )
};

<references>
{
    for $art in
        doc("catalog.xml")
        //article
        
    for $per in
        doc("directory.xml")
        //person
        
    let 
        $addr := $per/email
        
    where
        $art/author = $per/name
        
    order by
        $art/title
        
    return
        <article>
        { 
            ($art/title, local:splitter($art/author), $addr )
        }        
        </article>
}
</references>