Search code examples
xsltxquerysaxonexist-dbtei

eXist-DB transformation failure with XSLT - where to find error log?


Environment: eXist 4.2.1 - xquery 3.1 - xslt 3.0 - TEI-XML document

Using the eXide interface, I am attempting to do a transformation of a TEI-XML document with an XSL file, with an output of HTML.

Until now I have been developing XML documents and their XSL transformations in Oxygen. Firing off the transformations in Oxygen or using a terminal, both have been working error free. Now I am preparing a web application using eXist (which will contains the thousands of TEI-XML docs).

I am trying to simply fire off the same transformation in eXist with the following xquery test:

let $result := transform:transform(doc("xmldb:exist://db/apps/deheresi/resources/documents/ms609_0001.xml"), doc("xmldb:exist://db/apps/deheresi/resources/documents/document_style.xsl"), ())

return $result?output

eXide returns me only this:

exerr:ERROR Unable to set up transformer: Stylesheet compilation failed: 62 errors reported [at line 3, column 16]

I'm new at eXist DB and have not been able to figure out how to get the reasons for errors.

  1. How do I access the error details (detail log?) in eXist? (I have searched without success my books and online documentation; for example https://exist-db.org/exist/apps/doc/xsl-transform doesn't help at all on errors).

  2. For Oxygen and terminal transformations, I use Saxon 9he. I understand that eXist uses the same?

NB: my documents are all organized in an eXist collection identical to the setup on my computer, thus all relative locations should function correctly?


Solution

  • First - when using doc and collection functions for the paths in the database you don't need the XML:DB URI, instead you can just use:

    transform:transform(doc("/db/apps/deheresi/resources/documents/ms609_0001.xml"),
            doc("/db/apps/deheresi/resources/documents/document_style.xsl"), ())
    

    The errors should be in exist.log the default location for that is $EXIST_HOME/webapp/WEB-INF/logs. You might otherwise find them on the "Standard Out" of the terminal session which is running eXist-db.

    If you are using the YAJSW (Service Wrapper) to run eXist-db you might also need to check $EXIST_HOME/tools/yajsw/logs.