--- /dev/null
+#include <bindings.dsl.h>
+#include <apr_xml.h>
+
+module Bindings.APR.XML where
+#strict_import
+import Bindings.APR
+import Bindings.APR.ErrNo
+import Bindings.APR.File.Types
+import Bindings.APR.Pools
+import Bindings.APR.Tables
+import Bindings.APR.XLate
+
+#starttype struct apr_text
+# field text, Ptr CChar
+# field next, Ptr <apr_text>
+#stoptype
+
+#starttype struct apr_text_header
+# field first, Ptr <apr_text>
+# field last , Ptr <apr_text>
+#stoptype
+
+#ccall apr_text_append, Ptr <apr_pool_t> -> Ptr <apr_text_header> -> Ptr CChar -> IO ()
+
+#num APR_XML_NS_DAV_ID
+#num APR_XML_NS_NONE
+
+#num APR_XML_NS_ERROR_BASE
+#cinline APR_XML_NS_IS_ERROR, CInt -> IO CInt
+
+#starttype struct apr_xml_attr
+# field name , Ptr CChar
+# field ns , CInt
+# field value, Ptr CChar
+# field next , Ptr <apr_xml_attr>
+#stoptype
+
+#opaque_t apr_xml_ns_scope
+
+#starttype struct apr_xml_elem
+# field name, Ptr CChar
+# field ns , CInt
+# field lang, Ptr CChar
+
+# field first_cdata , <apr_text_header>
+# field following_cdata, <apr_text_header>
+
+# field parent , Ptr <apr_xml_elem>
+# field next , Ptr <apr_xml_elem>
+# field first_child, Ptr <apr_xml_elem>
+# field attr , Ptr <apr_xml_elem>
+
+# field last_child , Ptr <apr_xml_elem>
+# field ns_scope , Ptr <apr_xml_ns_scope>
+
+# field priv, Ptr ()
+#stoptype
+
+#cinline APR_XML_ELEM_IS_EMPTY, Ptr <apr_xml_elem> -> IO CInt
+
+#starttype struct apr_xml_doc
+# field root , Ptr <apr_xml_elem>
+# field namespaces, Ptr <apr_array_header_t>
+#stoptype
+
+#opaque_t apr_xml_parser
+
+#ccall apr_xml_parser_create , Ptr <apr_pool_t> -> IO (Ptr <apr_xml_parser>)
+#ccall apr_xml_parse_file , Ptr <apr_pool_t> -> Ptr (Ptr <apr_xml_parser>) -> Ptr (Ptr <apr_xml_doc>) -> Ptr <apr_file_t> -> <apr_size_t> -> IO <apr_status_t>
+#ccall apr_xml_parser_feed , Ptr <apr_xml_parser> -> Ptr CChar -> <apr_size_t> -> IO <apr_status_t>
+#ccall apr_xml_parser_done , Ptr <apr_xml_parser> -> Ptr (Ptr <apr_xml_doc>) -> IO <apr_status_t>
+#ccall apr_xml_parser_geterror, Ptr <apr_xml_parser> -> Ptr CChar -> <apr_size_t> -> IO (Ptr CChar)
+
+#ccall apr_xml_to_text, Ptr <apr_pool_t> -> Ptr <apr_xml_elem> -> CInt -> Ptr <apr_array_header_t> -> Ptr CInt -> Ptr (Ptr CChar) -> Ptr <apr_size_t> -> IO ()
+
+#num APR_XML_X2T_FULL
+#num APR_XML_X2T_INNER
+#num APR_XML_X2T_LANG_INNER
+#num APR_XML_X2T_FULL_NS_LANG
+
+#ccall apr_xml_empty_elem , Ptr <apr_pool_t> -> Ptr <apr_xml_elem> -> IO (Ptr CChar)
+#ccall apr_xml_quote_string, Ptr <apr_pool_t> -> Ptr CChar -> CInt -> IO (Ptr CChar)
+#ccall apr_xml_quote_elem , Ptr <apr_pool_t> -> Ptr <apr_xml_elem> -> IO ()
+#ccall apr_xml_insert_uri , Ptr <apr_array_header_t> -> Ptr CChar -> IO CInt
+
+#cinline APR_XML_GET_URI_ITEM, Ptr <apr_array_header_t> -> CInt -> IO (Ptr CChar)
+
+#if APR_CHARSET_EBCDIC
+# ccall apr_xml_parser_convert_doc, Ptr <apr_pool_t> -> Ptr <apr_xml_doc> -> Ptr <apr_xlate_t> -> IO <apr_status_t>
+#endif