Skip to content
Snippets Groups Projects
Commit e2d5834a authored by MRodz's avatar MRodz
Browse files

implement test drive for db-internal creation of intermediate format

parent 950d8cbe
No related branches found
No related tags found
No related merge requests found
(:~
: ifweb.xql offers a simple interface for creating the website specific BdN
: intermediate format of a given resource.
:
: @author Michelle Rodzis
: @version 1.0
:
:)
xquery version "3.1";
module namespace ifweb="http://bdn-edition.de/intermediate_format/ifweb";
declare namespace tei = "http://www.tei-c.org/ns/1.0";
import module namespace pre="http://bdn-edition.de/intermediate_format/preprocessing" at "xmldb:exist:///db/apps/interformat/modules/intermediate_format/preprocessing.xqm";
import module namespace ident = "http://bdn-edition.de/intermediate_format/identification" at "xmldb:exist:///db/apps/interformat/modules/intermediate_format/identification.xqm";
import module namespace config = "http://bdn-edition.de/intermediate_format/config" at "xmldb:exist:///db/apps/interformat/modules/config.xqm";
declare option exist:serialize "method=xml media-type=text/xml omit-xml-declaration=no indent=no";
declare function ifweb:main($resource as xs:string) as xs:string? {
let $doc := doc($config:sade-data || $resource)
let $filename := substring-before($resource, '.xml') || "-if.xml"
let $replace-whitespace := false()
let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
let $intermediate-format := ident:walk($preprocessed-data, ())
return xmldb:store($config:sade-data, $filename, $intermediate-format)
};
\ No newline at end of file
......@@ -136,7 +136,7 @@ declare function pre:default-element
: @author Uwe Sikora
:)
declare function pre:preprocessing
($nodes as node()*) as item()* {
($nodes as node()*, $replace-whitespace as xs:boolean) as item()* {
for $node in $nodes
return
......@@ -144,7 +144,12 @@ declare function pre:preprocessing
case processing-instruction() return ()
case text() return (
if($replace-whitespace) then (
whitespace:text($node, " ")
)
else (
$node
)
)
case comment() return ()
......@@ -152,11 +157,11 @@ declare function pre:preprocessing
case element(TEI) return (
element{$node/name()}{
$node/@*,
pre:preprocessing($node/node()),
pre:preprocessing($node/node(), $replace-whitespace),
element{"editorialNotes"}{
for $editorial-note in $node//note[@type eq "editorial-commentary"]
return
pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node()) )
pre:default-element( $editorial-note, pre:preprocessing($editorial-note/node(), $replace-whitespace) )
}
}
)
......@@ -165,10 +170,10 @@ declare function pre:preprocessing
case element(div) return (
if ($node[@type = 'section-group']) then (
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
)
else (
pre:default-element( $node, pre:preprocessing($node/node()) )
pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
)
)
......@@ -177,7 +182,7 @@ declare function pre:preprocessing
element{$node/name()}{
$node/@*,
attribute {"id"}{ generate-id($node)},
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
......@@ -185,13 +190,13 @@ declare function pre:preprocessing
element{$node/name()}{
$node/@*,
attribute {"id"}{ generate-id($node)},
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
case element(note) return (
if ( $node[@type != "editorial-commentary"] or $node[ not(@type) ] ) then (
pre:default-element( $node, pre:preprocessing($node/node()) )
pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
) else ( )
)
......@@ -233,11 +238,11 @@ declare function pre:preprocessing
if($node[@rend = 'right-aligned' or @rend = 'center-aligned']) then(
element {'aligned'} {
$node/@*,
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
else (
pre:default-element( $node, pre:preprocessing($node/node()) )
pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
)
)
......@@ -245,27 +250,27 @@ declare function pre:preprocessing
if($node[@type = 'item']) then(
element {'item'} {
$node/@*[name() != 'type'],
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
else if($node[@type = 'head']) then(
element {'head'} {
$node/@*[name() != 'type'],
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
else if($node[@type = 'row']) then(
element {'row'} {
$node/@*[name() != 'type'],
pre:preprocessing($node/node())
pre:preprocessing($node/node(), $replace-whitespace)
}
)
else (
pre:default-element( $node, pre:preprocessing($node/node()) )
pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
)
)
default return (
pre:default-element( $node, pre:preprocessing($node/node()) )
pre:default-element( $node, pre:preprocessing($node/node(), $replace-whitespace) )
)
};
......@@ -13,9 +13,10 @@ declare option exist:serialize "method=xml media-type=text/xml omit-xml-declarat
declare variable $resource-uri := request:get-parameter("resource", ("/db/apps/interformat/data/samples/samples.xml"));
declare variable $uri := request:get-parameter("uri", ());
declare variable $mode := request:get-parameter("mode", ());
declare variable $replace-whitespace := true();
let $doc := ifutils:get-resource($resource-uri)
let $preprocessed-data := pre:preprocessing($doc/tei:TEI)
let $preprocessed-data := pre:preprocessing($doc/tei:TEI, $replace-whitespace)
let $intermediate-format := ident:walk($preprocessed-data, ())
let $store := if ($mode = "store") then (
let $filename := concat(replace($resource-uri, '.+/(.+)$', '$1'), ".out")
......@@ -26,4 +27,4 @@ let $store := if ($mode = "store") then (
return (
$intermediate-format
)
\ No newline at end of file
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment