- From: Norman Walsh <ndw@nwalsh.com>
- Date: Sun, 05 Oct 2008 12:43:00 -0400
- To: public-xml-processing-model-comments@w3.org
- Message-ID: <m2ljx3uh63.fsf@nwalsh.com>
Jim Fuller started a thread[1] on the xproc-dev mailing list which has
evolved into a question of spec interpretation. Jim's original
question was about p:delete, but I'm going to rephrase it using
p:rename in order to better illustrate one of the examples.
For the following discussion, assume that the this document occurs on
the default readable port:
<doc>
<m>//item</m>
<!-- hello world -->
<item>an item</item>
</doc>
I think the spec is clear that both of these are valid:
<p:rename match="//item" new-name="foo"/>
<p:rename match="//no-such-item" new-name="foo"/>
The former renames the "item" to "foo", the latter does nothing
because there are no elements named "no-such-item".
I think the following is also clearly valid:
<p:rename new-name="foo">
<p:with-option name="match" select="/doc/m"/>
</p:rename>
The value of the match attribute is taken from the string-value of the
/doc/m node which is "//item" so this step is functionally the same as
the very first example above.
I think it's also clear that the following is invalid:
<p:rename match="/doc/node()[4]" new-name="foo"/>
The matched node is a comment and rename cannot target comments.
But what about this example:
<p:rename new-name="foo">
<p:with-option name="match" select="/doc/a"/>
</p:rename>
There's some debate on the xproc-dev thread about it, but after
looking through the XSLT 2.0 spec, I'm pretty confident that it's an
error.
I think the shortest argument why is that the BNF for an XSLT 2.0
Pattern[2] (which we call an XSLTMatchPattern and still need to cite a
little more carefully) cannot be empty.
Be seeing you,
norm
[1] http://markmail.org/message/otaebbniqetguf6w
[2] http://www.w3.org/TR/xslt20/#dt-pattern
--
Norman Walsh <ndw@nwalsh.com> | A moment's insight is sometimes worth a
http://nwalsh.com/ | life's experience.--Oliver Wendell
| Holmes
Received on Sunday, 5 October 2008 16:43:42 UTC