diff --git a/bdn_IF.xquery b/bdn_IF.xquery index 1c36406229c2ec351e1760349d2af55ffd5a252a..7e8f550376a83636ded8acff56b107efe1cd3439 100644 --- a/bdn_IF.xquery +++ b/bdn_IF.xquery @@ -16,11 +16,12 @@ : @author Uwe Sikora : @version 1.2 (2017-09-15) :) +declare namespace saxon="http://saxon.sf.net/"; declare namespace intfo = "http://www.bdn-edition.de/bdnPrint/intermediate_format"; declare namespace functx = "http://www.functx.com"; declare default element namespace "http://www.tei-c.org/ns/1.0"; - +declare option saxon:output "indent=no"; (:######################################################:) (:##################### FunctX Lib #####################:) @@ -148,11 +149,26 @@ declare function intfo:preprocessing return typeswitch($node) case text() return ( - intfo:preservedText($node, '぀') + (: This is absolutly magical! "May Her Hooves Never Be Shod":) + intfo:preservedText($node, '🦄') ) - case comment() return $node + (: COMPLETE IGNORE :) + case comment() return ((:$node:)) + + case element(encodingDesc) return ( + intfo:preprocessing($node/following-sibling::node()[1]) + ) + + case element(revisionDesc) return ( + intfo:preprocessing($node/following-sibling::node()[1]) + ) + + case element(ptr) return ( + intfo:preprocessing($node/node()) + ) + (: ELEMENT IGNORE :) case element(choice) return ( if ($node[child::expan and child::abbr]) then ( intfo:preprocessing($node/abbr/node()) @@ -165,6 +181,60 @@ declare function intfo:preprocessing ) ) + case element(byline) return ( + intfo:preprocessing($node/node()) + ) + + case element(docAuthor) return ( + intfo:preprocessing($node/node()) + ) + + case element(persName) return ( + if ($node[ not (ancestor::index) ]) then ( + intfo:preprocessing($node/node()) + ) + else ( + element {name($node)} { + $node/@*, + intfo:preprocessing($node/node()) + } + ) + ) + + case element(docEdition) return ( + intfo:preprocessing($node/node()) + ) + + case element(docImprint) return ( + intfo:preprocessing($node/node()) + ) + + case element(docDate) return ( + intfo:preprocessing($node/node()) + ) + + case element(ref) return ( + intfo:preprocessing($node/node()) + ) + + case element(foreign) return ( + intfo:preprocessing($node/node()) + ) + + case element(div) return ( + if ($node[@type = 'section-group']) then ( + intfo:preprocessing($node/node()) + ) + else ( + element {name($node)} { + $node/@*, + intfo:preprocessing($node/node()) + } + ) + + ) + + (: CHANGE :) case element(rdg) return ( element {name($node)} { $node/@*, @@ -221,49 +291,7 @@ declare function intfo:preprocessing (:~ - : The extendWhiteSpace() function merges empty single whitespace textNodes with its following textNode and thus preserves the single space in the following textNode - : - : single whitespace between two node()[not(self::text())]: //text()[ self::node() = ' '][preceding-sibling::node()[not(self::node() = text())]][following-sibling::node()[not(self::node() = text())]] - : the next following textNode: //textNode[preceding::textNode[1][@preserved]] - : - : @version 1.0 (2017-09-13) - : @deprecated - : @author Uwe Sikora - :) -(:declare function intfo:extendWhiteSpace - ($nodes as node()*) as item()* { - - for $node in $nodes - return - typeswitch($node) - case text() return $node - case comment() return $node - case element(textNode) return ( - if($node[preceding::textNode[1][@preserved]]) then( - element {name($node)} { - $node/@*, - concat( "぀", data($node/text()) ) - (\:data($node/text()):\) - } - ) else if ($node[@preserved]) then( - ) else ( - element {name($node)} { - $node/@*, - intfo:extendWhiteSpace($node/node()) - } - ) - ) - default return ( - element {name($node)} { - $node/@*, - intfo:extendWhiteSpace($node/node()) - } - ) -};:) - - -(:~ - : intfo:cleanUp() + : intfo:postprocessing() : reduces all text() with preservation character to get rid of all conversion related whitespaces : : TO-DO: @@ -285,17 +313,17 @@ declare function intfo:postprocessing let $save := replace(normalize-space($node), "[\s]+", $escaped_whitespace) let $reduce := replace($save, $reduce_expression, $escaped_whitespace) return - $reduce - (:replace($reduce, "$escaped_whitespace", ' '):) + (:$reduce:) + replace($reduce, $escaped_whitespace, ' ') ) case comment() return $node - default return ( - element {name($node)} { + default return ( + element {name($node)} { $node/@*, intfo:postprocessing($node/node(), $escaped_whitespace) - } + } ) }; @@ -753,7 +781,7 @@ let $doc := . let $preprocessed := intfo:preprocessing($doc/TEI) (:let $extend := intfo:extendWhiteSpace($preprocessed):) let $readingMarkers := intfo:expanReadings($preprocessed) -let $postprocessed := intfo:postprocessing($readingMarkers, '぀') +let $postprocessed := intfo:postprocessing($readingMarkers, '🦄') return $postprocessed