text-xml-qq-0.1: Quasiquoter for xml. XML DSL in Haskell.

Text.XML.QQ

Description

The XML quasiquoter.

Given the variables

  url = "google.se"
  elem = "gmail"
  attrNs = "something"
  attrName = "Pelle"
  attrValue = "Arne"
  elemCont = CRef "testing"
  cont1 = Elem $ element { elName = qname "hej" }
  cont2 = CRef "other test"

the code

   [$xmlQQ|
   <{url}:{elem} {attrNs}:{attrName}={attrValue} attr="cool">
     <elem ns1:elem1="1" ns2:elem2="2"><<elemCont>></elem>
     <elem />
     <el />
     <<cont1>>
     <<cont2>>
   </{url}:{elem}>
   |]

will generate the data structure

   element {
     elName = QName elem Nothing (Just url),
     elAttribs = [Attr (QName attrName Nothing (Just attrNs)) attrValue,
                  Attr (qname "attr") "cool"],
     elContent = [
       (Elem $ element { elName = qname "elem",
                         elAttribs = [Attr (QName "elem1" Nothing (Just "ns1")) "1",
                                      Attr (QName "elem2" Nothing (Just "ns2")) "2"],
                         elContent = [elemCont]
                        }),
        (Elem $ element { elName = qname "elem" }),
        (Elem $ element { elName = qname "el" }),
        cont1,
        cont2]
   }

Documentation