    /**
     * This class simulates XML-based requests.
     */
    Ext.define('Ext.ux.ajax.XmlSimlet', {
        extend: 'Ext.ux.ajax.DataSimlet',
        alias: 'simlet.xml',

        /**
         * This template is used to populate the XML response. The configuration of the Reader
         * is available so that its `root` and `record` properties can be used as well as the
         * `fields` of the associated `model`. But beyond that, the way these pieces are put
         * together in the document requires the flexibility of a template.
         */
        xmlTpl: [
            '<{root}>\n',
                '<tpl for="data">',
            '    <{parent.record}>\n',
                    '<tpl for="parent.fields">',
            '        <{name}>{[parent[values.name]]}</{name}>\n',
                    '</tpl>',
            '    </{parent.record}>\n',
                '</tpl>',
            '</{root}>'
        ],

        doGet: function (ctx) {
            var me = this,
                data = me.getData(ctx),
                page = me.getPage(ctx, data),
                reader = ctx.xhr.options.proxy.reader,
                ret = me.callParent(arguments), // pick up status/statusText
                response = {
                    data: page,
                    reader: reader,
                    fields: reader.model.getFields(),
                    root: reader.root,
                    record: reader.record
                };

            if (ctx.groupSpec) {
                response.summaryData = me.getSummary(ctx, data, page);
            }

            var tpl = Ext.XTemplate.getTpl(me, 'xmlTpl'),
                xml = tpl.apply(response),
                doc;

            if (typeof DOMParser != 'undefined') {
                doc = (new DOMParser()).parseFromString(xml, "text/xml");
            } else {
                // IE doesn't have DOMParser, but fortunately, there is an ActiveX for XML
                doc = new ActiveXObject("Microsoft.XMLDOM");
                doc.async = false;
                doc.loadXML(xml);
            }

            ret.responseText = xml;
            ret.responseXML = doc;
            return ret;
        }
    });