XPATH удаляет лишние пробелы в конкатенации элементов - PullRequest
0 голосов
/ 01 января 2019

В XPATH я обрабатываю исходный XML, который выглядит следующим образом, где я хочу объединить дочерние элементы каждого editor с разделителем пробела для создания полного имени, а затем, в свою очередь, объединить получившиеся полные имена сзапятые:

<biblStruct type="book" xml:id="Biller_2011a">
     <monogr>
        <title>Inquisitors and Heretics in Thirteenth-Century Languedoc: Edition and Translation
           of Toulouse Inquisition Depositions, 1273-1282</title>
        <editor>
           <forename>Peter</forename><surname>Biller</surname>
        </editor>
        <editor>
           <forename>Caterina</forename><surname>Bruschi</surname>
        </editor>
        <editor>
           <forename>Shelagh</forename><surname>Sneddon</surname>
        </editor>
        <imprint>
           <pubPlace>
              <settlement>Leiden</settlement>
              <country>NL</country>
           </pubPlace>
           <publisher>Brill</publisher>
           <date type="pub_date">2011</date>
        </imprint>
     </monogr>
  </biblStruct>

В настоящее время код XPATH (в XQuery) выглядит следующим образом, используя XPATH map для введения разделителей:

let $bibref := $bib//tei:biblStruct[@xml:id="Biller_2011a"]
return   <editors>{
            (for $auth in $bibref//tei:editor
            return normalize-space(string-join($auth//child::text()," ")))!(if (position() > 1) then ', ' else (), .) 
        }</editors>

Но это выводит дополнительное пространство до и послезапятые:

<editors>Peter Biller ,  Caterina Bruschi ,  Shelagh Sneddon</editors>

Скорее я хочу вывести:

<editors>Peter Biller, Caterina Bruschi, Shelagh Sneddon</editors>  

Заранее спасибо.

1 Ответ

0 голосов
/ 01 января 2019

"где я хочу объединить дочерние элементы каждого editor" будет переводиться в $auth/*, а не в $auth//child::text().

Каким-то образом вся смесь for return и ! иstring-join выглядит странно, кажется, вы можете просто использовать string-join($bibref//tei:editor/string-join(*, ' '), ', ').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...