[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Saxon processing problem...
All of this should work, did work, but doesn't. The source document contains an error message table. The stylesheet should simply grab a group of rows from a table, and write the results to a set of result- documents based on a group-size parameter. I am using several other stylesheets that perform similar tasks, and all of them work. This source document is DITA-based; the others are not. Any help would be greatly appreciated. Error #1 - If use Saxon8 or Saxon9 and try to output to a <result-document> from the command line, I get a java.lang.StackOverflowError. If I use Saxon9B in Eclipse (w/oXygenxml), I get an error that says "[Saxon9B] null Ant_Doc/xsl mkpreprocerrs.xsl Unknown 1206732845515 291" Error #2 If I comment the <result-document> tags and use Saxon6.5.5 in Oxygen, the transformations occur, but the title and short description content in the output appear after the declaration, like this :
Source Document <?xml version="1.0"?> <!DOCTYPE reference PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd"> <reference id="allpreprocerrs_ref"> <title>Source document title</title> <shortdesc> Short decription content/shortdesc> <refbody> <table id="allpperrs_tbl"> <tgroup cols="5"> <colspec colnum="1" colname="col1" colwidth="1*"/> <colspec colnum="2" colname="col2" colwidth="1*"/> <colspec colnum="3" colname="col3" colwidth="3*"/> <colspec colnum="4" colname="col4" colwidth="3*"/> <colspec colnum="5" colname="col5" colwidth="1*"/> <thead> <row> <entry colname="col1" align="center">Type</entry> <entry colname="col2" align="center">Number</ entry> <entry colname="col3" align="center">Message</ entry> <entry colname="col4" align="center">Possible Cause</entry> <entry colname="col5" align="center">UltraLite</ entry> </row> </thead> <tbody> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2601</p> </entry> <entry colname="col3" align="left"> <p>subscript value %1 too large</p> </entry> <entry colname="col4"> <p>You have attempted to index a host variable that is an array with a value too large for the array.</p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2602</p> </entry> <entry colname="col3" align="left"> <p>combined pointer and arrays not supported for host types</p> </entry> <entry colname="col4"> <p>You have used an array of pointers as a host variable. This is not legal.</p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2603</p> </entry> <entry colname="col3" align="left"> <p>combined pointer and arrays not supported for host types</p> </entry> <entry colname="col4"> <p>You have attempted to declare a host variable as an array of character arrays. This is not a legal host variable type</p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2604</p> </entry> <entry colname="col3" align="left"> <p>VARCHAR type must have a length</p> </entry> <entry colname="col4"> <p>You have attempted to declare a VARCHAR or BINARY host variable using the DECL_VARCHAR or DECL_BINARY macro but have not specified a size for the array. </p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2605</p> </entry> <entry colname="col3" align="left"> <p>arrays of VARCHAR not supported</p> </entry> <entry colname="col4"> <p>You have attempted to declare a host variable as an array of VARCHAR or BINARY. This is not a legal host variable type.</p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> <row> <entry colname="col1" align="left"> <p>Error</p> </entry> <entry colname="col2"> <p>2606</p> </entry> <entry colname="col3" align="left"> <p>VARCHAR host variables cannot be pointers</p> </entry> <entry colname="col4"> <p>You have attempted to declare a host variable as a pointer to a VARCHAR or BINARY. This is not a legal host variable type.</p> </entry> <entry colname="col5"> <p>False</p> </entry> </row> </tbody> </tgroup> </table> </refbody> </reference> Stylesheet <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text"/> <xsl:output method="xml" doctype-public="-//OASIS//DTD DITA Composite//EN" doctype-system="reference.dtd" indent="yes" name="xml"/> <xsl:strip-space elements="*"/> <xsl:param name="grp-size" select="number(20)"/> <xsl:template match="//table"> <xsl:apply-templates mode="stategroup" select="//tbody/row[position () mod $grp-size=1]"/> </xsl:template> <xsl:template match="//tbody/row" mode="stategroup"> <xsl:variable name="num"> <xsl:number count="row[position() mod $grp-size=1]"/> </xsl:variable> <xsl:variable name="filename" select="concat('output/preprocerrs/ preprocerr',$num)"/> <xsl:result-document href="{$filename}" format="xml"> <xsl:variable name ="ref-id" select="concat('preproc', $num,'- ref' )"/> <xsl:variable name ="ttl-id" select="concat('preproc', $num,'- ttl' )"/> <xsl:variable name ="tbl-id" select="concat('preproc', $num,'- tbl' )"/> <reference id="{$ref-id}"> <title id="{$ttl-id}">Preprocessing Errors <xsl:variable name="start" select="./entry[@colname='col2']"/> <xsl:value-of select="$start[position() mod $grp-size=1]"/> through <xsl:apply-templates mode="varstate" select=". | following- sibling::row[position() < $grp-size]"> </xsl:apply-templates> </title> <shortdesc></shortdesc> <refbody> <table id="{$ttl-id}"> <tgroup cols="4"> <colspec column="1" colname="col1" colwidth="1*"/> <colspec column="2" colname="col2" colwidth="2.25*"/> <colspec column="3" colname="col3" colwidth="1*"/> <colspec column="4" colname="col5" colwidth="2.25*"/> <thead> <row> <entry colname="col1" align="center">Error Code</entry> <entry colname="col1" align="center">Type</entry> <entry colname="col1" align="center">Message</entry> <entry colname="col1" align="center">Possible Cause</entry> </row> </thead> <tbody> <xsl:apply-templates mode="stateitem" select=". | following-sibling::row[position() < $grp-size]"> </xsl:apply-templates> </tbody> </tgroup> </table> </refbody> </reference> </xsl:result-document> </xsl:template> <xsl:template match="//row" mode="stateitem"> <xsl:variable name="msg-type" select="entry[@colname='col1']"/> <xsl:variable name="errnum" select="entry[@colname='col2']"/> <xsl:variable name="errmsg" select="entry[@colname='col3']"/> <xsl:variable name="poss-cause" select="entry[@colname='col4']"/> <row> <entry colname="col1" align="left" valign="top"> <xsl:value-of select="$msg-type"/> </entry> <entry colname="col2" align="left" valign="top"> <xsl:value-of select="$errnum"/> </entry> <entry colname="col3" align="left" valign="top"> <xsl:value-of select="$errmsg"/> </entry> <entry colname="col4" align="left" valign="top"> <xsl:value-of select="$poss-cause"/> </entry> </row> </xsl:template> <xsl:template match="//row" mode="varstate"> <xsl:choose> <xsl:when test="position()=last()"> <xsl:value-of select="entry[@colname='col2']"/> </xsl:when> </xsl:choose> </xsl:template> </xsl:stylesheet>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|