-- parse create element (return a singleton list)
parseCreate :: (ArrowXml a) => a XmlTree TCreate
parseCreate =
    (parseMaybeAttr "file") &&& ((getChildren >>> isElem >>>
        ((hasName "select" >>> parseSelect >>^ CreateSelect)
        <+>
        (hasName "apply-template" >>> parseApplyTemplate >>^ CreateApplyTpl))) >. id)
    >>^
    (\(x,y) -> Create {cfile=x, citems=y})
parseCreate :: (ArrowXml a) => a XmlTree TCreate
parseCreate =
    (parseMaybeAttr "file") &&& ((getChildren >>> isElem >>>
        ((hasName "select" >>> parseSelect >>^ CreateSelect)
        <+>
        (hasName "apply-template" >>> parseApplyTemplate >>^ CreateApplyTpl))) >. id)
    >>^
    (\(x,y) -> Create {cfile=x, citems=y})
parseCreate =
    (parseMaybeAttr "file") &&& ((getChildren >>> isElem >>>
        ((hasName "select" >>> parseSelect >>^ CreateSelect)
        <+>
        (hasName "apply-template" >>> parseApplyTemplate >>^ CreateApplyTpl))) >. id)
    >>^
    (\(x,y) -> Create {cfile=x, citems=y})