Name Attributes and Fragment Identifiers

We have a number of places where the 'name' attribute is provided.  In some
cases it is just for providing a way to have a fragment identifier.

For p:declare-step, p:when, p:otherwise, and p:pipeline-library, we say nothing
about this attribute even though the declaration shows that such an attribute is
allowed.

Further, for all cases where the fragment identifier is allowed, we say nothing
about its uniqueness.  In particular, it would be very easy for a
pipeline author
to use the same name attribute value on a p:when that they uses for a step.  In
both cases the name attribute value is a fragment identifier and will cause an
ambiguity as to which construct is the target of the URI.

Even further, if the same name value is used on two steps in the same
scope, it is
an error but if the same name value is used on a step and one of the other
constructs (e.g. p:when or p:declare-step) that can have a fragment identifier
it is not an error.  This seems inconsistent.

I think it would be better to say that in all cases the named construct is added
to the "in-scope" names so that conflicts can be detected.  When you refer to
something that you can't, you'd just get a different static error (e.g. you can
refer to a port on a p:declare-step via its name).

-- 
--Alex Milowski
"The excellence of grammar as a guide is proportional to the paucity of the
inflexions, i.e. to the degree of analysis effected by the language
considered."

Bertrand Russell in a footnote of Principles of Mathematics

Received on Monday, 12 November 2007 20:59:01 UTC