<body>
<div id="catalogue_detail_biblio">
  <div id="bookcover" t:optional="true"><img>{$book.image-url:=@src}</img>?</div>
{css("span.results_summary") ! (
 let $subspans := span[span[contains(@class, "label")]]
 return (
   (if (empty($subspans)) then . else join(head($subspans)/preceding-sibling::node())),
    for $subspan in $subspans let $subsubspans := $subspan/span[contains(@class, "label")]
    return if (count($subsubspans) le 1) then $subspan!data() else
           for tumbling window $w in $subspan/node() start when true() end next $n when contains($n/@class, "label")
           return join($w)!replace(., " ?, ?", "")[.]
   )! ($book(substring-before(., ":") || "!") := normalize-space(substring-after(., ":")) )
 )}
 </div>

 <table t:condition="contains-token(@class, 'holdingst') or @id = 'holdingst'">
 <tbody>
  {$book.holdings := tr!map:merge(for $td in td return tokenize($td/@class, " ")!(switch(.)
    case "itype" return {"mediaType": $td}
    case "location" return {"libraryBranch": normalize-space(join($td/node()[not(contains-token(@class, "branch-info-tooltip"))]))}
    case "collection" return {"Sammlung!": $td}
    case "call_no" return {"Regal!": string($td) ! (if (contains(., "(")) then normalize-space(substring-before(., "(")) else . )}
    case "status" return {"statusId": $td/span/tokenize(@class," ")!(switch (.) case "available" return "available" case "checkedout" return "lend" default return ())}
    case "date_due" return let $duedate := string($td/span[1]/@title) where boolean($duedate) return {"dueDate": parse-date($duedate)}
    case "barcode" return {"barcode": $td}
    case "holds_count" return  let $holds := extract($td,"[0-9]+") where $holds return {"Vormerkungen!": $holds}
    default return ()))
  }</tbody></table>?


  <t:s>$book.orderTitle:="vormerken"</t:s>
</body>
<!--for tumbling window $window in $span/node() start $s when true() end next $e when exists($e/span[contains(@class, "label")]) return 
$book(substring-before($window[1], ":") || "!") := normalize-space(join(tail(trace($window,"in")))) 
-->