Skip to content

Commit 0490c38

Browse files
committed
first shot at supporting sourcesTEI
see Edirom/WeGA-ODD#68
1 parent cb144ec commit 0490c38

File tree

4 files changed

+27
-12
lines changed

4 files changed

+27
-12
lines changed

modules/app.xqm

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1867,7 +1867,7 @@ declare
18671867
%templates:wrap
18681868
%templates:default("max", "200")
18691869
function app:preview-teaser($node as node(), $model as map(*), $max as xs:string) as xs:string {
1870-
let $textXML := $model('doc')/tei:ab | $model('doc')//tei:body | $model('doc')//mei:annot[@type='Kurzbeschreibung'] (: letzter Fall für sources :)
1870+
let $textXML := $model('doc')/tei:ab | $model('doc')//tei:body | $model('doc')//mei:annot[@type='Kurzbeschreibung'] (: letzter Fall für MEI sources :)
18711871
return
18721872
str:shorten-TEI($textXML, number($max), $model?lang)
18731873
};
@@ -1914,11 +1914,15 @@ declare
19141914
else wega-util:log-to-file('warn', 'app:preview-relator-role(): Failed to reckognize role')
19151915
};
19161916

1917+
(:~
1918+
: Solely used for sources(?)
1919+
:)
19171920
declare
19181921
%templates:wrap
19191922
%templates:default("lang", "en")
19201923
function app:preview-creation($node as node(), $model as map(*), $lang as xs:string) as xs:string? {
19211924
if($model('doc')/mei:manifestation/mei:pubStmt) then string-join($model('doc')/mei:manifestation/mei:pubStmt/*, ', ')
1925+
else if($model('doc')//tei:sourceDesc/tei:biblStruct) then bibl:printCitation($model?doc//tei:sourceDesc/tei:biblStruct, <xhtml:span/>, $lang)
19221926
else if($model('doc')/mei:manifestation/mei:creation) then str:normalize-space($model('doc')/mei:manifestation/mei:creation)
19231927
else ()
19241928
};

modules/bibl.xqm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,15 @@ declare function bibl:printGenericCitation($biblStruct as element(tei:biblStruct
5757
let $authors := bibl:printCitationAuthors($biblStruct/*/tei:author, $lang)
5858
let $title := bibl:printTitles($biblStruct/*/tei:title, $biblStruct/*/tei:edition)
5959
let $note := bibl:printNote($biblStruct/tei:note[1], $lang)
60+
let $imprint := bibl:printpubPlaceNYear($biblStruct/tei:monogr/tei:imprint, $biblStruct/tei:monogr/tei:edition, $lang)
6061
return
6162
element {$wrapperElement/name()} {
6263
$wrapperElement/@*,
6364
$authors,
6465
if(exists($authors)) then ', ' else (),
6566
$title,
6667
bibl:idno($biblStruct/*/tei:idno),
68+
$imprint,
6769
$note
6870
}
6971
};
@@ -282,7 +284,7 @@ declare %private function bibl:printCitationAuthors($authors as element()*, $lan
282284
: @param $imprint a tei:imprint element
283285
: @return html:span element if any data is given, the empty sequence otherwise
284286
:)
285-
declare %private function bibl:printpubPlaceNYear($imprint as element(tei:imprint), $edition as element(tei:edition)?, $lang as xs:string) as element(xhtml:span)? {
287+
declare %private function bibl:printpubPlaceNYear($imprint as element(tei:imprint)?, $edition as element(tei:edition)?, $lang as xs:string) as element(xhtml:span)? {
286288
let $countPlaces := count($imprint/tei:pubPlace)
287289
let $places :=
288290
for $place at $count in $imprint/tei:pubPlace

modules/query.xqm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ declare function query:get-facets($collection as node()*, $facet as xs:string) a
354354
case 'surnames' return $collection//tei:surname | $collection//tei:orgName[@type]
355355
case 'einrichtungsform' return $collection//mei:term[@label='einrichtungsform']
356356
case 'vorlageform' return $collection//mei:term[@label='vorlageform']
357-
case 'asksam-cat' return $collection//mei:term[@label='asksam-cat']
357+
case 'asksam-cat' return ($collection//mei:term[@label='asksam-cat'] | $collection//tei:term[parent::tei:keywords/@scheme='asksam-cat'])
358358
case 'placenames' return $collection//tei:placeName[@type='reg']
359359
case 'repository' return $collection//tei:repository/@n
360360
case 'series' return $collection//mei:seriesStmt/mei:title[@level='s']

modules/wdt.xqm

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -743,11 +743,19 @@ declare function wdt:sources($item as item()*) as map(*) {
743743
else false()
744744
},
745745
'filter' : function() as document-node()* {
746-
$item/root()[mei:manifestation][descendant::mei:titleStmt][not(descendant::mei:annot[@type='no-ordinary-record'])]
746+
$item/root()[mei:manifestation][descendant::mei:titleStmt][not(descendant::mei:annot[@type='no-ordinary-record'])] |
747+
$item/root()[descendant::tei:titleStmt/tei:title = 'WeGA, Textquellen, Digitale Edition']
747748
},
748749
'filter-by-person' : function($personID as xs:string) as document-node()* {
749-
if(config:is-person($personID) or config:is-org($personID)) then $item/root()/descendant::mei:persName[@codedval = $personID][@role=('cmp', 'lbt', 'lyr', 'aut', 'trl')][ancestor::mei:titleStmt]/root()
750-
else if(config:is-work($personID)) then $item/root()/descendant::mei:identifier[.=$personID][@type = 'WeGA']/root() | $item/root()/descendant::mei:relation[@target=concat('wega:', $personID)]/root()
750+
if(config:is-person($personID) or config:is-org($personID))
751+
then
752+
$item/root()/descendant::mei:persName[@codedval = $personID][@role=('cmp', 'lbt', 'lyr', 'aut', 'trl')][ancestor::mei:titleStmt]/root() |
753+
$item/root()/descendant::tei:titleStmt/tei:author[@key = $personID]/root()
754+
else
755+
if(config:is-work($personID))
756+
then
757+
$item/root()/descendant::mei:identifier[.=$personID][@type = 'WeGA']/root() | $item/root()/descendant::mei:relation[@target=concat('wega:', $personID)]/root() |
758+
$item/root()/descendant::tei:notesStmt/tei:relatedItem[@target=concat('wega:', $personID)]/root()
751759
else ()
752760
},
753761
'filter-by-date' : function($dateFrom as xs:date?, $dateTo as xs:date?) as document-node()* {
@@ -757,19 +765,20 @@ declare function wdt:sources($item as item()*) as map(*) {
757765
$item
758766
},
759767
'init-collection' : function() as document-node()* {
760-
crud:data-collection('sources')[descendant::mei:titleStmt][not(descendant::mei:annot[@type='no-ordinary-record'])]
768+
crud:data-collection('sources')[descendant::mei:titleStmt][not(descendant::mei:annot[@type='no-ordinary-record'])] |
769+
crud:data-collection('sources')[descendant::tei:titleStmt/tei:title = 'WeGA, Textquellen, Digitale Edition']
761770
},
762771
'init-sortIndex' : function() as item()* {
763772
()
764773
},
765774
'title' : function($serialization as xs:string) as item()? {
766775
let $source :=
767776
typeswitch($item)
768-
case xs:string return crud:doc($item)/mei:manifestation
769-
case xs:untypedAtomic return crud:doc($item)/mei:manifestation
770-
case document-node() return $item/mei:manifestation
771-
default return $item/root()/mei:manifestation
772-
let $title-element := ($source/mei:titleStmt/mei:title[not(@type)])[1]
777+
case xs:string return crud:doc($item)/*
778+
case xs:untypedAtomic return crud:doc($item)/*
779+
case document-node() return $item/*
780+
default return $item/root()/*
781+
let $title-element := ($source/mei:titleStmt/mei:title[not(@type)], $source//tei:titleStmt/tei:title[@level='a'])[1]
773782
return
774783
switch($serialization)
775784
case 'txt' return str:normalize-space(replace(string-join(str:txtFromTEI($title-element, config:guess-language(())), ''), '\s*\n+\s*(\S+)', '. $1'))

0 commit comments

Comments
 (0)