Hi Christian,
now it's working. Thanks a lot!!
Regards Günter
Am 26.04.2024 um 11:21 schrieb Christian Grün christian.gruen@gmail.com:
Thanks. Here’s one way to do it:
let $body := document {
<json type="object"> <result type="array"> <_ type="object"> <id>ba03177</id> <score type="number">0.83175087</score> <metadata type="object"> <genre>ba</genre> <blatt>1810-40</blatt> <autor>Heinrich von Kleist</autor> <titel>Die heilige Cäcilie</titel> <link>https://kleist-digital.de/.. <https://kleist-digital.de/>.</link> <text>Die Aebtissinn, ...</text> </metadata> </_> </result> </json> } return <div> <ul>{ for $result in $body/json/result/_ return <ul>{ for $field in ('Score', 'Blatt', 'Autor', 'Titel', 'Text', 'Link') return <li> <span>{ $field }: </span> <span>{ data($result//*[name() = lower-case($field)]) }</span> </li> }</ul> }</ul> </div>
Another one is…
return <div>
<ul>{ for $result in $body/json/result/_ return <ul>{ for $text in $result//text() let $field := name($text/..) return <li> <span>{ $field ! (upper-case(substring(., 1, 1)) || substring(., 2)) }: </span> <span>{ $text }</span> </li> }</ul> }</ul> </div>
…but of course you can also output only the relevant fields.
Hope this helps, Christian