4Lenses and traversals for [xml-conduit](http://hackage.haskell.org/package/xml-conduit).
10> doc <- Text.XML.readFile def "examples/books.xml"
12> doc ^.. root . named "books" ... named "book" . attributeIs "category" "Textbooks" ... named "title" . text
13["Learn You a Haskell for Great Good!","Programming in Haskell","Real World Haskell"]
15> lengthOf ?? doc $ root . named "books" ... named "book"
18> doc ^? root . named "books" ... attributeIs "category" "Joke" ... named "title" . text
19Just "Functional Ikamusume"
21> doc & root . named "books" ... named "book" ... named "pages" . text <>~ " pages" & renderLBS def & BL.putStrLn
25<?xml version="1.0" encoding="ISO-8859-1"?>
27<book category="Language and library definition">
28 <title>Haskell 98 language and libraries: the Revised Report</title>
29 <author year="2003">Simon Peyton Jones</author>
30 <pages>272 pages</pages>
33<book category="Textbooks">
34 <title>Learn You a Haskell for Great Good!</title>
35 <author year="2011">Miran Lipovaca</author>
36 <pages>360 pages</pages>
38<book category="Textbooks">
39 <title>Programming in Haskell</title>
40 <author year="2007">Graham Hutton</author>
41 <pages>200 pages</pages>
49* Use [cosmos](http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-Plated.html) to traverse over all children
50* You can do or-composition of traversals with [failing](http://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-Traversal.html#v:failing)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list