diff --git a/modules/intermediate_format/ifweb.xql b/modules/intermediate_format/ifweb.xql index 94dd040b795a93e0c4136b3179ac4f974eb8f132..fc5d53e56c0f8400b629466c08aa2485af175d7e 100644 --- a/modules/intermediate_format/ifweb.xql +++ b/modules/intermediate_format/ifweb.xql @@ -19,6 +19,8 @@ import module namespace config = "http://bdn-edition.de/intermediate_format/conf declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=no"; +declare variable $ifweb:replace-whitespace := true(); +declare variable $ifweb:print := false(); declare function ifweb:main($resource as xs:string) as xs:string? { let $doc := doc($config:sade-data || $resource) @@ -30,10 +32,7 @@ declare function ifweb:main($resource as xs:string) as xs:string? { declare function ifweb:transform($doc as node()*, $filename as xs:string) as node()* { - let $replace-whitespace := true() - let $log := console:log("Start preprocessing.") - let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace) - let $log := console:log("Start main processing.") + let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $ifweb:replace-whitespace, $ifweb:print) let $intermediate-format := ident:walk($preprocessed-data, ()) let $store := xmldb:store($config:sade-data, $filename, $intermediate-format) @@ -58,4 +57,18 @@ declare function ifweb:single-xml($resource as node()*, $filename as xs:string) as node()* { let $filename := substring-before($filename, '.xml') || "-if.xml" return ifweb:transform($resource, $filename) -}; \ No newline at end of file +}; + +declare function ifweb:transform-split-xml($xml as node()*, $filename as xs:string, +$dir as xs:string) { + let $preprocessed-data := pre:preprocessing($xml/*, $ifweb:replace-whitespace, $ifweb:print) + let $intermediate-format := ident:walk($preprocessed-data, ()) + let $content := + if(count($intermediate-format) gt 1) then + element tei:div {$intermediate-format} + else + $intermediate-format + let $store := xmldb:store($dir, $filename, $content) + + return $intermediate-format +}; diff --git a/modules/intermediate_format/preprocessing.xqm b/modules/intermediate_format/preprocessing.xqm index 97657ba6336652db62ce8f87bf8230307a6331c7..05c831c91fec1c8f807aba5d84105e47ff692cd0 100644 --- a/modules/intermediate_format/preprocessing.xqm +++ b/modules/intermediate_format/preprocessing.xqm @@ -140,7 +140,8 @@ declare function pre:default-element : @author Uwe Sikora :) declare function pre:preprocessing - ($nodes as node()*, $replace-whitespace as xs:boolean) as item()* { + ($nodes as node()*, $replace-whitespace as xs:boolean, $print as xs:boolean) + as item()* { for $node in $nodes return @@ -161,11 +162,11 @@ declare function pre:preprocessing case element(TEI) return ( element{$node/name()}{ $node/@*, - pre:preprocessing($node/node(), $replace-whitespace), + pre:preprocessing($node/node(), $replace-whitespace, $print), element{"editorial-notes"}{ for $editorial-note in $node//note[@type eq "editorial-commentary"] return - pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace) ) + pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace, $print) ) } } ) @@ -174,10 +175,10 @@ declare function pre:preprocessing case element(div) return ( if ($node[@type = 'section-group']) then ( - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) ) else ( - pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) ) + pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) ) ) ) @@ -186,7 +187,7 @@ declare function pre:preprocessing element{$node/name()}{ $node/@*, attribute {"id"}{ generate-id($node)}, - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) @@ -195,7 +196,7 @@ declare function pre:preprocessing into the critical apparatus. to save time in the internal area of the page we decided to put all counting here and saving it in @app-id instead of doing it on the fly. :) - if ($node[@type = ("v", "pp", "pt")]) then ( + if ($node[@type = ("v", "pp", "pt")] and not($print)) then ( let $current-div-no := count($node/ancestor::div[1]/preceding::div[@type = "section"]) + 1 @@ -218,20 +219,20 @@ declare function pre:preprocessing $node/@*, attribute {"app-id"}{$app-id}, attribute {"id"}{ generate-id($node)}, - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else element{$node/name()}{ $node/@*, attribute {"id"}{ generate-id($node)}, - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) case element(note) return ( if ( $node[@type != "editorial-commentary"] or $node[ not(@type) ] ) then ( - pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) ) + pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) ) ) else ( ) ) @@ -273,11 +274,11 @@ declare function pre:preprocessing if($node[@rend = 'right-aligned' or @rend = 'center-aligned']) then( element {'aligned'} { $node/@*, - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else ( - pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) ) + pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) ) ) ) @@ -285,33 +286,33 @@ declare function pre:preprocessing if($node[@type = 'item']) then( element {'item'} { $node/@*[name() != 'type'], - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else if($node[@type = 'head']) then( element {'head'} { $node/@*[name() != 'type'], - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else if($node[@type = 'row']) then( element {'row'} { $node/@*[name() != 'type'], - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else if($node[@type = 'cell']) then( element {'row'} { $node/@*[name() != 'type'], - pre:preprocessing($node/node(), $replace-whitespace) + pre:preprocessing($node/node(), $replace-whitespace, $print) } ) else ( - pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) ) + pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) ) ) ) default return ( - pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) ) + pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace, $print) ) ) }; diff --git a/rest/intermediate_format.xql b/rest/intermediate_format.xql index 73b3166e871b95212fc670ce7b12f5a7278530db..b7e6f014feba3b76ed0d522007dbebe6d5b4b4c7 100644 --- a/rest/intermediate_format.xql +++ b/rest/intermediate_format.xql @@ -14,9 +14,10 @@ declare variable $resource-uri := request:get-parameter("resource", ("/db/apps/i declare variable $uri := request:get-parameter("uri", ()); declare variable $mode := request:get-parameter("mode", ()); declare variable $replace-whitespace := true(); +declare variable $print := true(); let $doc := ifutils:get-resource($resource-uri) -let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace) +let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace, $print) let $intermediate-format := ident:walk($preprocessed-data, ()) let $store := if ($mode = "store") then ( let $filename := concat(replace($resource-uri, '.+/(.+)$', '$1'), ".out")