0

我在typeswitch(eXist 5.3) 的输出中有一个小问题,我不知道如何解决。鉴于这个小例子:

xquery version "3.1";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare function local:test($nodes as node()*)
{
    for $node in $nodes
    return
        typeswitch ($node)
        case element (test) return
            local:test($node/(node()|text()))
        case element (tei:seg) return
            local:test($node/(node()|text()))
        case element (tei:num) return
            local:test($node/(node()|text()))
        case element (tei:w) return
            local:test($node/(node()|text()))
        case element (tei:gap) return
            "[...]"
        case text() return
            $node/string()
        default return
            local:test($node/(node()|text()))
};

let $node :=
<test>
<seg xmlns="http://www.tei-c.org/ns/1.0" n="1" type="unite" xml:id="cat_agr_s1_u1">
   <seg type="title" resp="#apocryphe">
      <num value="1"> I</num>. <w xml:id="w_cato_agr_2" lemma="quomodo">Quomodo</w>
      <w xml:id="w_cato_agr_3" lemma="ager">agrum</w>
      <w xml:id="w_cato_agr_4" lemma="emo">emi</w> ,
      <w xml:id="w_cato_agr_5" lemma="pararique">pararique</w>
      <w xml:id="w_cato_agr_6" lemma="oporteo">oporteat</w>. 
   </seg>
   <gap reason="editorial" unit="word" quantity="182"> </gap>
</seg>
</test>
return
    <p>{local:test($node)}</p>

我得到这个输出:

<p> I .  Quomodo agrum emi  ,
               pararique oporteat . 
            [...]</p>

但我正在寻找的是以下内容 - 标点符号与文本没有被空格分隔:

<p> I. Quomodo agrum emi, pararique oporteat. [...]</p>

请记住,在生产中,里面的内容<p>可能会混合在最终的 html 输出中。

4

0 回答 0