[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Cannot process a DocBook 5/XML document using a custom stylesheet
Bob Stayton Sagehill Enterprises bobs@sagehill.net -------------------------------------------------- From: "Shlomi Fish" <shlomif@shlomifish.org> Sent: Wednesday, January 16, 2013 12:22 AM To: "Bob Stayton" <bobs@sagehill.net> Cc: "DocBook Apps" <docbook-apps@lists.oasis-open.org>Subject: Re: [docbook-apps] Cannot process a DocBook 5/XML document using a custom stylesheet
Hi Bob, On Tue, 15 Jan 2013 15:17:42 -0800 "Bob Stayton" <bobs@sagehill.net> wrote:The problem here is that in chunking, even with onechunk, every chunk-levelelement is processed twice, once to generate its chunk file and once to generate its content. The two steps are separated by import precedenceonly, so maintaining the two levels of import precedence is necessary whendealing with chunked elements. That is done by having two customization files, as described here: http://www.sagehill.net/docbookxsl/ChunkingCustomization.htmlYour custom template for article content would go into the first file, whichis named 'mydocbook.xsl' in the example.Thanks, this is working better. Now I have a different problem. With: [Q] xsltproc --stringparam root.filename lib/docbook/5/essays/bad-elements/all-in-one.xhtml.temp.xml --path /usr/share/sgml/docbook/xsl-ns-stylesheets/xhtml-1_1 lib/sgml/shlomif-docbook/xsl-5-stylesheets/mychunk.xsl lib/docbook/5/xml/bad-elements.xml [/Q] I get: [Q] runtime error:file /usr/share/sgml/docbook/xsl-ns-stylesheets/xhtml-1_1/chunk-code.xsl line 432 element call-template The called template 'get.doc.title' was not found.runtime error:file /usr/share/sgml/docbook/xsl-ns-stylesheets/xhtml-1_1/chunk-code.xsl line470 element choose Variable 'rootid' has not been declared. [/Q] mychunk.xsl is: [Q] <?xml version="1.0" encoding="ASCII"?> <!--This file was created automatically by html2xhtml--> <!--from the HTML stylesheets.--> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:d="http://docbook.org/ns/docbook" xmlns:exsl="http://exslt.org/common"xmlns="http://www.w3.org/1999/xhtml" version="1.0" exclude-result-prefixes="exsl d"> <!-- ******************************************************************** $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $ ******************************************************************** This file is part of the XSL DocBook Stylesheet distribution. See ../README or http://docbook.sf.net/release/xsl/current/ for copyright and other information. ******************************************************************** --><!-- ==================================================================== --><!-- First import the non-chunking templates that format elements within each chunk file. In a customization, you should create a separate non-chunking customization layer such as mydocbook.xsl that imports the original docbook.xsl and customizes any presentation templates. Then your chunking customization should import mydocbook.xsl instead of docbook.xsl. --> <xsl:import href="shlomif-db5-xhtml-mydocbook.xsl"/> <!-- chunk-common.xsl contains all the named templates for chunking. In a customization file, you import chunk-common.xsl, then add any customized chunking templates of the same name. They will have import precedence over the original chunking templates in chunk-common.xsl. --> <xsl:import href="chunk-common.xsl"/> <!-- The manifest.xsl module is no longer imported because its templates were moved into chunk-common and chunk-code --> <!-- chunk-code.xsl contains all the chunking templates that use a match attribute. In a customization it should be referenced using <xsl:include> instead of <xsl:import>, and then add any customized chunking templates with match attributes. But be sure to add a priority="1" to such customized templates to resolve its conflict with the original, since they have the same import precedence. Using xsl:include prevents adding another layer of import precedence, which would cause any customizations that use xsl:apply-imports to wrongly apply the chunking version instead of the original non-chunking version to format an element. --> <xsl:include href="chunk-code.xsl"/> </xsl:stylesheet> [/Q] And shlomif-db5-xhtml-mydocbook.xsl is: [Q] <?xml version='1.0' encoding='UTF-8'?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"xmlns:db="http://docbook.org/ns/docbook" xmlns:d="http://docbook.org/ns/docbook" xmlns:vrd="http://www.shlomifish.org/open-source/projects/XML-Grammar/Vered/" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xhtml="http://www.w3.org/1999/xhtml"> <xsl:import href="shlomif-essays-5-xhtml-common.xsl" /> <!-- Ok, using the onechunk parameter makes this all work again. --><!-- It does have the disadvantage that it only works for documents thathave --> <!-- a root element that is considered a chunk by the chunk.xslstylesheet. --> <!-- Ideally, onechunk would let anything be a chunk. But nottoday. --> <xsl:param name="onechunk" select="1"/> <xsl:param name="suppress.navigation">1</xsl:param> <xsl:template name="href.target.uri"> <xsl:param name="object" select="."/> <xsl:text>#</xsl:text> <xsl:call-template name="object.id"> <xsl:with-param name="object" select="$object"/> </xsl:call-template> </xsl:template> <!-- Avoid Generating a Table-of-Contents--> <xsl:param name="generate.toc"> article toc </xsl:param> <!-- Disable the title="" attribute in sections. --> <xsl:template name="generate.html.title"> </xsl:template> <!-- <xsl:template match="d:article" priority="1"> <xsl:call-template name="id.warning"/><xsl:element name="{$div.element}" namespace="http://www.w3.org/1999/xhtml"><xsl:call-template name="common.html.attributes"> <xsl:with-param name="inherit" select="1"/> </xsl:call-template> <xsl:call-template name="id.attribute"> <xsl:with-param name="conditional" select="0"/> </xsl:call-template> <xsl:call-template name="article.titlepage"/> <xsl:variable name="toc.params"> <xsl:call-template name="find.path.params"> <xsl:with-param name="table" select="normalize-space($generate.toc)"/> </xsl:call-template> </xsl:variable> <xsl:call-template name="make.lots"> <xsl:with-param name="toc.params" select="$toc.params"/> <xsl:with-param name="toc"> <xsl:call-template name="component.toc"> <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> </xsl:call-template> </xsl:with-param> </xsl:call-template> <xsl:apply-templates/> <xsl:call-template name="process.footnotes"/> </xsl:element> </xsl:template> --> </xsl:stylesheet> [/Q]Previously I had a problem that while everything was in one chunk, the page wasempty. Regards, Shlomi Fish -- ----------------------------------------------------------------- Shlomi Fish http://www.shlomifish.org/ My Public Domain Photos - http://www.flickr.com/photos/shlomif/Ran Eilam To Shlomi Fish: so what are you working on? Working on a new wikiabout unit testing fortunes in freecell? Please reply to list if it's a mailing list post - http://shlom.in/reply .
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]