この質問では、質問者は次のようにドキュメントを変換したいと考えています。
<text>
The capitals of Bolivia are <blank/> and <blank/>.
</text>
これに:
<text>
The capitals of Bolivia are <input name="blank.1"> and <input name="blank.2">.
</text>
そこでの回答で指摘したように、Anti-XMLのジッパーはこの問題に対する明確な解決策を提供します。たとえば、空白要素の名前を変更するには、次のようにします。
import com.codecommit.antixml._
val q = <text>The capitals of Bolivia are <blank/> and <blank/>.</text>.convert
(q \\ "blank").map(_.copy(name = "input")).unselect
残念ながら、以下は機能しません。
(q \\ "blank").zipWithIndex.map { case (el, i) => el.copy(
name = "input",
attrs = Attributes("name" -> "blank.%d".format(i + 1))
)}.unselect
もちろん、いったんzipWithIndex
ジッパーを -ed すると、もはやジッパーはありません。定義が でIndexedSeq
あるため、 - を持つことはできません。Zipper[(Node, Int)]
trait Zipper[+A <: Node] ...
アンチ XML ジッパーを使用するクリーンな方法はありますzip
か?zipWithIndex
map