-
Michelle Rodzis authoredMichelle Rodzis authored
preprocessing.xqm 9.66 KiB
xquery version "3.0";
(:~
: PREPROCESSING Module ("pre", "http://bdn.edition.de/intermediate_format/preprocessing")
: *******************************************************************************************
: This module contains the preprocessing routines for the intermediate format
:
: It imports the whitespace handling helper module to make some whitespace handling duricng the preprocessing
: @version 2.0 (2018-01-29)
: @status working
: @author Uwe Sikora
:)
module namespace pre="http://bdn-edition.de/intermediate_format/preprocessing";
import module namespace whitespace = "http://bdn-edition.de/intermediate_format/whitespace_handling" at "whitespace-handling.xqm";
declare default element namespace "http://www.tei-c.org/ns/1.0";
(:############################# Modules Functions #############################:)
(:~
: pre:preprocessing-textNode
: preprocessing function which converts each text() into a xml-node "textNode". This function is a experimental fall back solution and not the main preprocessing routine!
:
: @param $nodes the nodes to be converted
: @return item()* representing the converted node
:
: @version 1.2 (2017-10-15)
: @status working
: @author Uwe Sikora
:)
declare function pre:preprocessing-textNode
($nodes as node()*) as item()* {
for $node in $nodes
return
typeswitch($node)
case processing-instruction() return ()
case text() return (
if (normalize-space($node) eq "") then () else (
element {"textNode"} {
(:attribute {"interformId"}{ generate-id($node) },:)
$node
}
)
)
case element(TEI) return (
element{$node/name()}{
$node/@*,
pre:preprocessing-textNode($node/node()),
element{"editorial-notes"}{
$node//note[@type eq "editorial-commentary"]
}
}
)
case element(lem) return (
element{$node/name()}{
$node/@*,
attribute {"id"}{ generate-id($node)},
pre:preprocessing-textNode($node/node())
}
)
case element(rdg) return (
element{$node/name()}{
$node/@*,
attribute {"id"}{ generate-id($node)},
pre:preprocessing-textNode($node/node())