[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] changing from xsltproc to saxon
Hi Niels,
I have
found that the Java catalog resolver and xsltproc catalog
resolver can have different behaviors. I can't remember the
particulars but it had to do with the catalog being consulted
even when the path exists as specified.
In this case, the problem is using the name "docbook.xsl", because that first resolves to your custom stylesheet, which imports chunk.xsl which in turn imports docbook.xsl, which triggers the catalog lookup again even though you don't intend it a second time.
Try
changing your catalog and Makefile to use mydocbook.xsl
instead.
Bob Stayton bobs@sagehill.net
Hi again Bob I changed the makefile to: sax: rm -rf site mkdir site cp css/* site cp js/* site xmllint --noent --xinclude \ module.xml > /tmp/docbresolved.xml \ 2>./errloglint java com.icl.saxon.StyleSheet \ -x org.apache.xml.resolver.tools.ResolvingXMLReader \ -y org.apache.xml.resolver.tools.ResolvingXMLReader \ -r org.apache.xml.resolver.tools.CatalogResolver \ -u \ -o site/index.html \ /tmp/docbresolved.xml \ docbook.xsl \ base.dir="site" \ use.extensions=1 \ 2>./errlogxslt tar czf site.tgz site/* echo "site.tgz ready for deployment" The catalog should then translate 'docbook.xsl' to <uri name="docbook.xsl" uri=".docbook/docbook.custom.xsl" /> The output from verbosity 4 is: Parse catalog: file:/home/nml/.docbook/catalog.xml Loading catalog: file:/home/nml/.docbook/catalog.xml Default BASE: file:/home/nml/.docbook/catalog.xml xml:base: file:///home/nml/ BASE STR: file:///home/nml/ rewriteSystem: http://www.oasis-open.org/docbook/xml/4.5/ .docbook/ REWRITE_SYSTEM: http://www.oasis-open.org/docbook/xml/4.5/ file:/home/nml/.docbook/ rewriteURI: http://docbook.sourceforge.net/release/xsl/current/ xsl-stylesheets-1.79.2/ REWRITE_URI: http://docbook.sourceforge.net/release/xsl/current/ file:/home/nml/xsl-stylesheets-1.79.2/ rewriteURI: file:///basics/ .docbook/ REWRITE_URI: file:///basics/ file:/home/nml/.docbook/ system: uvmat_entities.ent .docbook/uvmat_entities.ent SYSTEM: uvmat_entities.ent file:/home/nml/.docbook/uvmat_entities.ent uri: docbook.xsl .docbook/docbook.custom.xsl URI: docbook.xsl file:/home/nml/.docbook/docbook.custom.xsl uri: docbook.fo.xsl .docbook/docbook.custom.fo.xsl URI: docbook.fo.xsl file:/home/nml/.docbook/docbook.custom.fo.xsl uri: docbook.slides.xsl .docbook/docbook.custom.slides.xsl URI: docbook.slides.xsl file:/home/nml/.docbook/docbook.custom.slides.xsl uri: file:///foo/biblio.xml .docbook/biblio.xml URI: file:///foo/biblio.xml file:/home/nml/.docbook/biblio.xml (reset) xml:base: file:/home/nml/.docbook/catalog.xml BASE STR: file:/home/nml/.docbook/catalog.xml resolveURI(/tmp/docbresolved.xml) resolveURI(/tmp/docbresolved.xml) Resolved URI: /tmp/docbresolved.xml file:/tmp/docbresolved.xml resolveURI(docbook.xsl) Resolved URI: docbook.xsl file:/home/nml/.docbook/docbook.custom.xsl resolveSystem(file:/home/nml/.docbook/docbook.custom.xsl) resolveSystem(file:/home/nml/docbook/uvmat_entities.ent) resolveSystem(file:/home/nml/docbook/xhtml-lat1.ent) resolveSystem(file:/home/nml/docbook/xhtml-symbol.ent) resolveSystem(file:/home/nml/docbook/xhtml-special.ent) resolveSystem(file:/home/nml/docbook/hsizes.ent) resolveURI(/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl) Resolved URI: /usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl resolveSystem(file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl) resolveURI(docbook.xsl) Resolved URI: docbook.xsl file:/home/nml/.docbook/docbook.custom.xsl resolveURI(/home/nml/docbook/docbook.common.custom.xsl) Resolved URI: /home/nml/docbook/docbook.common.custom.xsl file:/home/nml/docbook/docbook.common.custom.xsl resolveSystem(file:/home/nml/docbook/docbook.common.custom.xsl) resolveSystem(file:/home/nml/docbook/uvmat_entities.ent) resolveSystem(file:/home/nml/docbook/xhtml-lat1.ent) resolveSystem(file:/home/nml/docbook/xhtml-symbol.ent) resolveSystem(file:/home/nml/docbook/xhtml-special.ent) resolveSystem(file:/home/nml/docbook/hsizes.ent) make: *** [Makefile:23: sax] Error 2 which as far as I can see is correct the error message is now: Error at xsl:import on line 15 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl: A stylesheet cannot import itself Transformation failed: Failed to compile stylesheet. 1 error detected. This puzzles me because I use the same stylesheet when I run with xsltproc without problems. The installation has: nmlX240 TheModelChapter $ ls /usr/share/xml/docbook docbook-xsl-1.79.2 xml-dtd-4.2 xml-dtd-4.4 xsl-stylesheets-1.79.2 xml-dtd-4.1.2 xml-dtd-4.3 xml-dtd-4.5 xsl-stylesheets-1.79.2-nons Cheers /Niels On Sat, 28 Mar 2020 14:37:22 -0700 Bob Stayton <bobs@sagehill.net> wrote:I think what is happening is your XSL URL is directly calling the chunk.xsl file, which import docbook.xsl, which is getting mapped by the catalog file to use: <uri  name="docbook.xsl"  uri=".docbook/docbook.custom.xsl" /> which then reimports the DocBook stylesheet file. Try setting verbosity=4 in your CatalogManager.properties file and watch how the catalog is being used. Bob Stayton bobs@sagehill.net On 3/28/2020 11:40 AM, Niels MÃller Larsen wrote:Thanks for speedy reply. My catalog looks as follows: <?xml version="1.0"?> <!DOCTYPE catalog PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd"> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"> <!-- DTD and stylesheet files installed under /usr/share/xml --> <group xml:base="file:///home/nml/"> <!-- Resolve DTD URL system ID to local file --> <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5/" rewritePrefix=".docbook/" /> <!-- Resolve stylesheet URL to local file --> <rewriteURI uriStartString="http://docbook.sourceforge.net/release/xsl/current/" rewritePrefix='xsl-stylesheets-1.79.2/' /> <rewriteURI uriStartString="file:///basics/" rewritePrefix=".docbook/" /> <!-- To resolve simple DTD SYSTEM identifiers. --> <!-- Note: this does not work with Java resolver --> <!-- classes in Saxon or Xalan --> <system systemId="uvmat_entities.ent" uri=".docbook/uvmat_entities.ent" /> <!-- To resolve short stylesheet references --> <uri name="docbook.xsl" uri=".docbook/docbook.custom.xsl" /> <uri name="docbook.fo.xsl" uri=".docbook/docbook.custom.fo.xsl" /> <uri name="docbook.slides.xsl" uri=".docbook/docbook.custom.slides.xsl" /> <uri name="file:///foo/biblio.xml" uri=".docbook/biblio.xml"/> </group> </catalog> And my docbook.custom.xsl: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE stylesheet [ <!ENTITY % uvmatent SYSTEM "/home/nml/docbook/uvmat_entities.ent"> %uvmatent; ]> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0"> <!-- Customization xsl stylesheet for docbook to chunked html transform --> <!-- import base stylesheet --> <!-- <xsl:import href=""/> --> <!-- <xsl:import href=""/> --> <xsl:import href=""/> <!-- customization vars --> <xsl:import href=""/> </xsl:stylesheet> The docbook.common.custom.xsl just holds a series of parameters /Niels On Sat, 28 Mar 2020 11:29:22 -0700 Bob Stayton <bobs@sagehill.net> wrote:I think the first error message is the most informative. This file: /home/nml/.docbook/docbook.custom.xsl is not part of the DocBook XSL distribution, and it does not seem to be mentioned in your Makefile. Have you examined that file to see what it is? I suspect the catalog resolver is mapping the stylesheet URL to that file. Bob Stayton bobs@sagehill.net On 3/28/2020 11:14 AM, Niels MÃller Larsen wrote:When producing html output from my docbook I use the following fragment of a Makefile: html: rm -rf site mkdir site cp css/* site cp js/* site xmllint --noent --xinclude \ module.xml > /tmp/docbresolved.xml \ 2>./errloglint xsltproc \ --output site/ \ docbook.xsl \ /tmp/docbresolved.xml \ 2>./errlogxslt && \ tar czf site.tgz site/* echo "site.tgz ready for deployment" This works, and it has worked for a long time. I write about coding, so I have some need to change to using saxon for added functionality with respect to linenumbering and code highlighting. The first step would be a 1:1 change, and I have tried: html: rm -rf site mkdir site cp css/* site cp js/* site xmllint --noent --xinclude \ module.xml > /tmp/docbresolved.xml \ 2>./errloglint java com.icl.saxon.StyleSheet \ -x org.apache.xml.resolver.tools.ResolvingXMLReader \ -y org.apache.xml.resolver.tools.ResolvingXMLReader \ -r org.apache.xml.resolver.tools.CatalogResolver \ -u \ -o site/index.xhtml \ /tmp/docbresolved.xml \ /usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml5/chunk.xsl \ base.dir="site" \ use.extensions=1 \ 2>./errlogxslt tar czf site.tgz site/* echo "site.tgz ready for deployment" This gives me errors: Error at xsl:import on line 16 of file:/home/nml/.docbook/docbook.custom.xsl: A stylesheet cannot import itself Error at xsl:when on line 25 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml/chunk-common.xsl: Variable exsl.node.set.available has not been declared Error at xsl:if on line 26 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml/chunk-common.xsl: Variable chunk.quietly has not been declared Error at xsl:apply-templates on line 29 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml/chunk-common.xsl: Variable with.namespace has not been declared Error at xsl:when on line 31 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml/chunk-common.xsl: Variable exsl.node.set.available has not been declared Error at xsl:if on line 32 of file:/usr/share/xml/docbook/xsl-stylesheets-1.79.2/xhtml/chunk-common. ...... I have tried many variations and several stylesheets, this just changes the error messages I get. Does anyone have an example of a workflow that works? Chunked output is a must.
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]