- From: Jeni Tennison <jeni@jenitennison.com>
- Date: Mon, 30 Apr 2007 09:32:19 +0100
- To: public-xml-processing-model-wg@w3.org
Norman Walsh wrote: > / Alex Milowski <alex@milowski.org> was heard to say: > | On 4/24/07, Norman Walsh <ndw@nwalsh.com> wrote: > |> > |> Consider: > |> > |> <p:serialize> > |> <p:option name="href" value="/tmp/out.xml"/> > |> <p:option name="method" value="html"/> > |> </p:serialize> > |> > |> I wonder if we should allow that to be written as: > |> > |> <p:serialize href="/tmp/out.xml" method="html"/> > | > | I would love to be able to do that!!! > | > | I wonder if we should also allow > |> > |> <p:option name="href" value="/tmp/out.xml"/> > |> > |> to be expressed as > |> > |> <p:option href="/tmp/out.xml"/> > | > | Yes. > | > | I have mixed feelings about both of these, but I find myself doing the > |> latter by accident sometimes and wishing for the former. Now that we > |> have options and parameters clearly distinct, it doesn't seem totally > |> unreasonable to do this. > |> > |> In both cases, I would expect the attribute values to be taken literally. > |> If you want a select, you have to do it the long way: > |> > |> <p:option name="href" select="concat($basedir,'foo.html')"/> > | > | Sure. > > Everyone else, please weigh in! I don't view this as defaulting: you're not proposing omitting elements or attributes, but providing an alternative syntax that can be used in some circumstances (but not in others). I would be very happy with options-as-attributes if all options were always attributes. I think we can even have those whose value would otherwise be specified with the select attribute be specified as attributes, if we allow attribute value templates: <p:serialize href="{$basedir}foo.html" method="html" /> The only drop in functionality is that it would no longer be possible to have two options that needed to be evaluated based on different context nodes. For example: <my:example> <p:option name="root1" select="name(/*)"> <p:pipe step="step1" source="result" /> </p:option> <p:option name="root2" select="name(/*)"> <p:pipe step="step2" source="result" /> </p:option> </my:example> This is obviously a rare case, whereas the usability benefits of allowing options to be set via attributes will apply across the board. So what I'd propose is: (1) Options are set by attributes on steps, which may contain {}s to indicate evaluated content (2) We provide a <p:variable> element to create lexically-scoped variables that can be declared and used anywhere within the pipeline (3) <p:option> is only used to declare options, at the start of <p:pipeline> (it has the same relationship to <p:variable> as <xsl:param> has to <xsl:variable>) The example above could then be written: <p:variable name="root1" select="name(/*)"> <p:pipe step="step1" source="result" /> </p:variable> <p:variable name="root2" select="name(/*)"> <p:pipe step="step2" source="result" /> </p:variable> <my:example root1="{$root1}" root2="{$root2}" /> Compound steps (<p:for-each>, <p:viewport>, <p:group> etc.) could no longer contain <p:option>. Cheers, Jeni -- Jeni Tennison http://www.jenitennison.com
Received on Monday, 30 April 2007 08:32:28 UTC