我想在 xml 树上组合三个 zip-filter 查询的结果。我正在解析的 XML 如下所示:
<someroot>
<publication>
<contributors>
<person_name>
<surname>Surname A</surname>
</person_name>
<person_name>
<given_name>Given B</given_name>
<surname>Surname B</surname>
<suffix>Suffix B</suffix>
</person_name>
</contributors>
</publication>
</someroot>
从这个例子中你可以看到<given_name>
并且<suffix>
是可选的——只有<surname>
是必需的。这就是我的问题 - 如果我运行三个单独的查询,我得到的响应将彼此不一致:
(xml-> xml :publication :contributors :person_name :given_name text)
(xml-> xml :publication :contributors :person_name :surname text)
(xml-> xml :publication :contributors :person_name :suffix text)
运行这三个查询后,我将得到三个基数不匹配的序列;given_name
并且suffix
长度为 1 而surname
长度为 2。这使我无法组合每个名称的组成部分。我需要编写一个查询,该查询将在序列构造期间执行此名称连接。
我正在查看非常稀疏的文档,clojure.contrib.zip-filter.xml
并且无法弄清楚我该如何做到这一点(或者甚至可能)。不幸的是,我是 Clojure(和 Lisp)新手!谁能指出我如何编写一个连接其他三个嵌入式查询的查询?