Back to slide -- Keyboard shortcut: 'u'  next  next  Slide 10 : 18
Program 2

; This is a Scheme program that transform a soccer XML-in-LAML document to
; a simple overview of some soccer games. This Scheme program is similar to an XSLT program.

(lib-load 
 "xml-in-laml/mirrors/xhtml10-transitional-mirror.scm")

(define (results! soccer-ast)
 (let* ((ttl (list "Result of group"
                   (ast-attribute soccer-ast 'group))))
  (write-html '(pp) 
   (html (head (title ttl))
         (body (h1 ttl) (present-matches soccer-ast))))))

(define (present-matches soccer-ast)
 (find-asts soccer-ast "match"
  (lambda (match-ast)
   (let* ((team1 (ast-subtree match-ast 'team 1))
          (team1-score (ast-attribute team1 'score))
          (team2 (ast-subtree match-ast 'team 2))
          (team2-score (ast-attribute team2 'score))
          (dt (ast-subtree match-ast 'date)))
     (list 
      (h2 (ast-text team1) "versus"
          (ast-text team2))
      (p "Played on" (ast-text dt))
      (p "Result:"
         (ast-text team1) team1-score _ ","
         (ast-text team2) team2-score))))))