问题标签 [marc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
256 浏览

xml - xsl 从另一个节点树中获取元素值

我有以下 XML:

从 datafield tag=550 和子节点子字段代码 a 开始,我想在 datafield tag 151 子字段代码 a 的基础上添加 controlfield tag 001 的值。在这种情况下,它是“2”。在某些情况下,要匹配的数据字段标记也可以是 150。节点树上的节点更多,但基本上如下所示:

所以我仍然想保持 xml 就像刚刚添加了我想要得到的值,如下所示:

这甚至可以用 XSLT 实现吗?有人可以带我阅读我需要阅读的内容吗?我在想“钥匙”,但可能还有另一个。提前致谢!

更新:我有以下模板,我添加了 Abel 的代码:

0 投票
2 回答
453 浏览

xml - xslt 使用键和变量

嗨,所有这些问题都与此有关:xsl get element values from another node tree但是这次我有一个工作 xslt。

我目前正在处理以下 xml:

我有以下 xslt:

有了这个,我通过键(术语)创建了所有 151 个索引。我还创建了一个变量“t550a”。通过keys函数,我将550a标签(datafield tag="550" subfield code="a")与term key匹配。然后获取该键的控制字段标记 001 的值。我还想获取我的 xml 的所有节点,因此是“xsl:copy”。使用我拥有的 xslt,似乎正在删除数据字段标签 151。

我想在 550 领域获得以下信息:

因此,东南亚的 550 子字段将具有附加的子字段 0,其值为 2,该子字段基于 151 子字段 a 的东南亚的控制字段 001。此外,婆罗洲的 550 个子字段将具有附加的子字段 0,其值为 1,它基于婆罗洲 151 个子字段的控制字段 001。

有人可以引导我正确地做到这一点。谢谢!

0 投票
1 回答
268 浏览

python - 使用 pymarc marc8_to_unicode 的 Python 字符串比较不再起作用

我的代码使用 MARCReader 导入 MARC 文件,并将字符串与可接受答案列表进行比较。如果来自 MARC 的字符串在我的列表中没有匹配项,它将被添加到错误列表中。这在 Windows 7 上的 Python 2.7.4 安装中已经工作了多年,没有任何问题。我最近买了一台 Windows 10 机器并安装了 Python 2.7.10,现在带有非标准字符的字符串无法匹配。问题不仅仅在于 Python 2.7.10;我已经在这台新机器上安装了从 2.7.4 到 2.7.10 的每个版本,并且遇到了同样的问题。在 Windows 7 机器上新安装的 Python 2.7.10 也会出现问题。

我已经删除了不相关的功能,并且我已经大幅删除了主列表。在此示例中,“Académie des Sciences”是一个现有存储库,但“Acadm̌ie des Sciences”现在出现在我们的新存储库列表中。

编辑:我发现只需注释掉“reposname = marc8_to_unicode(reposname)”行就能得到我想要的结果。我仍然不明白为什么会这样,因为这是之前的必要步骤。

0 投票
1 回答
1668 浏览

mysql - MySQL 更新 XML 节点值

这与此MySQL 更新 XML 属性有些相关,但这次我想更新节点值。我在 marcxml 列中有以下 XMLfragment:

我想更新控制字段值标签 001 使其成为基于查询的数字。所以像这样:

我最初有以下mysql查询:

该表是 auth_header 并且它具有 authid 作为主键(但我想这无关紧要)并且它具有存储 xml 的 marcxml 列。查询给了我“0 行受影响”。所以它似乎不起作用。

在此先感谢和欢呼!

0 投票
1 回答
122 浏览

python - python: how to create list of/iterate through multiple instances of a variable

I am working with the pymarc library. My question is, how to I deal with multiple instances of a variable, either building a list, or otherwise iterating through them?

A MARC field can be accessed by adding the field number to the record variable. For instance, I have three instances of an 856 field in one record, which can be accessed as record['856']. But only the first instance is passed.

assigning a variable record['856'][0] or record['856'][1] etc, doesn't work.

I have tried creating a list, which is shown below, but that didn't work

I know how I would do this in php, but I'm not getting my head around python syntax to even search the web for the right thing.

0 投票
1 回答
81 浏览

java - 问题拆分 marc21 记录

我在拆分 marc21 格式文件的记录时遇到问题。我正在从一个文件中读取并尝试将记录分成单独的行,然后写入另一个文件。这是我目前拥有的:

这是我得到的输出和错误:

它将第一条记录和第二条记录写入文件,但是第三个循环没有正确读取长度。有谁知道为什么会这样?

0 投票
2 回答
113 浏览

php - 如何在PHP中的字符串中获取所有美元歌曲及其后面的文本

一个 marc 21 标签可能包含带有几个美元符号 $ 的行,例如:

我试图匹配所有的美元歌曲并在每次唱歌后获取文本,我的代码是:

输出是:

如何在每次唱歌后捕获文本,因此输出将是:

0 投票
1 回答
28 浏览

xml - XSL 对子字符串进行排序,其中属性中的值告诉从哪里开始子字符串

我有这个非常简单的 XML 文件,其中包含我必须按字母顺序排序的书名,其中排序应该不带定冠词或不定冠词,即你不能接受 a、an、der、das、die、 la, le, les, de, den, det....(等等)在排序时考虑。

因此,理想的排序顺序是: 先进教学方法 -人工制品、技能和知识的文化传播 -机场的一天 - 动态的中世纪-数学、科学和技术的共同促进 - Das K apital - Den v etenskapliga 革命 - X ML for dummy

排序时要跳过多少个字符由属性 ind 中的第二个数字表示:如果 ind='00' 或 ind='10'

如果 ind='01' 或 ind='11'

依此类推,直到 If ind='09' 或 ind='19'

更复杂的是:属性 ind 可以与其他标签和标签一起出现;如果是这样,则 ind 与排序无关。

我完全不知道从哪里开始

0 投票
1 回答
78 浏览

xml - XSL Muenchian 分组有效,但是如何计算密钥的所有子节点的内容?

场景是这样的:一个图书馆有五本书。作者 A 写了一本书,图书馆拥有两本已签出 30+14=44 次 作者 B 写了两本书,图书馆拥有两本已签出 B 的本 18+9=27次和一份已签出 41 次的标题 C。

我的 XML 如下所示:

我尝试了 Muenchian 分组——它为作者 A 提供了正确的数字,但对于作者 B,它只计算了第一个标题的项目和费用,两个项目有 27 个收费,而不是正确的数字 3 个项目有 68 个收费。我应该添加什么来计算拥有多个标题的作者的所有费用?

0 投票
2 回答
93 浏览

regex - 如何使用正则表达式解析 MARC 记录?

我想用正则表达式解析 MARC 记录,并将字段作为第一个捕获的组返回,将值作为第二个捕获的组返回。到目前为止,这是我对正则表达式的了解:

那里的最后一个捕获组([^\n]*)捕获所有内容,直到下一个换行符,这对以下行非常有用:

但是,当涉及突破线的值时,正则表达式不再起作用:

下一个停止区域应该是650上面的。因此,正则表达式应该捕获所有内容,直到换行符后跟 3 个数字

我确实尝试([^\n0-9]*)过,但这被解释为匹配除数字或任何顺序的换行符以外的任何内容。我需要它来匹配一个换行符和 3 个数字在那个确切的序列中