W3C home > Mailing lists > Public > xproc-dev@w3.org > March 2011

Re: Adding p:group gets rid of ERR : Unbound primary output.. why?

From: Alex Muir <alex.g.muir@gmail.com>
Date: Thu, 17 Mar 2011 16:18:37 +0000
Message-ID: <AANLkTiktdH=MrTd9_XNucSb1hi8crmXdLu98pXb9R9j7@mail.gmail.com>
To: vojtech.toman@emc.com
Cc: xproc-dev@w3.org
Okay thanks guys. Get it.


On Thu, Mar 17, 2011 at 3:34 PM, <vojtech.toman@emc.com> wrote:

> Yes, inside the oh:save-output step, the “result” port is indeed connected
> to the “ident” step. But on the outside, when you use the oh:save-output
> step (SAVEME), there is nothing that connects to (or “consumes”) the result
> of the SAVEME. The specification demands that primary output ports must be
> connected or p:sink’ed.
>
>
>
> Vojtech
>
>
>
>
>
> --
>
> Vojtech Toman
>
> Consultant Software Engineer
>
> EMC | Information Intelligence Group
>
> vojtech.toman@emc.com
>
> http://developer.emc.com/xmltech
>
>
>
> *From:* Alex Muir [mailto:alex.g.muir@gmail.com]
> *Sent:* Thursday, March 17, 2011 4:22 PM
>
> *To:* Toman, Vojtech
> *Cc:* xproc-dev@w3.org
> *Subject:* Re: Adding p:group gets rid of ERR : Unbound primary output..
> why?
>
>
>
> Well perhaps I'm not clear on your statements but the declaration
> oh:save-output specifies the result to be the identity. So when you mention
> "nothing is connected to the primary output port" the thought comes why in
> this case should there be something connected? The intention is to save a
> copy and then move on with a copy of what was saved to be used as input to
> the next step. Did I do this incorrectly or could it be improved?
>
> <p:declare-step name="saveDocument" type="oh:save-output">
>     <p:input port="source" primary="true"/>
> *    <p:output port="result">
>       <p:pipe port="result" step="ident"/>
>     </p:output>*
>     <p:option name="step-name" required="true"/>
>     <p:option name="save" select="'false'"/>
>     <p:option name="href" required="true"/>
>     <p:identity name="ident"/>
>
>     <p:choose>
>       <p:when test="$save = 'true'">
>         <p:store>
>
>
>           <p:with-option name="href" select="$href">
>
>             <p:pipe port="result" step="ident"/>
>           </p:with-option>
>         </p:store>
>       </p:when>
>       <p:otherwise>
>         <p:sink/>
>       </p:otherwise>
>     </p:choose>
>   </p:declare-step>
>
> Thanks
>
> On Thu, Mar 17, 2011 at 3:11 PM, <vojtech.toman@emc.com> wrote:
>
> A Calabash bug; no doubt about it now. You should get the error with or
> without the p:group wrapper as nothing is connected to the primary output
> port of SAVEME. If this is intentional and you really don’t care about the
> result of SAVEME, simply add p:sink right after it:
>
>
>
> <oh:save-output name="SAVEME"
> step-name="saveidentifyDifferentOldNewOfficeCodes">
>
>   <p:with-option name="save" select="'true'"/>
>
>   <p:with-option name="href"
> select="$hrefIdentifyDifferentOldNewOfficeCodes"/>
>
> </oh:save-output>
>
> <p:sink/>
>
>
>
> Thank should fix it.
>
>
>
>
>
> Vojtech
>
>
>
> --
>
> Vojtech Toman
>
> Consultant Software Engineer
>
> EMC | Information Intelligence Group
>
> vojtech.toman@emc.com
>
> http://developer.emc.com/xmltech
>
>
>
>
>
>
>
> *From:* Alex Muir [mailto:alex.g.muir@gmail.com]
> *Sent:* Thursday, March 17, 2011 3:56 PM
> *To:* Toman, Vojtech
> *Cc:* xproc-dev@w3.org
> *Subject:* Re: Adding p:group gets rid of ERR : Unbound primary output..
> why?
>
>
>
> Good call Vojtech,, I added a name to the save-output step and the error
> message is related to that step. I hadn't noticed that I was thinking the
> step-name was the name I suppose.
>
> E [Calabash XProc] ERR : Unbound primary output: [output result on SAVEME]
>
>    <oh:save-output name="SAVEME"
> step-name="saveidentifyDifferentOldNewOfficeCodes">
>       <p:with-option name="save" select="'true'"/>
>       <p:with-option name="href"
> select="$hrefIdentifyDifferentOldNewOfficeCodes"/>
>     </oh:save-output>
>
>
> Here is the code.
> ---------
> <?xml version="1.0" encoding="UTF-8"?>
> <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="
> http://www.w3.org/ns/xproc-step" xmlns:cx="
> http://xmlcalabash.com/ns/extensions" xmlns:xs="
> http://www.w3.org/2001/XMLSchema" xmlns:oh="http://oami.europa.eu"
> version="1.0">
>
>   <p:input port="source">
>     <p:inline>
>       <xml/>
>     </p:inline>
>   </p:input>
>
>   <p:output port="result"/>
>
>   <p:declare-step name="saveDocument" type="oh:save-output">
>     <p:input port="source" primary="true"/>
>     <p:output port="result">
>       <p:pipe port="result" step="ident"/>
>     </p:output>
>     <p:option name="step-name" required="true"/>
>     <p:option name="save" select="'false'"/>
>     <p:option name="href" required="true"/>
>     <p:identity name="ident"/>
>
>     <p:choose>
>       <p:when test="$save = 'true'">
>         <p:store>
>           <p:with-option name="href" select="$href">
>             <p:pipe port="result" step="ident"/>
>           </p:with-option>
>         </p:store>
>       </p:when>
>       <p:otherwise>
>         <p:sink/>
>       </p:otherwise>
>     </p:choose>
>   </p:declare-step>
>
>
>   <p:variable name="debugOutput" select="true()"/>
>   <p:variable name="regexOffices" select="'^(Portugal):'"/>
>   <p:variable name="regexSelectSchemaTypes"
> select="'\{\{Schema\s+(E(lement|numeration)|Type|Attribute)'"/>
>   <p:variable name="regexOfficeCodeList" select="'(PT)$'"/>
>   <p:variable name="OfficeCodeList" select="'PT'" oh:doc="the office code
> list one wants to make a schema for"/>
>   <p:variable name="OfficeCodeArgSeperator" select="','"/>
>   <p:variable name="category" select="'D7'"/>
>
>
>   <p:variable name="hrefdebugOutputFolder" select="'../debug/'"/>
>   <p:variable name="hrefWikiDumpInput" select="'../in/p13-wikidump.xml'"/>
>   <p:variable name="hrefFullRDF" select="'../in/p13.rdf'"/>
>   <p:variable name="hrefRDF" select="'../in/p13_slim.rdf'"/>
>   <p:variable name="hrefSchemaOutput" select="'../out/TM-XML-V1-4.xsd'"/>
>   <p:variable name="hrefOfficeSpecificWikiDump"
> select="'../out/officeSpecificOutput.xml'"/>
>   <p:variable name="hrefOfficeSpecificWikiDumpCategoryAppended"
> select="'../out/officeSpecificWikiDumpCategoryAppended.xml'"/>
>
>   <p:variable name="hrefIdentifyDifferentOldNewOfficeCodes"
> select="'../out/DifferentOldNewOfficeCodes.xml'"/>
>
>   <p:group name="SlimRDF">
>     <p:load>
>       <p:with-option name="href" select="$hrefFullRDF"/>
>     </p:load>
>
>     <p:xslt name="slim_RDF" version="1.0" oh:doc="run the stylesheet that
> slims the full RDF to be an office specific RDF">
>       <p:input port="stylesheet">
>         <p:document href="../xslt/slim_RDF.xsl"/>
>       </p:input>
>       <p:with-param name="regexOffices" select="$regexOffices"/>
>       <p:with-param name="regexOfficeCodeList"
> select="$regexOfficeCodeList"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output step-name="saveSlim_RDF">
>       <p:with-option name="save" select="'true'"/>
>       <p:with-option name="href" select="$hrefRDF"/>
>     </oh:save-output>
>
>     <p:sink/>
>   </p:group>
>
>   <p:group name="GenerateOfficeSpecificWIkiDump">
>
>     <p:load>
>       <p:with-option name="href" select="$hrefWikiDumpInput"/>
>     </p:load>
>
>     <oh:save-output step-name="debugOutputBeforeStripPagesNotInRDF">
>       <p:with-option name="save" select="$debugOutput"/>
>       <p:with-option name="href"
> select="concat($hrefdebugOutputFolder,'debugOutputBeforeStripPagesNotInRDF.xml')"/>
>     </oh:save-output>
>
>     <p:xslt name="removePagesWithoutReferencedComponent" version="1.0">
>       <p:input port="stylesheet">
>         <p:document
> href="../xslt/removePagesWithoutReferencedComponentKeyed.xsl"/>
>       </p:input>
>       <p:with-param name="hrefRDF" select="$hrefRDF"/>
>       <p:with-param name="regexOfficeCodeList"
> select="$regexOfficeCodeList"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output step-name="debugOutputBeforeGenerateOfficeCode">
>       <p:with-option name="save" select="$debugOutput"/>
>       <p:with-option name="href"
> select="concat($hrefdebugOutputFolder,'debugOutputBeforeGenerateOfficeCode.xml')"/>
>     </oh:save-output>
>
>     <p:xslt name="GenerateOfficeCode" version="1.0" oh:doc="run xslt to
> append the office code list">
>       <p:input port="stylesheet">
>         <p:document href="../xslt/GenerateOfficeCodeKeyed.xsl"/>
>       </p:input>
>       <p:with-param name="hrefRDF" select="$hrefRDF"/>
>       <p:with-param name="regexSelectSchemaTypes"
> select="'\{\{Schema\s+(E(lement|numeration)|Type|Attribute)'"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output step-name="saveOfficeSpecificWikiDump">
>       <p:with-option name="save" select="'true'"/>
>       <p:with-option name="href" select="$hrefOfficeSpecificWikiDump"/>
>     </oh:save-output>
>   </p:group>
>
>  <!-- <p:group name="CreateOfficeSpecificWikiDumpCategoryAppended">-->
>     <p:identity name="PutCopyOfficeSpecificWikiDump"/>
>
>     <p:xslt name="identifyDifferentOldNewOfficeCodes" version="1.0"
> oh:doc="Creates a list of pages that have different old and new office
> codes">
>       <p:input port="stylesheet">
>         <p:document href="../xslt/identifyDifferentOldNewOfficeCodes.xsl"/>
>       </p:input>
>       <p:with-param name="hrefRDF" select="$hrefRDF"/>
>       <p:with-param name="regexSelectSchemaTypes"
> select="'\{\{Schema\s+(E(lement|numeration)|Type|Attribute)'"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output name="SAVEME"
> step-name="saveidentifyDifferentOldNewOfficeCodes">
>       <p:with-option name="save" select="'true'"/>
>       <p:with-option name="href"
> select="$hrefIdentifyDifferentOldNewOfficeCodes"/>
>     </oh:save-output>
>
>     <p:identity name="GetCopyOfficeSpecificWikiDump">
>       <p:input port="source">
>         <p:pipe port="result" step="PutCopyOfficeSpecificWikiDump"/>
>       </p:input>
>     </p:identity>
>
>
>     <p:xslt name="AppendCategory" version="1.0" oh:doc="Appends the
> category to things that have changed">
>       <p:input port="stylesheet">
>         <p:document href="../xslt/AppendCategory.xsl"/>
>       </p:input>
>       <p:with-param name="hrefDiff"
> select="$hrefIdentifyDifferentOldNewOfficeCodes"/>
>       <p:with-param name="regexSelectSchemaTypes"
> select="'\{\{Schema\s+(E(lement|numeration)|Type|Attribute)'"/>
>       <p:with-param name="category" select="$category"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output step-name="saveOfficeSpecificWikiDumpCategoryAppended">
>       <p:with-option name="save" select="'true'"/>
>       <p:with-option name="href"
> select="$hrefOfficeSpecificWikiDumpCategoryAppended"/>
>     </oh:save-output>
>
>     <p:identity name="GetSecondCopyOfficeSpecificWikiDump">
>       <p:input port="source">
>         <p:pipe port="result" step="PutCopyOfficeSpecificWikiDump"/>
>       </p:input>
>     </p:identity>
>
> <!--  </p:group>-->
>
>   <p:group name="convertToSchemaWiki">
>
>     <oh:save-output step-name="debugOutputBeforeWikiMediaDumpToSchema">
>       <p:with-option name="save" select="$debugOutput"/>
>       <p:with-option name="href"
> select="concat($hrefdebugOutputFolder,'debugOutputBeforeWikiMediaDumpToSchema.xml')"/>
>     </oh:save-output>
>
>     <p:xslt name="WikiMediaDumpToSchema" version="1.0" oh:doc="run the
> stylesheet that extracts the schema widgets from the wikimedia dump">
>       <p:input port="stylesheet">
>         <p:document href="../xslt/WikiMediaDumpToSchema.xsl"/>
>       </p:input>
>       <p:with-param name="OfficeCodeList" select="$OfficeCodeList"/>
>       <p:with-param name="OfficeCodeArgSeperator"
> select="$OfficeCodeArgSeperator"/>
>       <p:input port="parameters">
>         <p:empty/>
>       </p:input>
>     </p:xslt>
>
>     <oh:save-output step-name="debugOutputBeforeUnescape-markup">
>       <p:with-option name="save" select="$debugOutput"/>
>       <p:with-option name="href"
> select="concat($hrefdebugOutputFolder,'debugOutputBeforeUnescape-markup.xml')"/>
>     </oh:save-output>
>
>     <p:viewport match="//document" oh:doc="Convert the unescaped markup to
> xml">
>       <p:unescape-markup>
>         <p:with-option name="content-type" select="'application/xml'"/>
>       </p:unescape-markup>
>     </p:viewport>
>
>     <p:unwrap match="/document" oh:doc="remove the surrounding element
> document"/>
>   </p:group>
>
>   <oh:save-output step-name="output">
>     <p:with-option name="save" select="'true'"/>
>     <p:with-option name="href" select="$hrefSchemaOutput"/>
>   </oh:save-output>
>
>   <p:identity/>
> </p:declare-step>
>
>
> ---------
>
> On Thu, Mar 17, 2011 at 2:23 PM, <vojtech.toman@emc.com> wrote:
>
> I assume that “!1.29” is the oh:save-output step as the other steps in the
> sub-pipeline have explicit names. I don’t know what the declaration of
> oh:save-output looks like, but if the step has a primary output port, then
> this output port is unconnected (no steps inside p:group are connected to
> it, and no steps outside of the p:group can connect it as it is out of
> scope). If you look at the connections between the steps in the subpipeline,
> there are actually two branches:
>
>
>
> - PutCopyCitySpecificWikiDump -> identifyDifferentOldNewOfficeCodes ->
> oh:save-output
>
> - PutCopyCitySpecificWikiDump -> GetCopyCitySpecificWikiDump
>
>
>
> My guess is that Calabash gets it wrong and somehow thinks that
> oh:save-output is the last step of the subpipeline, in which case it creates
> an implicit output port to p:group and connects it to the primary output
> port of oh:save-output. That would explain why you don’t get the error with
> p:group, but I think that is a bug in Calabash.
>
>
>
> Regards,
>
> Vojtech
>
>
>
> --
>
> Vojtech Toman
>
> Consultant Software Engineer
>
> EMC | Information Intelligence Group
>
> vojtech.toman@emc.com
>
> http://developer.emc.com/xmltech
>
>
>
>
> --
> Alex
> -----
> Currently:
> Freelance Software Engineer 6+ yrs exp
>
> Previously:
> https://sites.google.com/a/utg.edu.gm/alex/
>
>
> A Bafila, is two rivers flowing together as one:
> http://www.facebook.com/pages/Bafila/125611807494851
>
>
>
>
> --
> Alex
> -----
> Currently:
> Freelance Software Engineer 6+ yrs exp
>
> Previously:
> https://sites.google.com/a/utg.edu.gm/alex/
>
>
> A Bafila, is two rivers flowing together as one:
> http://www.facebook.com/pages/Bafila/125611807494851
>
>
>


-- 
Alex
-----
Currently:
Freelance Software Engineer 6+ yrs exp
<http://www.facebook.com/pages/Bafila/125611807494851>
Previously:
https://sites.google.com/a/utg.edu.gm/alex/


A Bafila, is two rivers flowing together as one:
http://www.facebook.com/pages/Bafila/125611807494851
Received on Thursday, 17 March 2011 16:19:11 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 17 March 2011 16:19:13 GMT