xml - 在 XQuery 中返回数据($variable)时在各个输出项之间插入空格
问题描述
我已经将一个带有许多不必要<span>
标签等的相当混乱的 HMTL 文档转换为 XML 文件,以便能够读取数据。
HTML 文件包含 100 个带有标准化书目信息的项目。
在 XQuery 中使用以下查询...
for $v in doc("Geburtsbrief1-100.xml")
return data($v)
...我得到每个项目的输出结构如下:
SIGNATUR:G / 1630 M�rz 20Regest:Pforzheim,1630.03.20Geburtsbrieff�rdenMaurerundSteinmetzHansRuckisservonPforzheim.Aussteller:StadtPforzheim.S.derStadt.Datierung:20.03.1630Formalbeschreibung (bei
Urkunden):Ausfertigung.Perg.Provenienz:StadtMainzPersonenindex:Ruckisser, HansOrtsindex:Pforzheim
我正在使用 BaseX 和 XQuery 3.1 版来运行我的查询。
上面结果字符串中“地点”信息的 XML 结构如下所示:
<tr class="ergebniserfassungzeile" id="org3_9_0">
<th id="org3_9_0F" class="fnam" axis="Feldname">
<div class="ergebniserfassungfeldname">Provenienz:</div>
</th>
<td colspan="2" id="org3_9_0I" axis="Feldinhalt" class="tdfinh">
<div id="div3_9" class="ergebniserfassungfeldinhalt"><a class="h"
title="" href="javascript:h('5%20Stadt')">Stadt</a> <a class="h"
title="" href="javascript:h('5%20Mainz')">Mainz</a></div>
</td>
</tr>
所有其他类型的数据(有关人员的信息、文档的重要性、内容等)具有完全相同的表结构,具有完全相同的标签、属性和属性值,例如“Feldinhalt”。这就是为什么我至少需要捕获完整<tr class="ergebniserfassungzeile">
的节点才能理解我得到的结果。
数据方面,完整data($v)
完美,不介意德文特殊字符乱码。但我很想看到所有单词之间的空格。由于实际上每个单词都由<span>
原始 HTML 中的一个标签构成,因此该输出在技术上是正确的。
有没有办法告诉 XQuery在返回每个文档标记中的数据后添加额外的空格?到目前为止,我发现的所有教程都解释了如何删除空格,但我想做相反的事情。
解决方案
您提供的示例数据包含空格,因此只需选择将输出单词之间的空格,例如https://xqueryfiddle.liberty-development.net/gWmuPs7的结果
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method 'text';
.
是
Provenienz:
Stadt Mainz
因此,我认为您可能希望确保 BaseX 在解析期间不会切断空白。
至于一般的问题,如果你有一个像data()
在单个文档节点上调用的单个字符串会给你,那么插入分隔符没有什么魔力。
另一方面,您可以选择到文本节点级别并插入项目分隔符,或者您可以使用字符串连接,例如
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method 'text';
declare option output:item-separator ' ';
//text()
或者
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method 'text';
string-join(//text(), ' ')
推荐阅读
- javascript - setTimeout() 给我错误:超时 { _call: false}
- python - 每次访问主页时如何从 Django 中的视图中获取值
- python-3.x - 如何从 Python 中的非日期时间字符串中剥离时间?
- node.js - GEO IP 服务节点 - 基于 IP 的位置
- verilog - 这个队列有可变大小吗?
- mongoose - Mongoose如何在数组内的对象中插入对象
- prometheus - Prometheus Alertmanager 配置
- vector - 向量计数问题
- java - 在Ubuntu 18.04中通过apt-install安装ant后在哪里可以找到ant的lib目录
- c - 有什么方法可以调用 void 并在同一行返回?