New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cardinality of output ports on p:choose and p:try #671

Closed
xml-project opened this Issue Dec 13, 2018 · 1 comment

Comments

Projects
None yet
2 participants
@xml-project
Copy link
Contributor

xml-project commented Dec 13, 2018

Currently we say:

The outputs available from the p:choose are union of all of the outputs declared in any of its alternative subpipelines.

and

Each output of the p:choose is declared to produce a sequence if that output is declared to produce a sequence in any of its subpipelines.

On Dec. 13th call we came to the conclusion, that the second rule is wrong and all output ports of a p:choose or a p:try have to be sequence ports. Consider:

<p:choose>
  ....
  <p:when test="false()">
    <p:output port="special" sequence="false" />
   ....
  </p:when>
</p:choose>

If no other p:when or p:otherwise has an output port named special, p:choose here will have an output port 'special' that is empty, but has sequence="false" because no subpipeline declared it to be a sequence port. So the processor will raise an error here.

The cited rule works only in the special case that all branches declare output ports with the same names. Therefor all output ports of p:choose (and p:try) must be sequence output ports.

@ndw Have we missed something?

@ndw

This comment has been minimized.

Copy link
Contributor

ndw commented Dec 23, 2018

Nope, I think you're exactly right.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment