using afButterusing afSizzleusing xml** Middleware that lets you make CSS selector queries against the HTTP response.** ** You need to make sure the 'ButterResponse' holds a well formed XML document else an 'XErr' is thrown. If rendering** [Slim]`http://www.fantomfactory.org/pods/afSlim` templates then make sure it compiles XHTML documents (and not HTML):** ** slim := Slim(TagStyle.xhtml) ** ** 'SizzleMiddleware' lazily parses the 'ButterResponse' into a 'SizzleDoc' so you can still make requests for non XML** documents - just don't query them! class SizzleMiddleware : ButterMiddleware { SizzleDoc sizzleDoc { get { getSizzleDoc()}private set {}} XElem[] select(Str cssSelector){ sizzleDoc.select(cssSelector)}private SizzleDoc? docprivate ButterResponse? resoverride ButterResponse sendRequest(Butter butter, ButterRequest req){this.res = nullthis.doc = nullthis.res = butter.sendRequest(req)return res}private SizzleDoc getSizzleDoc(){if(res == null)throw Err("No requests have been made!")if(doc != null)return docreturn SizzleDoc(res.asStr)}private Bool matchesType(MimeType? mimeType, Str[] types){if(mimeType == null)returnfalse type := "${mimeType.mediaType}/${mimeType.subType}".lowerreturn types.any {it == type }}}