- From: <vojtech.toman@emc.com>
- Date: Tue, 21 Sep 2010 06:16:49 -0400
- To: <xproc-dev@w3.org>
> 1. Surely there's a better way than the ugly variable assignments. I am not sure that using parameters for this is the best/easiest approach in your case. I would use options instead: <?xml version="1.0"?> <p:declare-step xmlns:c="http://www.w3.org/ns/xproc-step" xmlns:p="http://www.w3.org/ns/xproc" name="mir.fetch" version="1.0"> <p:output port="result"/> <p:option name="uri" required="true"/> <p:option name="username" required="true"/> <p:option name="password" required="true"/> <p:option name="query" select="'version.xml'"/> <p:http-request>...</p:http-request> </p:declare-step> The trouble with parameters and parameter inputs is that you cannot guarantee that all parameters that you need are actually passed to the step. With options you have more control over what is required, what the defaults are etc. If you really want to use a config file, I personally wouldn't represent it as a c:param document and process it using p:parameters. Instead, I would probably use my own simple syntax and load the document using p:load (you can also check if the config document is valid by using one of the validation steps) and then store the the relevant information in variables, in a similar way that you did: <p:load href="auth.xml"/> <p:group> <p:variable name="query" select="'version.xml'"/> <p:variable name="uri" select="//uri"/> <p:variable name="username" select="//username"/> <p:variable name="password" select="//password"/> <p:http-request>...</p:http-request> </p:group> > 2. Much to my surprise, variable substitution doesn't work. One doesn't use > $variablename as in XSLT. But I can't see that using concat() would work. Do I end > up using a bunch of ugly with-params? Indeed, variable substitution does not work in XProc 1.0, and it is a known limitation that is on the WG's TODO list for the next version of the language. One way to build the c:request document dynamically is something like this: <p:add-attribute match="c:request" attribute-name="href"> <p:input port="source"> <p:inline> <c:request method="get" detailed="true" auth-method="basic"/> </p:inline> </p:input> <p:with-option name="attribute-value" select="concat($uri, $query)"/> </p:add-attribute> <p:add-attribute match="c:request" attribute-name="username"> <p:with-option name="attribute-value" select="$username"/> </p:add-attribute> <p:add-attribute match="c:request" attribute-name="password"> <p:with-option name="attribute-value" select="$password"/> </p:add-attribute> Hope this helps. Vojtech -- Vojtech Toman Consultant Software Engineer EMC | Information Intelligence Group vojtech.toman@emc.com http://developer.emc.com/xmltech
Received on Tuesday, 21 September 2010 10:18:51 UTC