Commit cf40b7b8 authored by Mathias Goebel's avatar Mathias Goebel 🎠
Browse files

remove debug stuff

parent 1d5f5d1c
xquery version "3.1";
module namespace fontaneTransfo="http://fontane-nb.dariah.eu/Transfo";
import module namespace tgconnect="http://textgrid.info/namespaces/xquery/tgconnect" at "/db/apps/textgrid-connect/tg-connect.xql";
import module namespace tgclient="http://textgrid.info/namespaces/xquery/tgclient" at "/db/apps/textgrid-connect/tgclient.xqm";
declare boundary-space preserve;
declare default element namespace "http://www.tei-c.org/ns/1.0";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare namespace xhtml="http://www.w3.org/1999/xhtml";
declare namespace digilib="digilib:digilib";
declare namespace svg="http://www.w3.org/2000/svg";
declare namespace xlink="http://www.w3.org/1999/xlink";
declare namespace tgmd="http://textgrid.info/namespaces/metadata/core/2010";
declare variable $configdoc := doc( "/db/sade-projects/textgrid/config.xml" );
declare variable $config := map:new(for $param in $configdoc//param
return map:entry(string($param/@key), string($param))
);
declare variable $sid :=
tgclient:getSid(
$config("textgrid.webauth"),
$config("textgrid.authZinstance"),
$config("textgrid.user"),
$config("textgrid.password")
);
let $uris := request:get-parameter("uris", "")
let $uris := if($uris = "") then ( "textgrid:22jtm" ) else $uris
let $password := request:get-parameter("pass", $config("sade.password"))
for $uri in tokenize($uris, ",")
let $startTime := util:eval("current-dateTime()")
where starts-with($uri, "textgrid:")
let $response :=
try {
tgconnect:publish($uri,
$sid,
"data",
"admin",
$password,
"textgrid",
"")
} catch * { <error code="{$err:code}" timestamp="{util:eval("current-dateTime()")}">{$err:description}</error> }
return
let $log := update insert ( <report uri="{$uri}" started="{$startTime}" finished="{util:eval("current-dateTime()")}">{$response}</report>) into //initlog/install/done
return
<report uri="{$uri}" start="{$startTime}" duration="{util:eval("current-dateTime()") - $startTime}">{$response}</report>
import module namespace code="http://bdn-edition.de/ns/code-view";
import module namespace config="http://textgrid.de/ns/SADE/config" at "../config/config.xqm";
import module namespace index="https://fontane-nb.dariah.eu/indexapi" at "index-api.xqm";
declare variable $fontaneTransfo:tooltipReplacementPattern := '\s$|,$|\.|\($|\)$|;|&#x2003;';
declare variable $fontaneTransfo:bracket_left.svg := <svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg3383"
viewBox="20 20 40 250"
style="transform: scaleX(0.5);"
height="100%"
width="1cm">
<metadata
id="metadata3390">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3388" />
<path
stroke-width="1"
d="M 30.87,261.00 C 30.87,261.00 30.00,220.00 30.00,220.00 30.00,220.00 30.00,179.00 30.00,179.00 29.99,173.57 29.22,165.11 27.53,160.00 25.78,154.70 23.34,153.50 23.18,149.91 22.98,145.60 26.14,143.08 27.78,138.00 29.18,133.65 29.99,123.73 30.00,119.00 30.00,119.00 30.00,72.00 30.00,72.00 30.00,60.01 29.29,47.86 31.28,36.00 32.35,29.70 33.52,24.34 40.00,22.00 40.00,22.00 35.93,36.00 35.93,36.00 35.93,36.00 34.00,53.00 34.00,53.00 34.00,53.00 34.00,125.00 34.00,125.00 34.00,125.00 31.45,141.00 31.45,141.00 31.45,141.00 28.13,150.00 28.13,150.00 28.13,150.00 31.09,159.00 31.09,159.00 31.09,159.00 34.00,179.00 34.00,179.00 34.00,179.00 34.00,244.00 34.00,244.00 34.00,244.00 36.16,263.00 36.16,263.00 36.16,263.00 40.00,276.00 40.00,276.00 32.45,274.30 31.81,267.69 30.87,261.00"
id="bracket" />
</svg>;
declare variable $fontaneTransfo:dataCollection := collection("/db/sade-projects/textgrid/data/xml/data");
declare variable $fontaneTransfo:base-url :=
if (config:get("sade.develop") = "true")
then "https://fontane-nb.dariah.eu/test/"
else "https://fontane-nb.dariah.eu/";
declare function fontaneTransfo:magic($nodes as node()*) {
fontaneTransfo:magic(($nodes), "undefined")
};
declare function fontaneTransfo:magic($nodes as node()*, $inital as xs:string?) {
for $node in $nodes return
typeswitch($node)
case element(tei:TEI)
return
element xhtml:div {
attribute class {'TEI', 'clearfix' (: damn bootstrap in this code? damn it! :) },
fontaneTransfo:magic($node/node())
}
case element(tei:teiHeader) return ()
case element(tei:sourceDoc)
return
element xhtml:div {
attribute id {substring-after($node/@n, 'er_')},
attribute class {'sourceDoc'},
fontaneTransfo:magic($node/node())
}
case element(tei:surface)
return fontaneTransfo:surfaceDiv($node, $inital)
case element(tei:zone)
return
try {(
element xhtml:div {
(: if ($node/parent::tei:line) :)
(: then:)
(: fontaneTransfo:zone-inline($node):)
(: else:)
fontaneTransfo:zone($node),
if( $node/contains(@style, "border-left-style:double") and $node/contains(@rend,"border-left-style:wavy") )
then
element xhtml:div {
attribute class {"border-left border-left-style wavy"},
fontaneTransfo:magic($node/node())
}
else
fontaneTransfo:magic($node/node())
}
)}
catch * { ("zone: ", $err:code , $err:description, $err:value) }
case element(tei:figure)
return
fontaneTransfo:figure($node)
case element(tei:line)
return
try {
element xhtml:div {
$node/@xml:id ! attribute id { string(.) },
attribute class {
'line',
fontaneTransfo:segStyle($node),
if($node/@type) then string($node/@type) else (),
if($node/tei:seg[@type="col"][@n]) then "column" else (),
if($node/@rendition) then replace($node/@rendition, "#", "") else ()
},
attribute style {
string-join((
($node/@style),
(if($node//text()[not(parent::tei:fw)]) then () else ('height:0.6cm;')),
( (: line-height given in div.zone[style] has no effect wheren large rendering is needed :)
if($node//*[contains(string(@style), 'large')] or $node//ancestor::tei:zone[contains(string(@style), 'large')]) then replace( fontaneTransfo:lineHeight($node/parent::tei:zone), 'line-height', 'max-height') else ())
), ';')
},
try {fontaneTransfo:magic($node/node())} catch * { ($err:code , $err:description, $err:value) }
}}
catch * { ($err:code , $err:description, $err:value) }
case element(tei:seg)
return
if ($node/tei:g[@ref="#hb"]) then fontaneTransfo:fraction($node)
else
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {
'seg',
if ($node/@style or $node/@rend or $node/@type) then fontaneTransfo:segStyle($node) else ()
},
if(contains($node/@style, 'letter-spacing')) then
attribute style { 'letter-spacing:'||substring-before(substring-after($node/@style, 'letter-spacing:'), 'cm')||'cm;'}
else (),
fontaneTransfo:magic($node/node()),
if($node/@type = "abort")
then
element xhtml:div {
attribute class {'segHover italic'},
'Schreibabbruch'}
else (),
if($node/@type = "multiphrase" and not($node/parent::tei:add/substring-after(@corresp, '#') = $node/ancestor::tei:surface[1]//tei:anchor/@xml:id))
then
element xhtml:div {
attribute class {'segHover italic'},
'Mehrfachformulierung'}
else ()
}
case element(tei:fw)
return
if (($node/preceding::tei:handShift[@new][1]/@new != '#Fontane') or not( exists( $node/preceding::tei:handShift[@new] ) ))
then
(element xhtml:div { attribute class {'fwWrapper'},
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'fw', (if ($node = ($node/ancestor::tei:surface//tei:fw[preceding::tei:handShift/@new != '#Fontane'])[position() gt 1] ) then (
(:'fw2':) ()
) else () )
}, fontaneTransfo:magic($node/node())}
})
else
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'fw-fontane'},
fontaneTransfo:magic($node/node())
}
case element(tei:mod)
return
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {
'mod',
$node/@type,
if($node/@rend) then "mod"||replace($node/@rend, ":", "_") else ()
},
if($node/@style) then attribute style {
if($node/@seq = "1")
then string($node/@style)
else
if($node/@seq = "2" and $node/@style = "text-decoration:underline" )
then "border-bottom: 1px solid darkslategrey;"
else ()
} else (),
if($node//del[@rend='overwritten']) then
element xhtml:div {
attribute class {
'modHover italic',
if($node/ancestor::tei:*/@rotate or $node/ancestor::tei:zone/preceding-sibling::tei:addSpan) then () else 'hoverTop'},
if(ends-with($node/preceding::text()[1][parent::tei:line = $node/parent::tei:line], ' ') or ends-with($node/preceding::text()[1][parent::tei:line = $node/parent::tei:line], ' '))
then ()
else
(: do not add preText when mod starts with punctuation :)
if(matches(($node//text())[1], "^\.|^\?|^,|^!")) then ()
else
element xhtml:span {local:preText($node)},
'<',
element xhtml:span {
if( $node//tei:g[@ref="#hb"] )
then fontaneTransfo:magic($node/tei:del/node())
else fontaneTransfo:magic($node/tei:del/node())//text(),
(if ($node/tei:del/tei:gap) then fontaneTransfo:magic($node/tei:del/tei:gap) else ())
},
' überschrieben ',
element xhtml:span {
string-join($node/tei:add//text())
},
'>', if(matches(string-join($node//tei:add/text()), '^\.$|^,$|^:$|^;$')) then () else element xhtml:span { fontaneTransfo:postText($node) }
}
else if($node//del[not(@rend='overwritten')]) then
element xhtml:div {
attribute class {
'modHover italic',
if($node/ancestor::tei:*/@rotate or $node/ancestor::tei:zone/preceding-sibling::tei:addSpan) then () else 'hoverTop'},
('Ersetzung', if( contains(string-join($node//@rend), 'caret') ) then 'mit Einweisungszeichen' else ())
}
else (),
fontaneTransfo:magic($node/node())
}
case element(tei:del)
return
element xhtml:span {
attribute class {'del', replace($node/@rend, '#', 'hash'), if($node/@instant)then'instant'else()},
$node/@xml:id ! attribute id { string(.) },
(
if(local:modTest($node/parent::tei:mod))
then
attribute style {'text-align: center;display: inline-block;position: absolute;width:100%;'}
else ()),
fontaneTransfo:magic($node/node()),
if($node/@instant) then
element xhtml:div {
attribute class {'instantHover italic'},
'Sofortkorrektur'}
else()
}
case element(tei:hi)
return
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'hi'},
fontaneTransfo:magic($node/node())
}
case element(tei:add)
return
if( $node/@corresp and not($node/@type="multiphrase") ) then () else
fontaneTransfo:addPreselection($node)
case element(tei:retrace)
return
(
fontaneTransfo:retrace($node),
fontaneTransfo:magic($node/node())
)
case element(tei:restore)
return
element xhtml:span {
attribute class {'restore'},
element xhtml:div {attribute class {'restoreHover italic'},"Durchstreichung zurückgenommen"},
fontaneTransfo:magic($node/node())
}
case element(tei:choice)
return
element xhtml:span {
attribute class {'choice'},
if ($node/tei:expan) then
element xhtml:div {
attribute class {'expan italic'},
let $count := count($node//tei:expan)
return
if($count = 1) then $node//tei:expan/text()
else for $expan at $pos in $node//tei:expan
return
if($pos = ($count - 1)) then $expan || '&#x2003;oder&#x2003;'
else if($pos = $count)then $expan
else $expan || ',&#x2003;'
}
else (),
fontaneTransfo:magic($node/node())
}
case element(tei:abbr)
return
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'abbr'},
fontaneTransfo:magic($node/node())
}
case element(tei:rs)
return
element xhtml:span {
attribute class {'rs', if($node/@type) then $node/@type else (), if($node/@ref) then substring-before($node/@ref, ':') else ()},
attribute data-ref { replace($node/@ref, ":", "") },
$node/@xml:id ! attribute id { string(.) },
fontaneTransfo:magic($node/node())
}
case element(tei:date)
return
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'date'},
fontaneTransfo:magic($node/node())
}
case element(tei:stamp)
return
element xhtml:div {
attribute class {'stamp'},
fontaneTransfo:stamp($node)
}
case element(tei:metamark)
return fontaneTransfo:metamark($node)
case element(tei:g)
return
if ($node/@ref='#mgem') then
element xhtml:span {
attribute class {'g mgem'},
fontaneTransfo:magic($node/node())
}
else if ($node/@ref='#ngem') then
element xhtml:span {
attribute class {'g ngem'},
fontaneTransfo:magic($node/node())
}
else if ($node/@ref="#rth") then
element xhtml:span {
attribute class {'g rth'},
<xhtml:div class="hover">Reichstaler</xhtml:div>,
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="auto" viewBox="0 0 82 107">
{element path {
attribute fill {"none"},
attribute stroke {"darkslategrey"},
attribute stroke-width {"5"},
attribute d {"M 24.73,35.82" ||
" C 24.73,35.82 30.36,30.73 32.00,26.55" ||
" 46.73,45.27 80.55,37.45 70.00,38.18" ||
" 16.73,50.73 -2.55,99.09 19.09,101.82" ||
" 52.00,103.45 57.09,80.00 42.91,80.91" ||
" 11.82,83.64 35.45,105.45 52.00,99.64" }}}
</svg>
}
else ()
case element(tei:unclear)
return
element xhtml:span {
attribute class {'unclear'},
$node/@xml:id ! attribute id { string(.) },
fontaneTransfo:magic($node/node())
}
case element(tei:gap)
return
fontaneTransfo:gap($node)
case element(tei:milestone) return
element xhtml:span {
attribute class {'milestone', string($node/@type), string($node/@unit)},
$node/@xml:id ! attribute id { string(.) },
attribute style {'display:none;'}
}
case element(tei:ref)
return
if($node/parent::tei:figDesc) then () else
element xhtml:span {
$node/@xml:id ! attribute id { string(.) },
attribute class {'ref'},
attribute data-ref {substring-after($node/@target, '#')},
fontaneTransfo:magic($node/node()),
(: link :)
if(starts-with($node/@target, '#xpath(//surface') or not(contains($node/@target, $node/ancestor::tei:surface[last()]/@n)))
then
element xhtml:span {
attribute class {'href'},
element xhtml:a {
if(not( contains($node/@target, 'xpath') ))
then ( attribute href {'edition.html?id=/xml/data/'|| $node/ancestor::tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:ab/tei:idno/substring-after(., ':') ||'.xml&amp;page='|| substring-before(substring-after($node/@target, "_"), "_") ||'&amp;target='||substring-after($node/@target, "#")},
<i class="fa fa-link"/>
)
else
( attribute href {'edition.html?id=/xml/data/'|| $node/ancestor::tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:ab/tei:idno/substring-after(., ':') ||'.xml&amp;page='||substring-before(substring-after($node/@target, "[@n='"), "']")},
<i class="fa fa-link"/>
)
}
}
else()
}
case element(tei:space)
return
element xhtml:span {
attribute class {"space", string($node/@type), string($node/@unit) || string($node/@quantity)},
if($node/@type = "pause")
then element xhtml:div {attribute class {'spaceHover'}, 'Gedankenpause'}
else ()
}
case element(tei:said)
return
element xhtml:span {
attribute class {"said"},
$node/@xml:id ! attribute id { string(.) },
fontaneTransfo:magic($node/node())
}
case element(tei:note) return
if(not($node/@type="editorial"))
then
element xhtml:span {
attribute class { 'teinote', string($node/@type), string($node/@subtype) },
if($node/@type = "authorial" and $node/@subtype = "text")
then element xhtml:div {attribute class {'noteHover'}, 'Autoranmerkung: Text'}
else if($node/@type = "authorial" and $node/@subtype = "revision")
then element xhtml:div {attribute class {'noteHover'}, 'Autoranmerkung: Revision'}
else if($node/@type = "authorial" and $node/@subtype = "notebook")
then element xhtml:div {attribute class {'noteHover'}, 'Autoranmerkung: Notizbuch'}
else (),
fontaneTransfo:magic($node/node())
}
else fontaneTransfo:magic($node/node())
case element(tei:expan) return ()
case element(tei:addSpan) return ()
case element(tei:handShift) return ()
case element(tei:lb) return ()
case element(tei:anchor) return
if( $node/ancestor::tei:sourceDoc//tei:add[@corresp = '#'||$node/@xml:id] )
then
element xhtml:span {
attribute class { 'anchored' },
fontaneTransfo:addPreselection( $node/ancestor::tei:sourceDoc//tei:add[@corresp = '#'||$node/@xml:id] )
}
else ()
case text()
return
fontaneTransfo:text($node)
default return fontaneTransfo:magic($node/node())
};
declare function fontaneTransfo:surfaceDiv($node as node(), $inital as xs:string) {(
if($node/parent::tei:sourceDoc or string($node/@n) = $inital)
then
element xhtml:div {
attribute class {'rowWrapper', 'clearfix', 'butthead'},
(: attribute id { $node/string(@n) },:)
fontaneTransfo:facs($node),
(: if($node/string(@type) = ("clipping", "additional")):)
element xhtml:div {
if($node/@subtype="Kalenderblatt")
(: cause of rotation handling, an additional div is needed for
mostly rotated Kalenderblätter:)
then
element xhtml:div {
fontaneTransfo:surface($node, $inital),
fontaneTransfo:magic($node/node())
}
else(
fontaneTransfo:surface($node, $inital),
fontaneTransfo:magic($node/node()))
},
element xhtml:div {
attribute class {'teixml'},
element xhtml:pre {
element xhtml:b {
<xhtml:h3 class="xmlTitle">Auszug aus dem TEI/XML-Dokument</xhtml:h3>,
<xhtml:div>
<xhtml:a href="xml.html?id=/xml/data/{$node/preceding::tei:teiHeader//tei:idno[@type="TextGrid"]/substring-after(., 'textgrid:')}.xml">Gesamtes TEI/XML-Dokument</xhtml:a>
|
<xhtml:a target="_blank" href="rest/data/{$node/preceding::tei:teiHeader//tei:idno[@type="TextGrid"]/substring-after(., 'textgrid:')}.xml">(via REST)</xhtml:a>
</xhtml:div>
},
if( config:get("sade.develop") = "true" )
then code:main($node)
else code:main($node, false(), "hljs-", true()),
for $n in $node/following-sibling::tei:note
where $n >> $node and $n << ($node/following-sibling::tei:surface)[1]
return code:main($n)
}
}
}
else
(
element xhtml:div {
fontaneTransfo:surface($node, $inital),
if($node/@type = ('clipping', 'additional'))
then
fontaneTransfo:magic($node/node())
else fontaneTransfo:magic($node/node())
}),
let $ids := $node//@xml:id,
$notes := $node/ancestor::tei:TEI//tei:note[@type="editorial"]/tokenize(replace(@target, "#", ""), " "),
$test := (($ids = $notes) and string($node/@n) = $inital) or $node//tei:figDesc[exists(./parent::tei:figure/@xml:id)]
return
if($test) then
element xhtml:div {
attribute class {"notes"},
element xhtml:ul {
for $i in $node/ancestor::tei:TEI//tei:note[@type="editorial"][tokenize(replace(@target, "#", ""), " ") = $ids]
return
element xhtml:li {
attribute class {'editorialNote'},
fontaneTransfo:noteParser($i)
},
for $figDesc in $node//tei:figDesc[exists(./parent::tei:figure/@xml:id)]
return
element xhtml:li {
attribute class {'editorialNote'},
element xhtml:span {
attribute class {"target kursiv"},
text {"<Skizze>]"},
element xhtml:ul {
element xhtml:li {
string($figDesc)
}
}
}
}
}
}
else ()
)};
declare function fontaneTransfo:surface($n, $inital) {
attribute class {
'surface',
(if($n/@type) then (' tei'||$n/@type) else ()),
(if($n/@subtype) then string($n/@subtype) else ()),
if( string($n/@subtype)="Kalenderblatt") then if(ends-with($n/@n, 'v')) then 'verso' else 'recto' else (),
if( $n/parent::tei:surface ) then "nested" else (),
if( not($n//tei:line[ancestor::tei:zone[@rotate = 180]]) ) then () else "rotate"
},
(: dont call it a label (bootstrap) :)
(if($n/@n) then attribute id {"s"||$n/@n} else()),
attribute style {
let $values := distinct-values((
if ($n/(@ulx or @uly)) then ('position:absolute;', 'top:'|| $n/@uly ||'cm;', 'left:'|| $n/@ulx ||'cm;') else (),
if ($n/(@ulx and @lrx)) then ('position:absolute;' ,'left:'|| $n/@ulx ||'cm;' , 'width:'||$n/@lrx - $n/@ulx||'cm;') else (),
if ($n/(@uly and @lry)) then ('position:absolute;', 'top:'|| $n/@uly ||'cm;' , 'height:'||$n/@lry - $n/@uly||'cm;') else (),
if ($n/@subtype = 'Kalenderblatt')
then (
'top:'|| $n/@uly ||'cm;',
'left:'|| $n/@ulx ||'cm;',
'width:'||$n/@lrx - $n/@ulx||'cm;',
'height:'||$n/@lry - $n/@uly||'cm;',
"position:relative;"
)
else ()
)) (: distinct values :)
return
(: omit top, left and position in case of a nested surface :)
if( string($n/@n) = $inital )
then $values[not( contains(., "absolute") ) and not( starts-with(., "top:") ) and not( starts-with(., "left:") )]
else $values
}
};
declare function fontaneTransfo:zone($n) {
$n/@xml:id ! attribute id { string(.) },
attribute class {
'zone',
string($n/@type),
string($n/@subtype),
if (exists($n/preceding-sibling::tei:addSpan) and $n/preceding-sibling::tei:addSpan/substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id ) then 'addSpan' else(),
if (exists($n/child::tei:mod[@seq])
and
$n/child::tei:mod[@seq]/substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id
)
then 'mod-seq-'|| string($n/child::tei:mod[@seq][substring-after(@spanTo, '#') = $n/following-sibling::tei:anchor/@xml:id]/@seq) else(),
if ($n/@type="illustration") then 'figure' else(),
fontaneTransfo:segStyle($n),
if( $n/@type="illustration" and $n/parent::tei:line) then "verticalMiddel" else (),
if(not( $n//tei:line ) and $n//tei:figure[string(.//tei:ref) = "Diagonale Streichung"]) then "deletion-diagonal" else (),
let $id := string($n/@xml:id)
let $metamark := $n/ancestor::tei:surface[1]//tei:metamark[contains(string(@corresp), $id)]
return
if( ($id != "") and ( $metamark//tei:ref/ends-with(., 'gestrichen; erledigt') = true()) ) then 'hover' else ()
},
attribute style {
(: place it! :)
if (($n/@ulx or $n/@uly or $n/@lrx or $n/@lry) and not($n/ancestor::tei:zone/@rotate))
then
if ($n/ancestor::tei:zone[last()]//tei:figure)
then
('position:absolute;',
'top:'|| $n/@uly - sum($n/ancestor::tei:zone/@uly)||'cm;',
'left:'||$n/@ulx -sum($n/ancestor::tei:zone/@ulx)||'cm;',
(: 'width:'|| (if($n/@lry) then $n/@lrx - (if($n/@ulx) then $n/@ulx else 0) - sum($n/ancestor::tei:zone/@lrx) ||'cm;' else '' )||:)
'width:'||(if($n/@lry) then $n/@lrx - (if($n/@ulx) then $n/@ulx else 0) - (if ($n/parent::tei:line) then 0 else sum($n/ancestor::tei:zone/@lrx)) ||'cm;' else '' ),
(: 'height:'|| $n/@lry - (if($n/@uly) then $n/@uly else 0) - sum($n/ancestor::tei:zone/@lry)||'cm;':)
'height:'|| $n/@lry - (if($n/@uly) then $n/@uly else 0) - (if ($n/parent::tei:line) then 0 else sum($n/ancestor::tei:zone/@lry)) ||'cm;'
) else
if (not($n/@ulx|$n/@uly|$n/@lrx) and $n//tei:fw)
then 'width:100%;'
(: then if( $n//text()[matches(., '\w')][not(./ancestor::tei:fw)]) then 'width:100%;' else 'width:100%;height:0;':)
else
'position:absolute;'||
'top:'|| $n/@uly ||'cm;'||
'left:'||$n/@ulx ||'cm;'||
'width:'||$n/@lrx - (if($n/@ulx) then $n/@ulx else 0) ||'cm;'||
'height:'|| $n/@lry - (if($n/@uly) then $n/@uly else 0) ||'cm;'
else(),
if( $n/not(@ulx|@lrx|@rotate) and $n//tei:fw)
(: then 'width:100%;':)
then if( $n//text()[matches(., '\w')][not(./ancestor::tei:fw)]) then 'width:100%;' else 'width:100%;'
(: edited: 2016-12-07
: cause: email "Probleme mit Seitenzahlen; dringend"
: was: then if( $n//text()[matches(., '\w')][not(./ancestor::tei:fw)]) then 'width:100%;' else 'width:100%;height:0;'
:)
else (),