: first-child-tag ( tag -- tag )
children>> [ tag? ] find nip ;
-! * Accessing part of an XML document
-! for tag- words, a start means that it searches all children
-! and no star searches only direct children
-
: tag-named? ( name elem -- ? )
dup tag? [ names-match? ] [ 2drop f ] if ;
tags@ '[ _ swap tag-named? ] deep-filter ;
: tag-named ( tag name/string -- matching-tag )
- ! like get-name-tag but only looks at direct children,
- ! not all the children down the tree.
assure-name swap [ tag-named? ] with find nip ;
: tags-named ( tag name/string -- tags-seq )
: deep-tags-with-attr ( tag attr-value attr-name -- tags-seq )
tags@ '[ _ _ tag-with-attr? ] deep-filter ;
-: get-id ( tag id -- elem ) ! elem=tag.getElementById(id)
+: get-id ( tag id -- elem )
"id" deep-tag-with-attr ;
: deep-tags-named-with-attr ( tag tag-name attr-value attr-name -- tags )