- From: <vojtech.toman@emc.com>
- Date: Tue, 11 Oct 2011 10:30:59 -0400
- To: <public-xml-processing-model-comments@w3.org>
> 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>
Short, elegant, simple.
--
Vojtech Toman
Consultant Software Engineer
EMC | Information Intelligence Group
vojtech.toman@emc.com
http://developer.emc.com/xmltech
Received on Tuesday, 11 October 2011 14:31:51 UTC