- From: Alex Muir <alex.g.muir@gmail.com>
- Date: Thu, 11 Oct 2012 11:09:33 -0400
- To: XProc Dev <xproc-dev@w3.org>
- Cc: public-xml-processing-model-comments@w3.org
- Message-ID: <CAFtPEJbxKOR=aMydu1PzLEnjZ+udbFGcHt-S7NE1uVxo0t_RKg@mail.gmail.com>
Hi, Idea: The process of a user developing with xproc is constrained in that xproc essentially provides a wrapper to execute other processes such as p:xslt with some other limited yet useful abilities. Given this constraint I wonder if the design can be improved to harness an effective development strategy that both reduces lines of code and speeds development. Explanation: A while back I decided to create a tweak of the p:xslt step which basically combines 1. A version of logging that has a boolean value to turn off the log to let me know that process has got to that p:xslt step when debugging <mh:log> <p:with-option name="message" select="'��� NormalizeContentAndCreateInitalXMlStructure'"/> <p:with-option name="logging" select="$logging"/> </mh:log> 2. a p:store with a boolean to write the xml file or not preserving the state of the content prior to the p:xslt for later debugging the p:xslt <mh:save-output step-name="debugNormalizeContentAndCreateInitalXMlStructure"> <p:with-option name="save" select="$debug"/> <p:with-option name="href" select="concat($debug-output-folder,'Debug-Begin-NormalizeContentAndCreateInitalXMlStructure.xml')"/> </mh:save-output> 3. p:xslt <p:xslt name="NormalizeContentAndCreateInitalXMlStructure" version="1.0"> <p:input port="stylesheet"> <p:document href="../xslt/begin/NormalizeContentAndCreateInitalXMlStructure.xsl"/> </p:input> <p:with-param name="svnRevision" select="$svnRevision"/> <p:input port="parameters"> <p:empty/> </p:input> </p:xslt> Combining them resulted in: <mh:xxslt name="NormalizeContentAndCreateInitalXMlStructure" version="1.0" mh:doc="Create the intial Document structure"> <p:with-option name="debug" select="$debug"/> <p:with-option name="logging" select="$logging"/> <p:with-option name="debugPathAndFileNamePrefix" select="concat($debug-output-folder,'Begin-')"/> <p:input port="stylesheet"> <p:document href="filename.xsl"/> </p:input> <p:with-param name="svnRevision" select="$svnRevision"/> </mh:xxslt> ( Also removed the empty <p:input port="parameters"> ) This: 1. Greatly improved the readability of my code and shaved ~800 lines of code out of around 3000. 2. Is useful because when debugging a particular p:xslt because the input file is easily available if I set debug to be true and run the process. -- But wait there's more... ;) So assuming xproc steps that execute some other external process to modify the xml such as a p:xslt would in future versions provide the extra abilities, to log that you've arrived at that ___location, output what the content is before arriving both using debug values, there are some enhancements and development consequences that result. 1. Given that a unique p:xslt step name="NormalizeContentAndCreateInitalXMlStructure" exists it can be used to specify the file name of the xml file that is being written out to be used later as debug input in a transformation scenario. Currently I'm using the name of the xslt file and then add the debug folder ___location with a prefix to be unique. I suppose I had not at the time thought of using the step name (and well I'm not sure that name is available in calabash code, I haven't checked) <p:with-option name="debugPathAndFileNamePrefix" select="concat($debug-output-folder,'Begin-')"/> 2. Automatic build of Oxygen project file with transformation scenarios A script could converts an xpl + parameter file into an oxygen project scenario with parameters all configured. This would be useful as a developer. All the information to do this exists outside of oxygen given this concept and yet unless you agree on some concept like the one I'm describing at least I don't think Oxygen developers would have a way of currently making such a nice automation feature. -- Given all this generally to ensure that some concept like this would work 3 extra elements would be required. Perhaps like so <p:xslt name="NormalizeContentAndCreateInitalXMlStructure" version="1.0" mh:doc="Create the intial Document structure"> <p:output-debug-file select="$debug"/> <p:output-log select="$logging"/> <p:debug-folder select="$debug-output-folder"/> <p:stylesheet href="filename.xsl"> <p:with-param name="svnRevision" select="$svnRevision"/> </p:stylesheet> </p::xxslt> I suppose they could be optional as well which then would just result in the false case and loss of described functionality. <output-debug-file select="false"/> <output-log select="false"/> -- Thoughts? -- - Alex http://ca.linkedin.com/pub/alex-muir/36/ab7/125 Love African Kora Music? Take a moment to listen to Gambia's - Amadu Diabarte & Jali Bakary Konteh www.bafila.bandcamp.com Your support keeps Africa's griot tradition alive... Cheers!
Received on Thursday, 11 October 2012 15:10:06 UTC