[% subjects = [ { 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"]' } ]; FOREACH subj IN subjects; ''; content = PROCESS render_subject(xpath=subj.xpath); IF content.match('\S') %] [% END; END; %]
[% l('Subject:') %] [% BLOCK render_subject; loc = CGI.param('loc') | uri; xpath = xpath || '//*[starts-with(@tag,"6")]'; FOR node IN ctx.marc_xml.findnodes(xpath); all_terms = []; FOR subfield IN node.childNodes; NEXT UNLESS subfield.nodeName == "subfield"; code = 0; FOR a IN subfield.attributes; IF a.nodeName == "code"; code = a.nodeValue; END; 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); total_term = all_terms.join(" ").replace('\s+$', '') ; # XXX need to take care of any &'s, right? '' _ single_term _ ''; END; "
"; END %] [% END %] [% s = PROCESS render_subject; IF s.match('\S'); s; END; %]
[% subj.label %]
[% content %]