使用XPATH检索和提取MARCXML数据

时间:2015-12-22 00:43:59

标签: xml xpath

我在使用XPATH方面遇到了一些麻烦,因为它适用于XML(特别是MARCXML)数据。我在帮助我追踪我正在搜索的代码方面的效率给我留下了深刻的印象,但是我无法进入下一步的提取和解决方案。一旦找到它就使用该代码。

我从MARCXML的图书馆目录中提取了大量的书目记录。我已经整理了一个长查询 - 一个真正的长查询,因为它包含重复的搜索术语来处理XPATH的区分大小写 - 搜索每个条目的某些子字段用于关键字。 MARCXML非常整洁,因此代码如下所示:

<collection>
  <record>
    <leader>01345cad a25003622c 4564</leader>
     <controlfield tag="001">9984333660001531</controlfield>
     <controlfield tag="005">20130789942407.2</controlfield>
     <controlfield tag="008">850333c19861663nybee    db   201 0 eng  </controlfield>
     <datafield tag="010" ind1=" " ind2=" "><subfield code="a">86448866</subfield>
     <datafield tag="500" ind1=" " ind2=" "><subfield code="a">"Published in Great Britain under the title The Grumble and Bolt Encyclopedia [i.e. Encyclopaedia] of 20th-century Archeology"--T.p. verso.</subfield></datafield>
     <datafield tag="504" ind1=" " ind2=" "><subfield code="a">Includes bibliographies and index.</subfield></datafield>
[...]

我正在运行如下所示的XPATH查询:

/collection/record/datafield[@tag='500' or @tag='504']//text()[contains(.,'great') or contains(.,'Great') or contains(.,'contents')

将搜索上述记录,并返回上述条目,因为它们符合我对504字段中包含“Great”的记录的请求。

我正在使用XML Oxygen Developer来运行我的查询,这些查询会对记录进行排序并为我提供匹配的列表。我遇到的问题是氧气中显示的结果: screenshot of Oxygen's results window。我想使用XPATH从我的MARCXML文件中选择数据,但要提取它而不是转换它。如果我从结果窗口保存数据,我可以访问Oracle的“XPATH位置”,“资源ID”,“位置”数据,而不是我原始XML中包含的有用控制字段。

很抱歉这么长的帖子 - 我想问一下是否有人有一些建议。我的第一个想法是使用XQUERY,重新格式化我的XPATH查询,以便它返回或打印我想要的数据(所以'如果'某些字段匹配某些关键字,返回'controlfield tag = 001,“,”controlfield tag = 005“,并且或者使用另一个可以找到匹配并完整导出的XML查看器。任何建议都非常感谢!如果我缺少信息,请告诉我,我可以提供更多。

0 个答案:

没有答案