USING: kernel xml sequences assocs tools.test io arrays namespaces xml.data xml.utilities xml.writer generic sequences.deep ; IN: xml.tests : sub-tag T{ name f f "sub" "http://littledan.onigirihouse.com/namespaces/replace" } ; SYMBOL: ref-table GENERIC: (r-ref) ( xml -- ) M: tag (r-ref) sub-tag over at* [ ref-table get at swap set-tag-children ] [ 2drop ] if ; M: object (r-ref) drop ; : template ( xml -- ) [ (r-ref) ] deep-each ; ! Example : sample-doc { "" "" "" "
" "

paragraph

" "" } concat ; : test-refs ( -- string ) [ H{ { "foo" { "foo" } } { "bar" { "blah" T{ tag T{ name f "" "a" "" } V{ } f } } } { "baz" f } } ref-table set sample-doc string>xml dup template xml>string ] with-scope ; [ "foo
blah

" ] [ test-refs ] unit-test