Re: Scope of step types

/ Richard Tobin <richard@inf.ed.ac.uk> was heard to say:
|>   The scope of the names of step types is the pipeline in which they occur.
|>   The in-scope names come from types that are:
|> 
|>     * Built-in to XProc (e.g., p:pipeline, p:choose, etc.)
|>     * Declared with p:declare-step (e.g, p:xslt, p:xinclude, etc.)
|>       in the pipeline or in a p:pipeline-library imported into the
|>       pipeline.
|>     * Defined with p:pipeline imported directly or in a p:pipeline-library
|>       imported into the pipeline.
|>     * Or built-in as extensions by a particular processor.
|
| I think this still doesn't cover everything.  Surely the body of a
| pipeline in a library can see the other steps and pipelines declared
| in the library that contains it.

Yes. And the more I think about it, the more I think maybe we really
do want a single, global scope for step type names.

How about:

  The scope of the names of step types is global. Step types are:

    * Built-in to XProc (e.g., p:pipeline, p:choose, etc.)
    * Declared with p:declare-step (e.g, p:xslt, p:xinclude, etc.)
    * Defined with p:pipeline
    * Or built-in as extensions by a particular processor.

  All the step types in a pipeline must have unique names: it is a
  static error (err:XS0036) if any step type name is built-in and/or
  declared or defined more than once.

I think the only negative consequence of this decision is that two
pipelines in a pipeline library that each import a different
definition for a step type will cause an error where one is not,
perhaps absolutely necessary. But we have namespaces to make such
things unnecessary, right?

                                        Be seeing you,
                                          norm

-- 
Norman Walsh <ndw@nwalsh.com> | Few men are so sufficiently discerning
http://nwalsh.com/            | to appreciate all the evil that they
                              | do.--La Rochefoucauld

Received on Tuesday, 2 October 2007 14:16:31 UTC