[%
subjects = [
{
label => l('Subject: '),
xpath => '//*[@tag="600" or @tag="610" or @tag="611" or @tag="630" or @tag="650" or @tag="651"]'
}, {
label => l('Genre: '),
xpath => '//*[@tag="655"]|//*[@tag="659"]'
}, {
label => l('Topic Heading: '),
xpath => '//*[@tag="690"]'
}, {
label => l('Geographic Setting: '),
xpath => '//*[@tag="691"]'
}, {
label => l('Biographical Subject: '),
xpath => '//*[@tag="692"]'
}, {
label => l('Character Attributes: '),
xpath => '//*[@tag="693"]'
}, {
label => l('Setting: '),
xpath => '//*[@tag="698"]'
}, {
label => l('Time Period: '),
xpath => '//*[@tag="699"]'
}
];
BLOCK render_subject;
xpath = xpath || '//*[starts-with(@tag,"6")]';
FOR node IN ctx.marc_xml.findnodes(xpath);
all_terms = [];
graphics = [];
FOR subfield IN node.childNodes;
NEXT UNLESS subfield.nodeName == "subfield";
code = subfield.getAttribute('code');
IF code == '6';
linked_fields = [subfield.textContent()];
target_field = node.getAttribute('tag');
get_linked_880s;
END;
NEXT UNLESS code.match('[a-z]');
IF code.match('[vxyz]'); " > "; END;
# at this point, we actually have a partial term to use.
single_term = subfield.textContent | html;
all_terms.push(subfield.textContent.replace('\-', ' ').replace('[#"^$\+,\.:;&|\[\]()]', ''));
total_term = all_terms.join(" ").replace('\s+$', '');
%]
[% single_term %]
[%- END;
IF all_terms.size; "
"; END;
FOREACH link880 IN graphics;
'
[% subj.label %] | [% content %] |