由:bpeter发表的评论
我发现了一个“解决方案”,如下所示,也在(link: ^zip-xml-bug-descent.tgz)中。
`
(defn descent=
[tagname]
(fn [loc]
(filter #(and (zip/branch? %) (= tagname (:tag (zip/node %))))
(testing "使用descend选择内部名称"
(is (= "Inner"
(-> (zip-xml/xml1-> root :Root :Group (descent= :Group) :Name zip-xml/text)))))
`
在我看来,这是{{tag=}}匹配的元素自身在{{or}}表达式中的第一个表达式的问题。我怀疑这可以用来选择根元素。它是必需的吗?
`
(defn tag=
[tagname]
(fn [loc]
(or (= tagname (:tag (zip/node loc)))
(filter #(and (zip/branch? %) (= tagname (:tag (zip/node %))))
(zf/children-auto loc)))))
`
也许应该有一个{{self}}谓词呢?