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 14:55:32 +0000
Message-ID: <AANLkTi=mcRwSj3b=mJy+va0m2qxaJsFfjJJvUsr=8=4W@mail.gmail.com>
To: vojtech.toman@emc.com
Cc: xproc-dev@w3.org
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
<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 14:56:06 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 17 March 2011 14:56:07 GMT