in-scope namespaces & inline documents

If we have something like the following pipeline:

<p:pipeline name="toric-gröbner" xmlns:p='http://www.w3.org/2007/03/xproc'
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:monos="
http://www.milowski.com/Vocabulary/Math/Monos/Steps/2005/1/0"
            xmlns:m="http://www.milowski.com/Vocabulary/Math/Monos/2005/1/0
">
   <p:input port="pipe-input"/>
   <p:output port="pipe-output">
      <p:pipe step="translate-input" port="result"/>
   </p:output>

   <p:xslt name="translate-input">
      <p:input port="transform">
         <p:inline>
            <xsl:transform version="1.0">
               <xsl:template match="/m:matrix">
                  <m:compute-toric-ideal monomial-order="wgrevlex"
output="matrix-compact">
                     <xsl:copy-of select="*"/>
                     <xsl:if test="not(m:row-space-vector)">
                        <m:compute-row-space-vector>
                        <xsl:copy-of select="m:matrix"/>
                        </m:compute-row-space-vector>
                     </xsl:if>
                  </m:compute-toric-ideal>
               </xsl:template>
               <xsl:template match="*">
                  <xsl:copy-of select="."/>
               </xsl:template>
            </xsl:transform>
         </p:inline>
      </p:input>
      <p:input port="document"><p:pipe step="toric-gröbner"
port="pipe-input"/></p:input>
   </p:xslt>

</p:pipeline>

The inline XSLT transformation won't compile unless the in-scope namespaces
are
copied to the document element supplied as part of the input to the
'transform'
port of the XSLT step.

In the above pipeline, I declare all the prefixes on the document element of
the
pipeline.  This is what users typically do.  If they do that and we *DO NOT*
copy
the in-scope namespaces to the generated document element for inline
documents, the user will get an error and be very confused.

On the other hand, if we don't, a pipeline with a single identity step using
an
inline would generate output with more namespace declarations than specified
on the inline.  This seems like the lesser evil.

-- 
--Alex Milowski
"The excellence of grammar as a guide is proportional to the paucity of the
inflexions, i.e. to the degree of analysis effected by the language
considered."

Bertrand Russell in a footnote of Principles of Mathematics

Received on Tuesday, 13 March 2007 22:10:19 UTC