XPath: как сохранить результат функции в переменной?

Можно ли сохранить каждый элемент в элементах в переменной xpath, чтобы использовать это значение в одном выражении? Выражение XPath должно быть в одной строке. Моя цель - преобразовать продолжительность в миллисекундах в одно выражение.

XML

<pt:transcript
            xmlns:pt="https://purl.org/net/hbuschme/teaching/2019ws-infostruk/podcast-transcript/0.1"
            version="0.1">
            <pt:segment contributor="timpritlove" start="00:00:43.101" end="00:00:49.300">Hallo und herzlich willkommen zu Forschergeist, dem Podcast des Stifterverbands für die deutsche Wissenschaft.</pt:segment>
            <pt:segment contributor="timpritlove" start="00:00:49.301" end="00:00:57.600">Mein Name ist Tim Pritlove und ich begrüße alle zu Ausgabe Nummer 72 hier in unserer Gesprächsreihe rund um Wissenschaft,</pt:segment>
            <pt:segment contributor="timpritlove" start="00:00:57.601" end="00:01:04.300">wissenschaftliche Fragen, manchmal geht es um Wissenschaft, manchmal geht es auch um die Metafragen der Wissenschaft.</pt:segment>
</pt:transcript>

XPath

fn:analyze-string(/pt:transcript/pt:segment[1]/@start, "[0-9][0-9]")

Результат

Element='<analyze-string-result xmlns="http://www.w3.org/2005/xpath-functions">
   <match>00</match>
   <non-match>:</non-match>
   <match>00</match>
   <non-match>:</non-match>
   <match>43</match>
   <non-match>.</non-match>
   <match>10</match>
   <non-match>1</non-match>
</analyze-string-result>'

person Laura_Noemi    schedule 12.12.2019    source источник
comment
Я не совсем понимаю, чего вы пытаетесь достичь. Можете ли вы обновить вопрос с примером желаемого вывода или уточнить: вы пытаетесь вычислить разницу между @start и @end в миллисекундах? Кроме того, вы можете использовать XPath 2.0 или 3.0?   -  person Mads Hansen    schedule 12.12.2019


Ответы (1)


Из XPath 3.0 вы можете сделать

let $x := analyze-string(....)
return (some expression that references $x)
person Michael Kay    schedule 12.12.2019