-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate-bl-proofreading-sheet.xq
102 lines (79 loc) · 3.74 KB
/
create-bl-proofreading-sheet.xq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
xquery version "3.1";
import module namespace functx="http://www.functx.com";
declare default element namespace "http://www.tei-c.org/ns/1.0";
declare variable $local:path-to-repo :=
"/home/arren/Documents/GitHub/britishLibrary-data";
declare variable $local:in-coll :=
collection($local:path-to-repo||"/data/tei/");
declare variable $local:archive-url-bases :=
("https://archive.org/details/catalogueofsyria01brituoft/page/",
"https://archive.org/details/catalogueofsyria02brituoft/page/",
"https://archive.org/details/catalogueofsyria03brituoft/page/");
declare variable $local:ms-uri-base := "http://syriaca.org/manuscript/";
declare variable $local:dev-url-base := "https://bl.vuexistapps.us/manuscript/";
(: this is for multi-part manuscripts :)
let $recs :=
for $doc in $local:in-coll
where $doc//msPart
let $fileUri := document-uri($doc)
let $fileUri := substring-after($fileUri, $local:path-to-repo)
for $part in $doc//msPart
let $msUri := $part/msIdentifier/idno[@type="URI"]/text()
let $devUrl := $local:dev-url-base||substring-after($msUri, $local:ms-uri-base)
let $shelfmark := $part/msIdentifier/altIdentifier/idno[@type="BL-Shelfmark"]/text()
let $partNumber := $part/@xml:id/string()
let $volumeAndPage := $part/additional/listBibl/bibl/citedRange[@unit="pp"]/text()
let $volume := substring-before($volumeAndPage, ":")
let $volume := if($volume = "I") then "1" else if ($volume = "II") then "2" else if ($volume = "III") then "3" else $volume
let $page := substring-after($volumeAndPage, ":")
let $startPage := normalize-space(functx:substring-before-if-contains($page, "-"))
let $archiveLink :=
switch($volume)
case "1" return $local:archive-url-bases[1]
case "2" return $local:archive-url-bases[2]
case "3" return $local:archive-url-bases[3]
default return ""
let $archiveLink := $archiveLink||$startPage
return
<rec>
<fileName>{$fileUri}</fileName>
<msUri>{$msUri}</msUri>
<linkToManuscript>{$devUrl}</linkToManuscript>
<shelfmark>{$shelfmark}</shelfmark>
<partNumber>{$partNumber}</partNumber>
<linkToPDF>{$archiveLink}</linkToPDF>
<volume>{$volume}</volume>
<startPage>{$startPage}</startPage>
</rec>
return csv:serialize(<csv>{$recs}</csv>, map {"header": "true"})
(: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :)
(: this is for single-part manuscripts :)
(: let $recs :=
for $doc in $local:in-coll
where not($doc//msPart)
let $fileUri := document-uri($doc)
let $fileUri := substring-after($fileUri, $local:path-to-repo)
let $msUri := $doc//msDesc/msIdentifier/idno[@type="URI"]/text()
let $devUrl := $local:dev-url-base||substring-after($msUri, $local:ms-uri-base)
let $shelfmark := $doc//msDesc/msIdentifier/altIdentifier/idno[@type="BL-Shelfmark"]/text()
let $volumeAndPage := $doc//msDesc/additional/listBibl/bibl/citedRange[@unit="pp"]/text()
let $volume := substring-before($volumeAndPage, ":")
let $volume := if($volume = "I") then "1" else if ($volume = "II") then "2" else if ($volume = "III") then "3" else $volume
let $page := substring-after($volumeAndPage, ":")
let $startPage := normalize-space(functx:substring-before-if-contains($page, "-"))
let $archiveLink :=
switch($volume)
case "1" return $local:archive-url-bases[1]
case "2" return $local:archive-url-bases[2]
case "3" return $local:archive-url-bases[3]
default return ""
let $archiveLink := $archiveLink||$startPage
return
<rec>
<fileName>{$fileUri}</fileName>
<msUri>{$msUri}</msUri>
<linkToManuscript>{$devUrl}</linkToManuscript>
<shelfmark>{$shelfmark}</shelfmark>
<linkToPDF>{$archiveLink}</linkToPDF>
</rec>
return csv:serialize(<csv>{$recs}</csv>, map {"header": "true"}) :)