Это усеченный пример одной записи в каком-то автоматически сгенерированном XML, с которым мне нужно работать.
<marcrecord>
<marcdatafield tag="245" ind1="0" ind2="0">
<marcsubfield code="a">Argumentation and advocacy :</marcsubfield>
<marcsubfield code="b">the journal of the American Forensic Association.</marcsubfield>
</marcdatafield>
<marcdatafield tag="246" ind1="1" ind2="7">
<marcsubfield code="a">Journal of the American Forensic Association</marcsubfield>
<marcsubfield code="f">summer 1988-spring 1989</marcsubfield>
</marcdatafield>
<marcdatafield tag="246" ind1="3" ind2="">
<marcsubfield code="a">Argumentation & advocacy</marcsubfield>
</marcdatafield>
<marcdatafield tag="260" ind1="" ind2="">
<marcsubfield code="a">[River Falls, WI] :</marcsubfield>
<marcsubfield code="b">The Association,</marcsubfield>
<marcsubfield code="c">[1988-</marcsubfield>
</marcdatafield>
<marcdatafield tag="300" ind1="" ind2="">
<marcsubfield code="a">v. ;</marcsubfield>
<marcsubfield code="c">26 cm.</marcsubfield>
</marcdatafield>
<marcdatafield tag="650" ind1="" ind2="0">
<marcsubfield code="a">Forensics (Public speaking)</marcsubfield>
<marcsubfield code="v">Periodicals.</marcsubfield>
</marcdatafield>
<marcdatafield tag="710" ind1="2" ind2="">
<marcsubfield code="a">American Forensic Association.</marcsubfield>
</marcdatafield>
<marcdatafield tag="780" ind1="0" ind2="0">
<marcsubfield code="a">American Forensic Association.</marcsubfield>
<marcsubfield code="t">Journal of the American Forensic Association</marcsubfield>
<marcsubfield code="x">0002-8533</marcsubfield>
<marcsubfield code="w">(DLC)sf 80000452</marcsubfield>
<marcsubfield code="w">(OCoLC)1479880</marcsubfield>
</marcdatafield>
<marcrecord>
Мне нужно показать данные в поле marcdata, помеченные как 780 (в частности, одно подполе, закодированное t). Определенное подполе 780 для извлечения основано на поиске совпадения в предыдущем подполе поля данных, помеченного как 245 (это заголовок)
Строка поиска заголовка пользователя находится в переменной с названием title, и XPath, представленный ниже, похоже, делает достойную работу по поиску конкретной записи на основе совпадения заголовка.
XPathExpression expr = xpath.compile ("// marcdatafield [marcsubfield = '" + title + "'] / * / text ()");
Но я озадачен тем, как заставить его на самом деле получить соответствующее поле 780, а не только поле заголовка. (FWIW, это использует нативные классы Java XPath, и я буду использовать его в JSP)
Спасибо за любую помощь,
Ceci