declare function local:createTargetAttribute($root as node(), $n as xs:string, $attrName as xs:string) {
let $id := root($root)//tei:text//tei:lb[@n = $n]/@xml:id/string()
return if (count($id) eq 1) then (
attribute {$attrName} {
concat('#',$id)
}
) else (
let $log := console:log($n)
let $log1 := console:log($attrName)
return ()
)
};
declare function mapping:nietzsche-notes($root as element(), $userParams as map(*)) {
let $ED := doc($config:data-root || "/GM_Ed_incl.xml")
let $rdgs := for $line in $root//tei:line/@start
return local:extendApp($ED//tei:rdg[@wit="#Dm" and @source=$line]/parent::tei:app, $ED)
let $pbId := substring-after($root/@start, '#')
let $notes := if (root($root)//tei:surface[@xml:id = $root/@xml:id]/following-sibling::tei:surface) then (
root($root)//tei:text//tei:note[@type="editorial" and preceding::tei:pb[1][@xml:id = $pbId] and following::tei:pb[preceding::tei:pb[1][@xml:id = $pbId] ]]
) else (
root($root)//tei:text//tei:note[@type="editorial" and preceding::tei:pb[@xml:id = $pbId]]
)
let $div := <div xmlns="http://www.tei-c.org/ns/1.0" type="noteDiv">{ for $note in $notes
return if ($note/@target and $note/tei:term) then ($note) else (
let $target := if ($note/@target) then ($note/@target) else (local:getLineTargets($root, $note/@xml:id, $note/text(), true()))
let $targetEnd := if ($note/@targetEnd) then ($note/@targetEnd) else (local:getLineTargets($root, $note/@xml:id, $note/text(), false()))
return if ($targetEnd) then (<note xmlns="http://www.tei-c.org/ns/1.0" xml:id="{$note/@xml:id}" type="{$note/@type}"
declare function local:extendApp($node as node()*, $ED){
let $seg := if (count($node/@from) > 1) then ($ED//tei:seg[@xml:id=substring-after($node[1]/@from, '#')]) else ($ED//tei:seg[@xml:id=substring-after($node/@from, '#')])
return if ($seg) then (
element { node-name($node) } {
$node/@* except $node/@exist:id,
attribute exist:id { util:node-id($node) },
attribute n { concat($seg/preceding::tei:pb[not(@edRef)][1]/@n, ',', $seg/preceding::tei:lb[not(@edRef)][1]/@n) },
: For the Nietzsche Druckmanuskript: find the notes corresponding
: to the surface shown in the diplomatic transcription.
:)
declare function mapping:nietzsche-diffs($root as element(), $userParams as map(*)) {
let $ED := doc($config:data-root || "/GM_Ed_incl.xml")
let $rdgs := for $line in $root//tei:line/@start
return local:extendApp($ED//tei:rdg[@wit="#Dm" and @source=$line]/parent::tei:app, $ED)
let $pbId := substring-after($root/@start, '#')
let $notes := if (root($root)//tei:surface[@xml:id = $root/@xml:id]/following-sibling::tei:surface) then (
root($root)//tei:text//tei:note[@type="editorial" and preceding::tei:pb[1][@xml:id = $pbId] and following::tei:pb[preceding::tei:pb[1][@xml:id = $pbId] ]]
) else (
root($root)//tei:text//tei:note[@type="editorial" and preceding::tei:pb[@xml:id = $pbId]]
)
let $div := <div xmlns="http://www.tei-c.org/ns/1.0" type="noteDiv">{ for $note in $notes