Skip to content

Commit 0573214

Browse files
committed
fix: updated list of allowed values for the OPF 2.0.1 role attribute
Updated the hard-coded list with latest values from https://www.loc.gov/marc/relators/relacode.html Fix #1521
1 parent 49aacb2 commit 0573214

File tree

3 files changed

+296
-18
lines changed

3 files changed

+296
-18
lines changed

src/main/java/com/adobe/epubcheck/opf/OPFHandler.java

Lines changed: 275 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252

5353
public class OPFHandler extends XMLHandler
5454
{
55-
55+
5656
protected static final String TEXT = "text";
5757

5858
protected String pageMapId = null;
@@ -95,23 +95,280 @@ public class OPFHandler extends XMLHandler
9595

9696
static
9797
{
98-
String[] list = { "acp", "act", "adp", "aft", "anl", "anm", "ann", "ant", "app", "aqt", "arc",
99-
"ard", "arr", "art", "asg", "asn", "att", "auc", "aud", "aui", "aus", "aut", "bdd", "bjd",
100-
"bkd", "bkp", "bnd", "bpd", "bsl", "ccp", "chr", "clb", "cli", "cll", "clr", "clt", "cmm",
101-
"cmp", "cmt", "cng", "cnd", "cns", "coe", "col", "com", "cos", "cot", "cov", "cpc", "cpe",
102-
"cph", "cpl", "cpt", "cre", "crp", "crr", "csl", "csp", "cst", "ctb", "cte", "ctg", "ctr",
103-
"cts", "ctt", "cur", "cwt", "dfd", "dfe", "dft", "dgg", "dis", "dln", "dnc", "dnr", "dpc",
104-
"dpt", "drm", "drt", "dsr", "dst", "dtc", "dte", "dtm", "dto", "dub", "edt", "egr", "elg",
105-
"elt", "eng", "etr", "exp", "fac", "fld", "flm", "fmo", "fpy", "fnd", "frg", "gis", "grt",
106-
"hnr", "hst", "ill", "ilu", "ins", "inv", "itr", "ive", "ivr", "lbr", "lbt", "ldr", "led",
107-
"lee", "lel", "len", "let", "lgd", "lie", "lil", "lit", "lsa", "lse", "lso", "ltg", "lyr",
108-
"mcp", "mfr", "mdc", "mod", "mon", "mrk", "msd", "mte", "mus", "nrt", "opn", "org", "orm",
109-
"oth", "own", "pat", "pbd", "pbl", "pdr", "pfr", "pht", "plt", "pma", "pmn", "pop", "ppm",
110-
"ppt", "prc", "prd", "prf", "prg", "prm", "pro", "prt", "pta", "pte", "ptf", "pth", "ptt",
111-
"rbr", "rce", "rcp", "red", "ren", "res", "rev", "rps", "rpt", "rpy", "rse", "rsg", "rsp",
112-
"rst", "rth", "rtm", "sad", "sce", "scl", "scr", "sds", "sec", "sgn", "sht", "sng", "spk",
113-
"spn", "spy", "srv", "std", "stl", "stm", "stn", "str", "tcd", "tch", "ths", "trc", "trl",
114-
"tyd", "tyg", "vdg", "voc", "wam", "wdc", "wde", "wit" };
98+
String[] list = {
99+
"abr",
100+
"acp",
101+
"act",
102+
"adi",
103+
"adp",
104+
"aft",
105+
"anl",
106+
"anm",
107+
"ann",
108+
"ant",
109+
"ape",
110+
"apl",
111+
"app",
112+
"aqt",
113+
"arc",
114+
"ard",
115+
"arr",
116+
"art",
117+
"asg",
118+
"asn",
119+
"ato",
120+
"att",
121+
"auc",
122+
"aud",
123+
"aui",
124+
"aus",
125+
"aut",
126+
"bdd",
127+
"bjd",
128+
"bkd",
129+
"bkp",
130+
"blw",
131+
"bnd",
132+
"bpd",
133+
"brd",
134+
"brl",
135+
"bsl",
136+
"cas",
137+
"ccp",
138+
"chr",
139+
"clb",
140+
"cli",
141+
"cll",
142+
"clr",
143+
"clt",
144+
"cmm",
145+
"cmp",
146+
"cmt",
147+
"cnd",
148+
"cng",
149+
"cns",
150+
"coe",
151+
"col",
152+
"com",
153+
"con",
154+
"cor",
155+
"cos",
156+
"cot",
157+
"cou",
158+
"cov",
159+
"cpc",
160+
"cpe",
161+
"cph",
162+
"cpl",
163+
"cpt",
164+
"cre",
165+
"crp",
166+
"crr",
167+
"crt",
168+
"csl",
169+
"csp",
170+
"cst",
171+
"ctb",
172+
"cte",
173+
"ctg",
174+
"ctr",
175+
"cts",
176+
"ctt",
177+
"cur",
178+
"cwt",
179+
"dbp",
180+
"dfd",
181+
"dfe",
182+
"dft",
183+
"dgc",
184+
"dgg",
185+
"dgs",
186+
"dis",
187+
"dln",
188+
"dnc",
189+
"dnr",
190+
"dpc",
191+
"dpt",
192+
"drm",
193+
"drt",
194+
"dsr",
195+
"dst",
196+
"dtc",
197+
"dte",
198+
"dtm",
199+
"dto",
200+
"dub",
201+
"edc",
202+
"edm",
203+
"edt",
204+
"egr",
205+
"elg",
206+
"elt",
207+
"eng",
208+
"enj",
209+
"etr",
210+
"evp",
211+
"exp",
212+
"fac",
213+
"fds",
214+
"fld",
215+
"flm",
216+
"fmd",
217+
"fmk",
218+
"fmo",
219+
"fmp",
220+
"fnd",
221+
"fpy",
222+
"frg",
223+
"gis",
224+
"grt",
225+
"his",
226+
"hnr",
227+
"hst",
228+
"ill",
229+
"ilu",
230+
"ins",
231+
"inv",
232+
"isb",
233+
"itr",
234+
"ive",
235+
"ivr",
236+
"jud",
237+
"jug",
238+
"lbr",
239+
"lbt",
240+
"ldr",
241+
"led",
242+
"lee",
243+
"lel",
244+
"len",
245+
"let",
246+
"lgd",
247+
"lie",
248+
"lil",
249+
"lit",
250+
"lsa",
251+
"lse",
252+
"lso",
253+
"ltg",
254+
"lyr",
255+
"mcp",
256+
"mdc",
257+
"med",
258+
"mfp",
259+
"mfr",
260+
"mod",
261+
"mon",
262+
"mrb",
263+
"mrk",
264+
"msd",
265+
"mte",
266+
"mtk",
267+
"mus",
268+
"nrt",
269+
"opn",
270+
"org",
271+
"orm",
272+
"osp",
273+
"oth",
274+
"own",
275+
"pad",
276+
"pan",
277+
"pat",
278+
"pbd",
279+
"pbl",
280+
"pdr",
281+
"pfr",
282+
"pht",
283+
"plt",
284+
"pma",
285+
"pmn",
286+
"pop",
287+
"ppm",
288+
"ppt",
289+
"pra",
290+
"prc",
291+
"prd",
292+
"pre",
293+
"prf",
294+
"prg",
295+
"prm",
296+
"prn",
297+
"pro",
298+
"prp",
299+
"prs",
300+
"prt",
301+
"prv",
302+
"pta",
303+
"pte",
304+
"ptf",
305+
"pth",
306+
"ptt",
307+
"pup",
308+
"rbr",
309+
"rcd",
310+
"rce",
311+
"rcp",
312+
"rdd",
313+
"red",
314+
"ren",
315+
"res",
316+
"rev",
317+
"rpc",
318+
"rps",
319+
"rpt",
320+
"rpy",
321+
"rse",
322+
"rsg",
323+
"rsp",
324+
"rsr",
325+
"rst",
326+
"rth",
327+
"rtm",
328+
"sad",
329+
"sce",
330+
"scl",
331+
"scr",
332+
"sds",
333+
"sec",
334+
"sgd",
335+
"sgn",
336+
"sht",
337+
"sll",
338+
"sng",
339+
"spk",
340+
"spn",
341+
"spy",
342+
"srv",
343+
"std",
344+
"stg",
345+
"stl",
346+
"stm",
347+
"stn",
348+
"str",
349+
"tcd",
350+
"tch",
351+
"ths",
352+
"tld",
353+
"tlp",
354+
"trc",
355+
"trl",
356+
"tyd",
357+
"tyg",
358+
"uvp",
359+
"vac",
360+
"vdg",
361+
"voc",
362+
"wac",
363+
"wal",
364+
"wam",
365+
"wat",
366+
"wdc",
367+
"wde",
368+
"win",
369+
"wit",
370+
"wpr",
371+
"wst" };
115372
Collections.addAll(validRoles, list);
116373
}
117374

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<package xmlns="http://www.idpf.org/2007/opf" version="2.0" unique-identifier="uid">
3+
<metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:epub="http://www.idpf.org/2007/opf">
4+
<dc:title id="title">Minimal EPUB 2.0</dc:title>
5+
<dc:language>en</dc:language>
6+
<dc:identifier id="uid">NOID</dc:identifier>
7+
<dc:creator id="creator" epub:role="edc">Jane Doe</dc:creator>
8+
</metadata>
9+
<manifest>
10+
<item id="c001" href="content_001.xhtml" media-type="application/xhtml+xml"/>
11+
<item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml"/>
12+
</manifest>
13+
<spine toc="ncx">
14+
<itemref idref="c001"/>
15+
</spine>
16+
</package>

src/test/resources/epub2/opf-package-document.feature

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ Feature: EPUB 2 ▸ Open Packaging Format ▸ Package Document Checks
8989
When checking EPUB 'metadata-creator-role-unknown-error.opf'
9090
Then error OPF-052 is reported
9191
And no other errors or warnings are reported
92+
93+
Scenario: Accet a 'dc:creator' metadata with an 'edc' role
94+
See https://github.com/w3c/epubcheck/issues/1521
95+
When checking EPUB 'metadata-creator-role-edc-valid.opf'
96+
And no errors or warnings are reported
9297

9398
Scenario: an identifier starting with "urn:uuid:" should be a valid UUID
9499
When checking EPUB 'metadata-identifier-uuid-as-urn-invalid-warning.opf'

0 commit comments

Comments
 (0)