この方法でジッパーを使用することは絶対に可能です。選択した任意の方向にジッパーを移動できるからです。例として、必要に応じてノードを変更する機能を備えた、zipper を介した任意の訪問を提供するzip-visit ライブラリを見てください。
ドキュメントから取られた例:
(def s "<div><span id='greeting'>Hello</span> <span id='name'>Mr. Foo</span>!</div>")
(def root (z/xml-zip (xml/parse (java.io.ByteArrayInputStream. (.getBytes s)))))
(defn replace-element [id replacement]
(visitor :pre [n s]
(if (= (:id (:attrs n)) id) {:node replacement})))
user=> (pprint (:node (visit root nil [(replace-element "name" "Mr. Smith")])))
{:tag :div,
:attrs nil,
:content
[{:tag :span, :attrs {:id "greeting"}, :content ["Hello"]}
"Mr. Smith"
"!"]}
もちろん、単純なウォーキングを使用して同様のタスクを実行することもできます。その例は、この SO question on traversing maps にあります。