module Main.Queries where
import BasePrelude
import XMLQuery
import qualified Data.Text as Text
query1 :: Element (Text.Text, Text.Text, [Text.Text])
query1 =
elementNameIs "response" *>
elementNodes (nodesEventualNode (nodeElement element))
where
element =
elementNameIs "result" *>
elementNodes (nodesEventualNode (nodeElement element))
where
element =
elementNameIs "doc" *>
((,,) <$> author <*> isbn <*> mainCatalogueArea)
where
author =
elementNodes (nodesEventualNode (nodeElement element))
where
element =
elementAttr attr *>
elementNodes nodes
where
attr =
attrNameIs "name" *>
attrValueIs "author"
nodes =
nodesEventualNode (nodeElement (elementNodes (nodesEventualNode (nodeText textValue))))
isbn =
elementNodes (nodesEventualNode (nodeElement element))
where
element =
elementAttr attr *>
elementNodes (nodesEventualNode (nodeText textValue))
where
attr =
attrNameIs "name" *>
attrValueIs "isbn"
mainCatalogueArea =
elementNodes (nodesEventualNode (nodeElement element))
where
element =
elementAttr attr *>
elementNodes (many (nodesEventualNode (nodeElement (elementNodes (nodesEventualNode (nodeText textValue))))))
where
attr =
attrNameIs "name" *>
attrValueIs "main_catalog_area"