Re: Dynamic creation of parameters without @namespace

Vojtech,

It looks like your use case is asking for defining c:param/@name as a
NCName which could be converted to QName if c:param/@namespace is
provided, isn'it ?

Mohamed



On Fri, Aug 1, 2008 at 2:10 PM,  <Toman_Vojtech@emc.com> wrote:
>
> Hi all,
>
> As discussed during yesterday's call, I have tried do craft an example
> that illustrates my concerns about removing @namespace from c:param.
> Maybe it is convincing enough, maybe not...
>
> Consider the following pipeline:
>
> <p:pipeline xmlns:p="http://www.w3.org/ns/xproc" xmlns:foo="...">
>  ...
>  <foo:generate-parameters name="generate"/>
>  <p:xslt>
>    <p:input port="source">
>      <p:pipe step="main" port="source"/>
>    </p:input>
>    <p:input port="parameters">
>      <p:pipe step="generate" port="result"/>
>    </p:input>
>  </p:xslt>
>  ...
> </p:pipeline>
>
> Suppose that you want foo:generate-parameters to create a c:param-set
> document based on some dynamic criteria. Also suppose you don't want to
> use @namespace in c:param elements.
>
> Imagine that the namespace URIs for the parameter names are created
> dynamically and are not known in advance. You will have to come up with
> some prefix for the namespace (so you can refer to it in the parameter
> name). If you declare the prefix on the c:param level (the easiest
> option), you can use any prefix as long as it does not clash with the
> prefix for "http://www.w3.org/2007/03/xproc-step" namespace used on the
> param element (if the param element does not use the default namespace).
> I think this is already hard enough to do in plain XProc.
>
> But the main problem is, I think, the creation of namespace
> declarations. You can't use p:add-attribute for that. You could probably
> do something like:
>
> <p:namespace-rename from="http://whatever.com">
>  <p:input port="source">
>    <p:inline>
>      <c:param xmlns:c="http://www.w3.org/2007/03/xproc-step"
> xmlns:x="http://whatever.com" name="x:whatever"/>
>    </p:inline>
>  </p:input>
>  <p:with-option name="to" select="..."/>
> </p:namespace-rename>
> <p:string-replace>
>  <!-- replace "x:whatever" in c:param/@name with "x:parameter-name" -->
> </p:string-replace>
>
> but I don't consider this is a very nice or safe solution. With
> @namespace, you can do:
>
> <p:add-attribute attribute-name="name">
>  <p:input port="source">
>    <p:inline>
>      <c:param xmlns:c="http://www.w3.org/2007/03/xproc-step"/>
>    </p:inline>
>  </p:input>
>  <p:with-option name="attribute-value" select="..."/>
> </p:add-attribute>
> <p:add-attribute attribute-name="namespace">
>  <p:with-option name="attribute-value" select=".../>
> </p:add-attribute>
>
> This solution is, in my opinion, much cleaner/clearer (although it needs
> about the same amount of code as the previous one :-)
>
> You may say that you can overcome the above problems easily by using
> XQuery or XSLT, but I really think that performing such a simple task as
> creating parameters should be possible using just the "core" XProc (and
> with as few workarounds as possible).
>
>
> Regards,
> Vojtech
>
>



-- 
Innovimax SARL
Consulting, Training & XML Development
9, impasse des Orteaux
75020 Paris
Tel : +33 9 52 475787
Fax : +33 1 4356 1746
http://www.innovimax.fr
RCS Paris 488.018.631
SARL au capital de 10.000 €

Received on Sunday, 3 August 2008 22:34:57 UTC