を使用して、指定されたツリー内で最初に成功した変換(深さ優先)の後に停止するHTML処理矢印を作成しようとしています。私。 HTML文書内の非常に最初のリスト項目に「最初の」クラスを追加するには例えばタイプHXT:最初に変換が成功した後に処理を停止する方法はありますか?
processFirst :: (ArrowTree a, Tree t) => a (t b) (t b) -> a (t b) (t b)
と機能、1が矢印
processFirst (hasName "li" `guards` addAttr "class" "first")
を構築することができ、私はむしろ新たなんですHXTと私は今数時間、APIドキュメントを読んでいて、processFirst
を実装する方法を理解しようとしていますが、すべての部分を合わせることができませんでした。 processTopDownUntil
は当初は有望であったが、その関数は特定のサブツリーの処理を止めるだけなので、ネストしたものを除くすべての要素を変換する。
test = flip runLA undefined $ xshow $
constA "<xml><x>X1</x><x>X2</x></xml>" >>> xread
>>> processFirst (hasName "x" `guards` addAttr "class" "first")
processFirst f = f `orElse` processChildren (processFirst f)
processFirst
の定義は、の定義と同じである: