Created
May 18, 2016 12:13
-
-
Save mathias-goebel/1474c6b32cc015e9949bde1795cb4137 to your computer and use it in GitHub Desktop.
TEI:lb and other empty elements in XQuery
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
xquery version "3.0"; | |
declare namespace tei="http://www.tei-c.org/ns/1.0"; | |
declare function local:magic($nodes as node()*) { | |
(:let $test:= console:log($nodes/local-name()):) | |
(:return:) | |
for $node in $nodes return | |
typeswitch($node) | |
case element(*) | |
return element | |
{$node/local-name()} | |
{ attribute lbnum {count($node/preceding::tei:lb)}, | |
local:magic($node/node())} | |
case attribute(*) return $node | |
case text() return element span {attribute lbnum {count($node/preceding::tei:lb)},$node} | |
case element(tei:lb) return ($node, attribute lbnum {count($node/preceding::tei:lb) + 1}) | |
default return ($node) | |
}; | |
let $input:= | |
<TEI xmlns="http://www.tei-c.org/ns/1.0"> | |
<!-- header removed for brevity --> | |
<text> | |
<body> | |
<p> | |
<del rend="overstrike">Card room where | |
<lb/> | |
nine out of ten had no inclination</del> | |
<add>some text</add> | |
<lb/> | |
some more text | |
</p> | |
</body> | |
</text> | |
</TEI> | |
let $output := | |
<TEI xmlns="http://www.tei-c.org/ns/1.0"> | |
<text> | |
<body> | |
<p> | |
<lb> | |
<del rend="overstrike">Card room where</del> | |
</lb><lb> | |
<del rend="overstrike">nine out of ten had no inclination</del> | |
</lb> | |
</p> | |
</body> | |
</text> | |
</TEI> | |
return | |
local:magic($input) | |
(: $input//node()[preceding-sibling::tei:lb]:) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment