6 use XML::LibXML::Reader;
15 my $content = get('http://www.loc.gov/marc/relators/relacode.html');
17 $content =~ s{^<!DOCTYPE.*?>}{}s;
18 $content =~ s{<head>.+?</head>}{}s;
19 $content =~ s{<table .+?<table }{<table }s;
20 $content =~ s{»}{}gs;
21 $content =~ s{</table>.+?</table>}{</table>}s;
23 my $reader = XML::LibXML::Reader->new(
29 $reader->nextElement('table');
30 $reader->nextElement('tr');
31 while($reader->read) {
35 #print Dumper(\%relator);
40 if ($reader->nodeType == XML_READER_TYPE_ELEMENT && $reader->name eq 'td') {
41 if ($reader->getAttribute('class') && $reader->getAttribute('class') eq 'code') {
47 if ($reader->nodeType == XML_READER_TYPE_TEXT) {
49 $code_v = $reader->value();
51 # Treat deprecated codes as valid
55 $relator{$code_v} = $reader->value();
61 sub generateRelatorMap {
64 # Generated from http://www.loc.gov/marc/relators/relacode.html
65 # using the build/tools/relator_map script
67 print 'relators = {' . "\n";
68 foreach (sort keys %relator) {
69 print " '$_' => l('$relator{$_}'),\n";