- From: Norman Walsh <ndw@nwalsh.com>
- Date: Tue, 11 Oct 2011 10:23:04 -0400
- To: public-xml-processing-model-comments@w3.org
- Message-ID: <m2d3e3ppyv.fsf@nwalsh.com>
Florent Georges <fgeorges@fgeorges.org> writes: > On 6 October 2011 21:45, Norman Walsh wrote: >> <c:request method="get" href="http://tests.xproc.org/tests/doc/html-utf8.data"/> >> [...] >> It returns a base64 encoded document: > > In my humble opinion, I think those problems wouldn't happen if HTML > content was parsed as a document node directly by the http-request > step. I was thinking about an extension to support this when it occurred to me that it can be done in standard XProc. I think. Anyone see any problems with this: <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" version="1.0" xmlns:c="http://www.w3.org/ns/xproc-step" xmlns:l="http://xproc.org/library" type="l:http-get"> <p:output port="result"/> <p:option name="href" required="true"/> <p:option name="username"/> <p:option name="password"/> <p:option name="auth-method" select="'Basic'"/> <p:option name="send-authorization" select="'false'"/> <p:option name="override-content-type"/> <p:choose> <p:when test="p:value-available('username')"> <p:template> <p:input port="template"> <p:inline> <c:request method="get" href="{$href}" detailed="false" status-only="false" username="{$username}" password="{$password}" auth-method="{$auth-method}" send-authorization="{$send-authorization}"/> </p:inline> </p:input> <p:input port="source"><p:empty/></p:input> <p:with-param name="href" select="$href"/> <p:with-param name="username" select="$username"/> <p:with-param name="password" select="$password"/> <p:with-param name="auth-method" select="$auth-method"/> <p:with-param name="send-authorization" select="$send-authorization"/> </p:template> </p:when> <p:otherwise> <p:template> <p:input port="template"> <p:inline> <c:request method="get" href="{$href}" detailed="false" status-only="false"/> </p:inline> </p:input> <p:input port="source"><p:empty/></p:input> <p:with-param name="href" select="$href"/> </p:template> </p:otherwise> </p:choose> <p:choose> <p:when test="p:value-available('override-content-type')"> <p:add-attribute match="/c:request" attribute-name="override-content-type"> <p:with-option name="attribute-value" select="$override-content-type"/> </p:add-attribute> </p:when> <p:otherwise> <p:identity/> </p:otherwise> </p:choose> <p:http-request/> <p:choose> <p:when test="starts-with(/c:body/@content-type,'text/html') and /c:body/@encoding = 'base64' and contains(/c:body/@content-type, 'charset')"> <p:unescape-markup content-type="text/html" encoding="base64"/> <p:unwrap match="/c:body"/> </p:when> <p:when test="starts-with(/c:body/@content-type,'text/html') and /c:body/@encoding = 'base64'"> <!-- Per RFC 2616, the default charset for text/* types is ISO 8859-1 --> <p:unescape-markup content-type="text/html" encoding="base64" charset="iso-8859-1"/> <p:unwrap match="/c:body"/> </p:when> <p:when test="starts-with(/c:body/@content-type,'text/html')"> <p:unescape-markup content-type="text/html"/> <p:unwrap match="/c:body"/> </p:when> <p:when test="/c:body/@content-type = 'application/json'"> <p:unescape-markup content-type="application/json" encoding="base64" charset="utf-8"/> <p:unwrap match="/c:body"/> </p:when> <p:otherwise> <p:identity/> </p:otherwise> </p:choose> </p:declare-step> Be seeing you, norm -- Norman Walsh Lead Engineer MarkLogic Corporation Phone: +1 413 624 6676 www.marklogic.com
Received on Tuesday, 11 October 2011 14:23:52 UTC