- From: Richard Tobin <richard@inf.ed.ac.uk>
- Date: Tue, 3 Oct 2006 11:50:15 +0100 (BST)
- To: public-xml-processing-model-wg@w3.org
Here is a sample of what the component description might look like.
Lots of details are probably wrong; the idea is just to suggest a
way we might describe things.
-- Richard
There is a class hierarchy with component at the root. A pipeline
program contains instances of these classes. When a pipeline is run,
component instances are activated - the running instances are called
activations. During the running of a pipeline program a component
instance may be activated once, more than once (e.g. in a for-each),
or never (e.g. in a not-taken choose branch)
A component instance has a static environment containing (among
other things) a set of visible external ports.
Component
=========
Parts:
zero or more input ports
zero or more output ports
zero or more parameters
a static environment
Semantics:
The semantics of components are described in the various subclasses.
Atomic component
===============
Subclass of component.
Parts:
as for component
Constraints:
An atomic component does not contain components whose input ports are
connected to the visible external ports in its environment. [I.e.
no lines cross the boundary of the box.]
XSLT 1 Component
================
Subclass of atomic component.
Parts:
source input
stylesheet input
result output
zero or more parameters
Semantics:
When activated, an XSLT 1 component instance reads a stylesheet from
its stylesheet port and a document from its source port. These are
used as described in the XSLT spec and the result is written to the
result port. The parameters are interpreted as XSLT parameters.
Flow
====
Subclass of component.
Parts:
zero or more input
zero or more output ports
zero or more parameters
zero or more child components
zero or more pipes each
Constraints:
Each pipe connects
(an input port of the flow or an output port of a child component
or a visible external port in the flow's environment) to
(an input ports of a child component or an output port of the flow).
If the child components are considered as nodes and the pipes between
them as arcs, they form a DAG.
Semantics:
The visible external ports for a child component are the input ports
of the flow, the output ports of the [other] child components, and
the visible external ports of the flow itself.
When the flow is instantiated, each of its child components is instantiated.
The document or sequence available on an input port of a
child component is the document or sequence available on
the port it is connected to. [Note: this is the semantics of a pipe!]
Choose
======
Subclass of component.
Parts:
a sequence of pairs (condition, flow) where each condition is ...
...
Constraints:
...
Semantics:
The visible external ports for a child flow are the input ports of
the choose and the visible external ports of the choose.
The conditions are evaluated until one is true, then the
corresponding flow is activated.
The document or sequence available on an input port of the
activated child flow is the document or sequence available on
the port it is connected to.
...
For-each
========
Subclass of component.
Parts:
source input
an XPath
a child flow
...
Constraints:
...
Semantics:
The visible external ports for the child flow are the input ports of
the for-each, the visible external ports of the for-each, and an
additional port called the iteration port.
The child flow is activated once for each element [?] in the document
or sequence on the source input that matches the XPath.
The document or sequence available on the source input of the child flow is a
document containing a single child which is [a copy of?] the matching
node.
The document or sequence available on each other input port of the
child flow is the document or sequence available on
the port it is connected to.
...
Pipeline
========
Subclass of flow.
Parts:
...
Constraints:
A pipeline has no visible external ports in its environment. [It's
a top-level flow.]
Received on Tuesday, 3 October 2006 10:49:49 UTC