Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
I
intermediate-format
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
bibliothek-der-neologie
intermediate-format
Commits
46795cd8
Commit
46795cd8
authored
7 years ago
by
usikora
Browse files
Options
Downloads
Patches
Plain Diff
ongoing work on analysis presentation
parent
f8e93fe4
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
modules/analysis/analysis.xqm
+124
-65
124 additions, 65 deletions
modules/analysis/analysis.xqm
modules/app.xql
+5
-5
5 additions, 5 deletions
modules/app.xql
resources/css/presentation.if.css
+9
-18
9 additions, 18 deletions
resources/css/presentation.if.css
with
138 additions
and
88 deletions
modules/
presentation/presentation
.xqm
→
modules/
analysis/analysis
.xqm
+
124
−
65
View file @
46795cd8
...
...
@@ -8,15 +8,15 @@ xquery version "3.0";
: @status development
: @author Uwe Sikora
:)
module
namespace
presentation
=
"http://bdn-edition.de/intermediate_format/
presentation
"
;
module
namespace
analysis
=
"http://bdn-edition.de/intermediate_format/
analysis
"
;
declare
namespace
tei
=
"http://www.tei-c.org/ns/1.0"
;
import
module
namespace
console
=
"http://exist-db.org/xquery/console"
;
(:############################# Modules Functions #############################:)
(:~
:
presentation
:html
:
analysis
:html
: html presentation of an intermediate-format xml document
:
: @param $nodes the nodes to be converted
...
...
@@ -26,7 +26,7 @@ declare namespace tei="http://www.tei-c.org/ns/1.0";
: @status working
: @author Uwe Sikora
:)
declare
function
presentation
:tei-body
declare
function
analysis
:tei-body
(
$nodes
as
node
()
*
)
as
item
()
*
{
for
$node
in
$nodes
...
...
@@ -35,7 +35,7 @@ declare function presentation:tei-body
case
processing-instruction
()
return
()
case
comment
()
return
(
$node
)
case
text
()
return
(
$node
translate
(
$node
,
"@"
,
" "
)
)
case
element
(
tei:abbr
)
return
()
...
...
@@ -43,67 +43,67 @@ declare function presentation:tei-body
case
element
(
tei:aligned
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"aligned ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:app
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"app"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:body
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"body"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:byline
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"byline"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:choice
)
return
(
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
)
case
element
(
tei:div
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"div ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:docAuthor
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"docAuthor ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:docDate
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"docDate"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:docEdition
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"docEdition ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:docImprint
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"docImprint ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -111,7 +111,7 @@ declare function presentation:tei-body
element
{
"span"
}{
attribute
{
"class"
}{
"expan"
}
,
(: attribute {"data-tooltip"}{data($node/following-sibling::tei:abbr)},:)
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -121,14 +121,14 @@ declare function presentation:tei-body
return
element
{
concat
(
"h"
,
$count
)}{
attribute
{
"class"
}{
"head ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:hi
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"hi"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -137,21 +137,21 @@ declare function presentation:tei-body
case
element
(
tei:item
)
return
(
element
{
"li"
}{
attribute
{
"class"
}{
"item ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:l
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"l"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:label
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"label"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -160,34 +160,34 @@ declare function presentation:tei-body
)
case
element
(
tei:lem
)
return
(
element
{
"span"
}{
a
ttribute
{
"class"
}{
"lem"
}
,
presentation:tei-body
(
$node
/
node
()
)
}
if
(
$node
/
parent
::
tei:app
[
@type
=
"structural-variance"
])
then
(
a
nalysis:tei-body
(
$node
/
node
())
)
else
(
analysis:lem
(
$node
))
)
case
element
(
tei:list
)
return
(
element
{
"ul"
}{
attribute
{
"class"
}{
"list ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:milestone
)
return
(
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
)
case
element
(
tei:note
)
return
(
element
{
"p"
}{
attribute
{
"class"
}{
"note ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:p
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"p ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -198,57 +198,56 @@ declare function presentation:tei-body
case
element
(
tei:persName
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"persName"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:rdg
)
return
(
(: presentation:rdg($node):)
element
{
"span"
}{
attribute
{
"class"
}{
"rdg"
}
,
presentation:tei-body
(
$node
/
node
())
}
if
(
$node
/
parent
::
tei:app
[
@type
=
"structural-variance"
])
then
(
analysis:tei-body
(
$node
/
node
())
)
else
(
analysis:rdg
(
$node
))
)
case
element
(
tei:rdgMarker
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"rdgMarker"
}
,
presentation
:rdgMarker
(
$node
)
analysis
:rdgMarker
(
$node
)
}
)
case
element
(
tei:seg
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"seg"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:text
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"text"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:TEI
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"tei"
}
,
presentation
:tei-body
(
$node
/
tei:text
)
analysis
:tei-body
(
$node
/
tei:text
)
}
)
case
element
(
tei:titlePage
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"titlePage"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
case
element
(
tei:titlePart
)
return
(
element
{
"div"
}{
attribute
{
"class"
}{
"titlePart ble"
}
,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
)
...
...
@@ -258,7 +257,7 @@ declare function presentation:tei-body
$node
/
name
()
,
": "
,
element
{
$node
/
name
()}{
$node
/
@
*,
presentation
:tei-body
(
$node
/
node
())
analysis
:tei-body
(
$node
/
node
())
}
}
)
...
...
@@ -266,7 +265,7 @@ declare function presentation:tei-body
(:~
:
presentation
:rdgMarker
:
analysis
:rdgMarker
: html presentation of an intermediate-format xml document
:
: @param $nodes the nodes to be converted
...
...
@@ -276,7 +275,7 @@ declare function presentation:tei-body
: @status working
: @author Uwe Sikora
:)
declare
function
presentation
:rdgMarker
declare
function
analysis
:rdgMarker
(
$marker
as
node
()
)
as
item
()
*
{
let
$wit
:=
replace
(
$marker
/
string
(
@wit
)
,
" "
,
""
)
...
...
@@ -287,20 +286,20 @@ declare function presentation:rdgMarker
return
if
(
$marker
[
@type
=
"pt"
and
@context
=
"lem"
]
)
then
(
if
(
$marker
[
@mark
=
"open"
])
then
(
<span
class=
"pt open
lem
"
>
{
concat
(
"/"
,
$wit
)}
</span>
<span
class=
"pt open"
>
{
concat
(
"/"
,
$wit
)}
</span>
)
else
(
<span
class=
"pt closeing
lem
"
>
{
concat
(
$wit
,
"\"
)}
</span>
<span
class=
"pt closeing"
>
{
concat
(
$wit
,
"\"
)}
</span>
)
)
else
if
(
$marker
[
@type
=
"ptl"
and
@context
=
"lem"
]
)
then
(
if
(
$marker
[
@mark
=
"open"
])
then
(
<span
class=
"ptl open
lem
"
>
{
concat
(
"/"
,
$wit
)}
</span>
<span
class=
"ptl open"
>
{
concat
(
"/"
,
$wit
)}
</span>
)
else
(
<span
class=
"ptl closeing
lem
"
>
{
concat
(
$wit
,
"\||"
,
$wit
)}
</span>
<span
class=
"ptl closeing"
>
{
concat
(
$wit
,
"\||"
,
$wit
)}
</span>
)
)
...
...
@@ -317,20 +316,20 @@ declare function presentation:rdgMarker
else
if
(
$marker
[
@type
=
"pp"
and
@context
=
"lem"
]
)
then
(
if
(
$marker
[
@mark
=
"open"
])
then
(
<span
class=
"pp open
lem
"
>
{
concat
(
"~/"
,
$wit
)}
</span>
<span
class=
"pp open"
>
{
concat
(
"~/"
,
$wit
)}
</span>
)
else
(
<span
class=
"pp closeing
lem
"
>
{
concat
(
$wit
,
"\~"
)}
</span>
<span
class=
"pp closeing"
>
{
concat
(
$wit
,
"\~"
)}
</span>
)
)
else
if
(
$marker
[
@type
=
"ppl"
and
@context
=
"lem"
]
)
then
(
if
(
$marker
[
@mark
=
"open"
])
then
(
<span
class=
"ppl open
lem
"
>
{
concat
(
"~/"
,
$wit
)}
</span>
<span
class=
"ppl open"
>
{
concat
(
"~/"
,
$wit
)}
</span>
)
else
(
<span
class=
"ppl closeing
lem
"
>
{
concat
(
$wit
,
"\~||"
,
$wit
)}
</span>
<span
class=
"ppl closeing"
>
{
concat
(
$wit
,
"\~||"
,
$wit
)}
</span>
)
)
...
...
@@ -369,7 +368,7 @@ declare function presentation:rdgMarker
$marker
/
name
()
,
": "
,
element
{
$marker
/
name
()}{
$marker
/
@
*,
presentation
:tei-body
(
$marker
/
node
())
analysis
:tei-body
(
$marker
/
node
())
}
}
)
...
...
@@ -377,7 +376,7 @@ declare function presentation:rdgMarker
(:~
:
presentation
:rdgMarker
:
analysis
:rdgMarker
: html presentation of an intermediate-format xml document
:
: @param $nodes the nodes to be converted
...
...
@@ -387,21 +386,81 @@ declare function presentation:rdgMarker
: @status working
: @author Uwe Sikora
:)
declare
function
presentation
:rdg
declare
function
analysis
:rdg
(
$rdg
as
node
()
)
as
item
()
*
{
if
(
$rdg
[
@type
=
"pt"
or
@type
=
"pp"
or
@type
=
"v"
or
@type
=
"om"
]
)
then
(
let
$id
:=
data
(
$rdg
[
@id
])
let
$errors
:=
if
(
$rdg
[
@type
=
"v"
or
@type
=
"om"
]
)
then
()
else
(
analysis:check-rdg-markers
(
$id
,
$rdg
))
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"reading rdg "
||
data
(
$rdg
/
@type
)}
,
<span
class=
"reading-term"
>
tei:rdg
</span>
,
<span
class=
"error-status"
>
{
if
(
$errors
)
then
(
<span
style=
"color: red"
>
✗
</span>
,
console:log
(
$errors
))
else
(
<span
style=
"color: green"
>
✔
</span>
)
}
</span>
,
<span
class=
"reading-content"
>
{
analysis:tei-body
(
$rdg
/
node
()
)
}
</span>
}
)
};
declare
function
analysis:check-rdg-markers
(
$id
as
xs:string
,
$reading
as
node
()
)
as
item
()
*
{
else
(
presentation:tei-body
(
$rdg
/
node
())
let
$open-marker
:=
$reading
//
tei:rdgMarker
[
@mark
=
"open"
][
@ref
=
$id
]
let
$close-marker
:=
$reading
//
tei:rdgMarker
[
@mark
=
"close"
][
@ref
=
$id
]
let
$error
:=
(
if
(
not
(
$open-marker
)
or
not
(
$close-marker
)
)
then
(
$open-marker
,
$close-marker
)
else
()
)
return
$error
};
(:~
: analysis:lem
:
: @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
analysis:lem
(
$lem
as
node
()
)
as
item
()
*
{
let
$sibling-readings
:=
$lem
/
following-sibling
::
tei:rdg
[
not
(
@type
=
"typo_corr"
or
@type
=
"invisible-ref"
)]
let
$ids
:=
distinct-values
(
$sibling-readings
/
@id
)
let
$errors
:=
(
if
(
$lem
[
@type
=
"om"
]
or
count
(
$lem
/
node
())
=
0
)
then
()
else
(
for
$id
in
$ids
return
analysis:check-lem-markers
(
$id
,
$lem
))
)
return
(
element
{
"span"
}{
attribute
{
"class"
}{
"reading lem"
}
,
<span
class=
"reading-term"
>
tei:lem
</span>
,
console:log
(
$errors
)
,
<span
class=
"error-status"
>
{
if
(
$errors
)
then
(
<span
style=
"color: red"
>
✗
</span>
)
else
(
<span
style=
"color: green"
>
✔
</span>
)
}
</span>
,
<span
class=
"reading-content"
>
{
analysis:tei-body
(
$lem
/
node
()
)
}
</span>
}
)
};
declare
function
analysis:check-lem-markers
(
$id
as
xs:string
,
$reading
as
node
()
)
as
item
()
*
{
let
$open-marker
:=
$reading
//
tei:rdgMarker
[
@mark
=
"open"
and
@context
=
"lem"
][
tokenize
(
@ref
,
" "
)
=
$id
]
let
$close-marker
:=
$reading
//
tei:rdgMarker
[
@mark
=
"close"
and
@context
=
"lem"
][
tokenize
(
@ref
,
" "
)
=
$id
]
let
$error
:=
(
if
(
not
(
$open-marker
)
or
not
(
$close-marker
)
)
then
(
"ERROR"
)
else
()
)
return
$error
};
(:~
:
presentation
:html
:
analysis
:html
: html presentation of an intermediate-format xml document
:
: @param $nodes the nodes to be converted
...
...
@@ -411,7 +470,7 @@ declare function presentation:rdg
: @status working
: @author Uwe Sikora
:)
declare
function
presentation
:tei-header
declare
function
analysis
:tei-header
(
$nodes
as
node
()
*
)
as
item
()
*
{
for
$node
in
$nodes
...
...
@@ -424,25 +483,25 @@ declare function presentation:tei-header
)
case
element
(
tei:teiHeader
)
return
(
presentation
:tei-header
(
$node
/
node
())
analysis
:tei-header
(
$node
/
node
())
)
case
element
(
tei:fileDesc
)
return
(
presentation
:tei-header
(
$node
/
node
())
analysis
:tei-header
(
$node
/
node
())
)
case
element
(
tei:titleStmt
)
return
(
presentation
:tei-header
(
$node
/
node
())
analysis
:tei-header
(
$node
/
node
())
)
case
element
(
tei:title
)
return
(
if
(
$node
[
@level
])
then
(
<div
class=
"value"
>
<div><strong>
title:
</strong></div>
<div>
{
presentation
:tei-header
(
$node
/
node
())
}
</div>
<div>
{
analysis
:tei-header
(
$node
/
node
())
}
</div>
</div>
)
else
(
presentation
:tei-header
(
$node
/
node
())
analysis
:tei-header
(
$node
/
node
())
)
)
...
...
This diff is collapsed.
Click to expand it.
modules/app.xql
+
5
−
5
View file @
46795cd8
...
...
@@ -5,7 +5,7 @@ declare namespace tei = "http://www.tei-c.org/ns/1.0";
import module namespace templates="http://exist-db.org/xquery/templates" ;
import module namespace config="http://bdn-edition.de/intermediate_format/config" at "config.xqm";
import module namespace
presentation
="http://bdn-edition.de/intermediate_format/
presentation" at "presentation/presentation
.xqm";
import module namespace
analysis
="http://bdn-edition.de/intermediate_format/
analysis" at "analysis/analysis
.xqm";
import module namespace pre="http://bdn.edition.de/intermediate_format/preprocessing" at "intermediate_format/preprocessing.xqm";
import module namespace ident = "http://bdn.edition.de/intermediate_format/identification" at "intermediate_format/identification.xqm";
...
...
@@ -26,7 +26,7 @@ declare function app:test($node as node(), $model as map(*)) {
declare
%templates:wrap
%templates:default("doc", "/db/apps/interformat/data/samples/samples
4
.xml")
%templates:default("doc", "/db/apps/interformat/data/samples/samples.xml")
function app:present($node as node(), $model as map(*), $doc) {
<div class="serialisation">
{
...
...
@@ -34,7 +34,7 @@ function app:present($node as node(), $model as map(*), $doc) {
let $preprocessed-data := pre:preprocessing($nodes/tei:TEI)
let $intermediate-format := ident:walk($preprocessed-data, ())
return
presentation
:tei-body($intermediate-format)
analysis
:tei-body($intermediate-format)
}
</div>
};
...
...
@@ -42,7 +42,7 @@ function app:present($node as node(), $model as map(*), $doc) {
declare
%templates:wrap
%templates:default("doc", "/db/apps/interformat/data/samples/samples
4
.xml")
%templates:default("doc", "/db/apps/interformat/data/samples/samples.xml")
function app:tei-metadata($node as node(), $model as map(*), $doc) {
let $tei-header := doc($doc)//tei:teiHeader
return
...
...
@@ -51,6 +51,6 @@ function app:tei-metadata($node as node(), $model as map(*), $doc) {
<div><strong>uri:</strong></div>
<div>{ base-uri(doc($doc)) }</div>
</div>
{
presentation
:tei-header($tei-header)}
{
analysis
:tei-header($tei-header)}
</div>
};
\ No newline at end of file
This diff is collapsed.
Click to expand it.
resources/css/presentation.if.css
+
9
−
18
View file @
46795cd8
...
...
@@ -31,38 +31,29 @@ span.rdgMarker .om.open::before, span.rdgMarker .om.closeing::after {
/****************************************/
/* Textcritical elements */
/****************************************/
.app
::before
{
content
:
"tei:app"
;
display
:
block
;
font-family
:
consolas
;
font-size
:
12px
;
font-weight
:
bold
;
padding
:
2px
0
2px
0
;
}
.app
{
display
:
block
;
padding
:
8px
;
}
.lem
::before
,
.rdg
::before
{
display
:
block
;
.reading
.reading-term
{
font-family
:
consolas
;
font-size
:
1
2
px
;
font-size
:
1
3
px
;
font-weight
:
bold
;
padding
:
2px
0
2px
0
;
}
.
lem
::before
{
content
:
"tei:lem"
;
.
reading
.error-status
{
padding
:
0px
4px
0px
4px
;
}
.rdg
::before
{
content
:
"tei:rdg"
;
}
.
lem
,
.rdg
{
.
reading-content
{
border
:
1px
solid
#E9E8E9
;
display
:
block
;
padding
:
8px
;
}
.v
.reading-content
,
.pp
.reading-content
,
.pt
.reading-content
{
color
:
#BFBEBE
;
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment