OAI Jaxen XPath проблема - PullRequest
       14

OAI Jaxen XPath проблема

0 голосов
/ 31 мая 2011

У меня большие проблемы с оценкой Xpath с использованием Jaxen.

Вот часть XML, по которой я оцениваю:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
  <responseDate>2011-05-31T13:04:08+00:00</responseDate>
  <request metadataPrefix="oai_dc" verb="ListRecords">http://citeseerx.ist.psu.edu/oai2</request>
  <ListRecords>
    <record>
      <header>
        <identifier>oai:CiteSeerXPSU:10.1.1.1.1484</identifier>
        <datestamp>2009-05-24</datestamp>
      </header>
      <metadata>
        <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
          <dc:title>Winner-Take-All..</dc:title>
          <dc:relation>10.1.1.134.6077</dc:relation>
          <dc:relation>10.1.1.65.2144</dc:relation>
          <dc:relation>10.1.1.54.7277</dc:relation>
          <dc:relation>10.1.1.48.5282</dc:relation>
        </oai_dc:dc>
      </metadata>
    </record>
    <resumptionToken>10.1.1.1.2041-1547151-500-oai_dc</resumptionToken>
  </ListRecords>
</OAI-PMH>

Я использую Jaxen, потому что в моем случае использованияэто намного быстрее, чем реализация Apache.Я использую W3C DOM для представления XML.

Мне нужно выбрать все аргументы записи, а затем на выбранных узлах оценить другие пути xpath (это необходимо из-за моей архитектуры обработки).

I 'm выбирая все узлы записи (это работает):

/OAI-PMH/ListRecords/record

Затем на каждом выбранном узле записи я оцениваю другие пути xpath для получения необходимых данных:

Выберите значение идентификатора текста (это работает):

header/identifier/text()

Выберите текстовое значение заголовка (это НЕ работает):

metadata/oai_dc:dc/dc:title/text()

Я зарегистрировал префиксы пространств имен с их URI (oai_dc и dc).Я также пробовал другие пути xpath, но ни один из них не работает:

metadata/dc/title/text()
metadata//dc:title/text()

Я читал другие вопросы о стекаповороте относительно путей xpath, пространств имен и решения по добавлению префикса "oai" с URI "http://www.openarchives.org/OAI/2.0/".oai: "префикс к узлам без определенного префикса, но в результате я даже не выбрал узлы записи. Есть идеи, что я делаю неправильно?

Решение: Проблема была в парсере (спасибоjasso). Он не был настроен на распознавание пространства имен - после изменения этого параметра все работает нормально, как и ожидалось.

1 Ответ

1 голос
/ 01 июня 2011

Я не вижу, как выражение XPath /OAI-PMH/ListRecords/record может выбрать что-либо, поскольку в вашем документе нет элемента {}OAI-PMH, только элемент {http://www.openarchives.org/OAI/2.0/}OAI-PMH. Смотри http://jaxen.codehaus.org/faq.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...