bibframe_ruby 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +24 -2
- data/docs/superpowers/plans/2026-09-09-marc-conversion.md +537 -0
- data/docs/superpowers/specs/2026-09-09-marc-conversion-design.md +110 -0
- data/lib/bibframe_ruby/marc_converter.rb +67 -0
- data/lib/bibframe_ruby/parser.rb +4 -2
- data/lib/bibframe_ruby/version.rb +1 -1
- data/lib/bibframe_ruby.rb +7 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-001-007.xsl +2276 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-006,008.xsl +1295 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-010-048.xsl +1712 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-050-088.xsl +713 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-1XX,7XX,8XX-names.xsl +1141 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-200-247not240-Titles.xsl +771 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-240andX30-UnifTitle.xsl +535 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-250-270.xsl +283 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-3XX.xsl +2245 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-460-468-SeriesTreat.xsl +135 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-490-510-Links.xsl +145 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-5XX.xsl +1448 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-600-662.xsl +1417 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-720+740to755.xsl +333 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-758.xsl +102 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-760-788-Links.xsl +771 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-841-887.xsl +328 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-880.xsl +119 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-ControlSubfields.xsl +495 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-LDR.xsl +183 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-Preprocess0-Splitting.xsl +765 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-Process6-Series.xsl +627 -0
- data/vendor/marc2bibframe2/xsl/ConvSpec-Process8-ProvAct.xsl +1021 -0
- data/vendor/marc2bibframe2/xsl/conf/abbreviations.xml +13 -0
- data/vendor/marc2bibframe2/xsl/conf/code-to-script.xml +399 -0
- data/vendor/marc2bibframe2/xsl/conf/codeMaps.xml +723 -0
- data/vendor/marc2bibframe2/xsl/conf/exclusions.xml +4 -0
- data/vendor/marc2bibframe2/xsl/conf/iso6392-to-1.xml +615 -0
- data/vendor/marc2bibframe2/xsl/conf/languageCrosswalk.xml +1503 -0
- data/vendor/marc2bibframe2/xsl/conf/map880.xml +175 -0
- data/vendor/marc2bibframe2/xsl/conf/scriptCrosswalk.xml +210 -0
- data/vendor/marc2bibframe2/xsl/conf/subjectThesaurus.xml +29 -0
- data/vendor/marc2bibframe2/xsl/marc2bibframe2.xsl +610 -0
- data/vendor/marc2bibframe2/xsl/naco-normalize.xsl +205 -0
- data/vendor/marc2bibframe2/xsl/utils.xsl +963 -0
- data/vendor/marc2bibframe2/xsl/variables.xsl +108 -0
- metadata +68 -1
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
<?xml version='1.0'?>
|
|
2
|
+
<xsl:stylesheet version="1.0"
|
|
3
|
+
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
4
|
+
xmlns:naco="https://www.loc.gov/aba/pcc/naco/"
|
|
5
|
+
exclude-result-prefixes="xsl naco">
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
an implementation of NACO normalization
|
|
9
|
+
(https://www.loc.gov/aba/pcc/naco/normrule-2.html)
|
|
10
|
+
This will not work for precomposed characters -
|
|
11
|
+
could add manual translations
|
|
12
|
+
First comma rule not implemented
|
|
13
|
+
Returns lower-case (upper-case hurts the eyes)
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
<!-- Lookup tables -->
|
|
17
|
+
|
|
18
|
+
<!-- deletes -->
|
|
19
|
+
<naco:translate char="'"/>
|
|
20
|
+
<naco:translate char="["/>
|
|
21
|
+
<naco:translate char="]"/>
|
|
22
|
+
<naco:translate char="ʼ"/> <!-- Spacing apostrophe (Alif) -->
|
|
23
|
+
<naco:translate char="ʾ"/> <!-- Spacing right half ring (Alif) -->
|
|
24
|
+
<naco:translate char="ʿ"/> <!-- Spacing left half ring (Ayn) -->
|
|
25
|
+
<naco:translate char="ъ"/> <!-- small letter hard sign -->
|
|
26
|
+
<naco:translate char="Ъ"/> <!-- capital letter hard sign -->
|
|
27
|
+
<naco:translate char="ь"/> <!-- small letter soft sign -->
|
|
28
|
+
<naco:translate char="Ь"/> <!-- capital letter soft sign -->
|
|
29
|
+
|
|
30
|
+
<!-- modifying diacritics -->
|
|
31
|
+
<naco:translate char="́"/> <!-- combining acute -->
|
|
32
|
+
<naco:translate char="̆"/> <!-- combining breve -->
|
|
33
|
+
<naco:translate char="̐"/> <!-- combining candrabindu -->
|
|
34
|
+
<naco:translate char="̧"/> <!-- combining cedilla -->
|
|
35
|
+
<naco:translate char="̊"/> <!-- combining ring above -->
|
|
36
|
+
<naco:translate char="̥"/> <!-- combining ring below -->
|
|
37
|
+
<naco:translate char="̂"/> <!-- combining circumflex -->
|
|
38
|
+
<naco:translate char="̣"/> <!-- combining dot below -->
|
|
39
|
+
<naco:translate char="͠"/> <!-- combining double tilde -->
|
|
40
|
+
<naco:translate char="︢"/> <!-- combining double tilde left half -->
|
|
41
|
+
<naco:translate char="︣"/> <!-- combining double tilde right half -->
|
|
42
|
+
<naco:translate char="̳"/> <!-- combining double low line -->
|
|
43
|
+
<naco:translate char="̀"/> <!-- combining grave -->
|
|
44
|
+
<naco:translate char="̌"/> <!-- combining caron (hacek) -->
|
|
45
|
+
<naco:translate char="̓"/> <!-- combining comma above -->
|
|
46
|
+
<naco:translate char="̕"/> <!-- combining comma above right -->
|
|
47
|
+
<naco:translate char="̦"/> <!-- combining comma below -->
|
|
48
|
+
<naco:translate char="͡"/> <!-- combining double inverted breve -->
|
|
49
|
+
<naco:translate char="̄"/> <!-- combining macron -->
|
|
50
|
+
<naco:translate char="̉"/> <!-- combining hook above -->
|
|
51
|
+
<naco:translate char="̜"/> <!-- combining left half ring below -->
|
|
52
|
+
<naco:translate char="̨"/> <!-- combining ogonek -->
|
|
53
|
+
<naco:translate char="̇"/> <!-- combining dot above -->
|
|
54
|
+
<naco:translate char="̃"/> <!-- combining tilde -->
|
|
55
|
+
<naco:translate char="̈"/> <!-- combining diaeresis (umlaut) -->
|
|
56
|
+
<naco:translate char="̲"/> <!-- combining low line -->
|
|
57
|
+
<naco:translate char="̮"/> <!-- combining breve below (upadhmaniya) -->
|
|
58
|
+
|
|
59
|
+
<!-- blanks -->
|
|
60
|
+
<naco:translate char="!"> </naco:translate>
|
|
61
|
+
<naco:translate char='"'> </naco:translate>
|
|
62
|
+
<naco:translate char="("> </naco:translate>
|
|
63
|
+
<naco:translate char=")"> </naco:translate>
|
|
64
|
+
<naco:translate char="-"> </naco:translate>
|
|
65
|
+
<naco:translate char="{"> </naco:translate>
|
|
66
|
+
<naco:translate char="}"> </naco:translate>
|
|
67
|
+
<naco:translate char="<"> </naco:translate>
|
|
68
|
+
<naco:translate char=">"> </naco:translate>
|
|
69
|
+
<naco:translate char=";"> </naco:translate>
|
|
70
|
+
<naco:translate char=":"> </naco:translate>
|
|
71
|
+
<naco:translate char="."> </naco:translate>
|
|
72
|
+
<naco:translate char="?"> </naco:translate>
|
|
73
|
+
<naco:translate char="¿"> </naco:translate> <!-- inverted question mark -->
|
|
74
|
+
<naco:translate char="¡"> </naco:translate> <!-- inverted exclamation mark -->
|
|
75
|
+
<naco:translate char=","> </naco:translate>
|
|
76
|
+
<naco:translate char="/"> </naco:translate>
|
|
77
|
+
<naco:translate char="\"> </naco:translate>
|
|
78
|
+
<naco:translate char="*"> </naco:translate>
|
|
79
|
+
<naco:translate char="|"> </naco:translate>
|
|
80
|
+
<naco:translate char="%"> </naco:translate>
|
|
81
|
+
<naco:translate char="="> </naco:translate>
|
|
82
|
+
<naco:translate char="±"> </naco:translate> <!-- plus or minus -->
|
|
83
|
+
<naco:translate char="∓"> </naco:translate> <!-- minus or plus -->
|
|
84
|
+
<naco:translate char="⁺"> </naco:translate> <!-- superscript plus -->
|
|
85
|
+
<naco:translate char="⁻"> </naco:translate> <!-- superscript minus -->
|
|
86
|
+
<naco:translate char="®"> </naco:translate> <!-- patent mark -->
|
|
87
|
+
<naco:translate char="©"> </naco:translate> <!-- copyright -->
|
|
88
|
+
<naco:translate char="°"> </naco:translate> <!-- degree sign -->
|
|
89
|
+
<naco:translate char="^"> </naco:translate>
|
|
90
|
+
<naco:translate char="_"> </naco:translate>
|
|
91
|
+
<naco:translate char="`"> </naco:translate>
|
|
92
|
+
<naco:translate char="~"> </naco:translate>
|
|
93
|
+
<naco:translate char="·"> </naco:translate> <!-- middle dot -->
|
|
94
|
+
|
|
95
|
+
<!-- superscript numbers -->
|
|
96
|
+
<naco:translate char="⁰">0</naco:translate>
|
|
97
|
+
<naco:translate char="¹">1</naco:translate>
|
|
98
|
+
<naco:translate char="²">2</naco:translate>
|
|
99
|
+
<naco:translate char="³">3</naco:translate>
|
|
100
|
+
<naco:translate char="⁴">4</naco:translate>
|
|
101
|
+
<naco:translate char="⁵">5</naco:translate>
|
|
102
|
+
<naco:translate char="⁶">6</naco:translate>
|
|
103
|
+
<naco:translate char="⁷">7</naco:translate>
|
|
104
|
+
<naco:translate char="⁸">8</naco:translate>
|
|
105
|
+
<naco:translate char="⁹">9</naco:translate>
|
|
106
|
+
<!-- subscript numbers -->
|
|
107
|
+
<naco:translate char="₀">0</naco:translate>
|
|
108
|
+
<naco:translate char="₁">1</naco:translate>
|
|
109
|
+
<naco:translate char="₂">2</naco:translate>
|
|
110
|
+
<naco:translate char="₃">3</naco:translate>
|
|
111
|
+
<naco:translate char="₄">4</naco:translate>
|
|
112
|
+
<naco:translate char="₅">5</naco:translate>
|
|
113
|
+
<naco:translate char="₆">6</naco:translate>
|
|
114
|
+
<naco:translate char="₇">7</naco:translate>
|
|
115
|
+
<naco:translate char="₈">8</naco:translate>
|
|
116
|
+
<naco:translate char="₉">9</naco:translate>
|
|
117
|
+
|
|
118
|
+
<naco:translate char="Æ">AE</naco:translate> <!-- capital letter AE -->
|
|
119
|
+
<naco:translate char="æ">ae</naco:translate> <!-- small letter ae -->
|
|
120
|
+
<naco:translate char="Œ">OE</naco:translate> <!-- capital ligature oe -->
|
|
121
|
+
<naco:translate char="œ">oe</naco:translate> <!-- small ligature oe -->
|
|
122
|
+
<naco:translate char="Đ">D</naco:translate> <!-- capital letter D with stroke -->
|
|
123
|
+
<naco:translate char="đ">d</naco:translate> <!-- small letter D with stroke -->
|
|
124
|
+
<naco:translate char="Ð">D</naco:translate> <!-- capital letter eth -->
|
|
125
|
+
<naco:translate char="ð">d</naco:translate> <!-- small letter eth -->
|
|
126
|
+
<naco:translate char="İ">I</naco:translate> <!-- capital letter dotted i -->
|
|
127
|
+
<naco:translate char="ı">i</naco:translate> <!-- small letter dotless i -->
|
|
128
|
+
<naco:translate char="Ł">L</naco:translate> <!-- capital letter L with stroke -->
|
|
129
|
+
<naco:translate char="ł">l</naco:translate> <!-- small letter l with stroke -->
|
|
130
|
+
<naco:translate char="ℓ">l</naco:translate> <!-- script small l -->
|
|
131
|
+
<naco:translate char="Ơ">O</naco:translate> <!-- capital letter O with horn (O-hook) -->
|
|
132
|
+
<naco:translate char="ơ">o</naco:translate> <!-- small letter o with horn (o-hook) -->
|
|
133
|
+
<naco:translate char="Ư">U</naco:translate> <!-- capital letter U with horn (U-hook) -->
|
|
134
|
+
<naco:translate char="ư">u</naco:translate> <!-- small letter u with horn (u-hook) -->
|
|
135
|
+
<naco:translate char="Ø">O</naco:translate> <!-- capital letter O with stroke -->
|
|
136
|
+
<naco:translate char="ø">o</naco:translate> <!-- small letter o with stroke -->
|
|
137
|
+
<naco:translate char="Þ">TH</naco:translate> <!-- capital letter thorn -->
|
|
138
|
+
<naco:translate char="þ">th</naco:translate> <!-- small letter thorn -->
|
|
139
|
+
<naco:translate char="ẞ">SS</naco:translate> <!-- capital letter sharp s -->
|
|
140
|
+
<naco:translate char="ß">ss</naco:translate> <!-- small letter sharp s -->
|
|
141
|
+
|
|
142
|
+
<xsl:template name="naco-normalize-string">
|
|
143
|
+
<xsl:param name="str"/>
|
|
144
|
+
<xsl:variable name="lc">abcdefghijklmnopqrstuvwxyzαβγ</xsl:variable>
|
|
145
|
+
<xsl:variable name="uc">ABCDEFGHIJKLMNOPQRSTUVWXYZΑΒΓ</xsl:variable>
|
|
146
|
+
<xsl:variable name="translated">
|
|
147
|
+
<xsl:call-template name="_translate-chars">
|
|
148
|
+
<xsl:with-param name="str" select="$str"/>
|
|
149
|
+
</xsl:call-template>
|
|
150
|
+
</xsl:variable>
|
|
151
|
+
<xsl:value-of select="normalize-space(translate($translated,$uc,$lc))"/>
|
|
152
|
+
</xsl:template>
|
|
153
|
+
|
|
154
|
+
<xsl:template name="_translate-chars">
|
|
155
|
+
<xsl:param name="str"/>
|
|
156
|
+
<xsl:param name="i" select="1"/>
|
|
157
|
+
<xsl:choose>
|
|
158
|
+
<xsl:when test="document('')/*/naco:translate[$i]/@char">
|
|
159
|
+
<xsl:choose>
|
|
160
|
+
<xsl:when test="contains($str,document('')/*/naco:translate[$i]/@char)">
|
|
161
|
+
<xsl:variable name="translated">
|
|
162
|
+
<xsl:call-template name="_translate-char">
|
|
163
|
+
<xsl:with-param name="char" select="document('')/*/naco:translate[$i]/@char"/>
|
|
164
|
+
<xsl:with-param name="replace" select="document('')/*/naco:translate[$i]/text()"/>
|
|
165
|
+
<xsl:with-param name="str" select="$str"/>
|
|
166
|
+
</xsl:call-template>
|
|
167
|
+
</xsl:variable>
|
|
168
|
+
<xsl:call-template name="_translate-chars">
|
|
169
|
+
<xsl:with-param name="str" select="$translated"/>
|
|
170
|
+
<xsl:with-param name="i" select="$i+1"/>
|
|
171
|
+
</xsl:call-template>
|
|
172
|
+
</xsl:when>
|
|
173
|
+
<xsl:otherwise>
|
|
174
|
+
<xsl:choose>
|
|
175
|
+
<xsl:when test="document('')/*/naco:translate[$i+1]/@char">
|
|
176
|
+
<xsl:call-template name="_translate-chars">
|
|
177
|
+
<xsl:with-param name="str" select="$str"/>
|
|
178
|
+
<xsl:with-param name="i" select="$i+1"/>
|
|
179
|
+
</xsl:call-template>
|
|
180
|
+
</xsl:when>
|
|
181
|
+
<xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
|
|
182
|
+
</xsl:choose>
|
|
183
|
+
</xsl:otherwise>
|
|
184
|
+
</xsl:choose>
|
|
185
|
+
</xsl:when>
|
|
186
|
+
<xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
|
|
187
|
+
</xsl:choose>
|
|
188
|
+
</xsl:template>
|
|
189
|
+
|
|
190
|
+
<xsl:template name="_translate-char">
|
|
191
|
+
<xsl:param name="char"/>
|
|
192
|
+
<xsl:param name="replace"/>
|
|
193
|
+
<xsl:param name="str"/>
|
|
194
|
+
<xsl:choose>
|
|
195
|
+
<xsl:when test="contains($str,$char)">
|
|
196
|
+
<xsl:call-template name="_translate-char">
|
|
197
|
+
<xsl:with-param name="char" select="$char"/>
|
|
198
|
+
<xsl:with-param name="str" select="concat(substring-before($str,$char),$replace,substring-after($str,$char))"/>
|
|
199
|
+
</xsl:call-template>
|
|
200
|
+
</xsl:when>
|
|
201
|
+
<xsl:otherwise><xsl:value-of select="$str"/></xsl:otherwise>
|
|
202
|
+
</xsl:choose>
|
|
203
|
+
</xsl:template>
|
|
204
|
+
|
|
205
|
+
</xsl:stylesheet>
|