aboutsummaryrefslogtreecommitdiff
path: root/module/sxml/namespaced/util.scm
blob: 9a4e72d79e7ebf6c467be60512fd92699436247a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(define-module (sxml namespaced util)
  :use-module (sxml namespaced)
  :use-module (srfi srfi-1)
  :use-module ((ice-9 control) :select (call/ec))
  :export (xml-element-hash-key
           find-child
           element-matches?
           root-element
           ))

(define (xml-element-hash-key tag)
  "Returns a value suitable as a key to hash-ref (and family)"
  (cons (xml-element-namespace tag)
        (xml-element-tagname tag)))

(define (find-child target list)
  (define target* (xml-element-hash-key target))
  (find (lambda (x) (and (xml-element? x)
                    (equal? target* (xml-element-hash-key x))))
        list))


(define (element-matches? target-el tree)
  (and (not (null? tree))
       (equal?
        (xml-element-hash-key target-el)
        (xml-element-hash-key (car tree)))))