module Main where import Xml main = processXmlWith (albumf `o` deep (tag "album")) albumf = html [ hhead [ htitle [ txt `o` children `o` tag "artist" `o` children `o` tag "album" , literal ": " , keep /> tag "title" /> txt ] ] , hbody [("bgcolor",("white"!))] [ hcenter [ h1 [ keep /> tag "title" /> txt ] ] , h2 [ ("Notes"!) ] , hpara [ notesf `o` (keep /> tag "notes") ] , summaryf ] ] notesf = foldXml (txt ?> keep :> tag "trackref" ?> replaceTag "EM" :> tag "albumref" ?> mkLink :> children) summaryf = htable [("BORDER",("1"!))] [ hrow [ hcol [ ("Album title"!) ] , hcol [ keep /> tag "title" /> txt ] ] , hrow [ hcol [ ("Artist"!) ] , hcol [ keep /> tag "artist" /> txt ] ] , hrow [ hcol [ ("Recording date"!) ] , hcol [ keep /> tag "recordingdate" /> txt ] ] , hrow [ hcola [ ("VALIGN",("top"!)) ] [ ("Catalog numbers"!) ] , hcol [ hlist [ catno `oo` numbered (deep (tag "catalogno")) ] ] ] ] catno n = mkElem "LI" [ ((show n++". ")!), ("label"?), ("number"?) , (" ("!), ("format"?), (")"!) ] mkLink = mkElemAttr "A" [ ("HREF",("link"?)) ] [ children ]