Re: [basex-talk] xslt:transform function not working with XML Catalog

2020-07-09 Thread Lizzi, Vincent
Hi Liam,

Thanks for the helpful suggestions. After trying everything you suggested and 
then also trying a few of Saxon's configuration options, unfortunately I'm 
still having the same problem. Trying a shell script that contains the 
following:

MAIN="$( cd -P "$(dirname "$FILE")/../basex" && pwd )"
CP=$MAIN/BaseX.jar:$MAIN/lib/custom/*:$MAIN/lib/*:$CLASSPATH
echo 1 Saxon
java -cp "$CP" net.sf.saxon.Transform -s:input1.xml -xsl:transform.xsl 
-catalog:schemas/catalog.xml
echo 2 BaseX transform
java -cp "$CP" org.basex.BaseX -q"(# db:catfile schemas/catalog.xml #) (# 
db:intparse false #) (# db:dtd true #) (# db:chop false #) { 
xslt:transform('input1.xml', 'transform.xsl') }"
echo 3 BaseX transform with Saxon features configured
java 
-Dhttp://saxon.sf.net/feature/entityResolverClass=org.apache.xml.resolver.tools.CatalogResolver
 
-Dhttp://saxon.sf.net/feature/uriResolverClass=org.apache.xml.resolver.tools.CatalogResolver
 -cp "$CP" org.basex.BaseX -q"(# db:catfile schemas/catalog.xml #) (# 
db:intparse false #) (# db:dtd true #) (# db:chop false #) { 
xslt:transform('input1.xml', 'transform.xsl') }"
echo 4 BaseX doc to show XML Catalog is configured correctly to parse XML
java -cp "$CP" org.basex.BaseX -q"(# db:catfile schemas/catalog.xml #) (# 
db:intparse false #) (# db:dtd true #) (# db:chop false #) { doc('input1.xml') 
}"

The classpath includes BaseX 9.3.3, Saxon HE 9.9, xml-resolver-1.2.jar, and 
CatalogManager.properties


  1.  The transformation works in Saxon and uses the catalog file to locate the 
DTD when parsing the XML input1.xml.
  2.  The BaseX xslt:transform should work the same as #1, but fails because 
the DTD cannot be read
  3.  Adding Saxon configuration for Entity Resolver Class and URI Resolve 
Class did not help
  4.  Simply parsing the XML using doc() in BaseX with the same configuration 
shows that the XML catalog is configured correctly within BaseX

Using strace -f, the log shows that BaseX xslt:transform is reading the 
catalog.xml file from disk, and then is trying (and failing) to read the DTD 
from the non-working URIL.

This might be a bug in xslt:transform, so the workaround of using a regular 
expression replace on the DOCTYPE system URI is probably the practical solution.

Many thanks,
Vincent


_
Vincent M. Lizzi
Head of Information Standards | Taylor & Francis Group
vincent.li...@taylorandfrancis.com




Information Classification: General
From: Liam R. E. Quin 
Sent: Thursday, July 9, 2020 12:55 PM
To: Lizzi, Vincent ; BaseX 

Subject: Re: [basex-talk] xslt:transform function not working with XML Catalog

On Thu, 2020-07-09 at 04:32 +, Lizzi, Vincent wrote:
> Hi Liam,
>
> Thanks for the reply and suggestions. Based on your suggestion I
> tried pragmas and strace, and had another go at
> CatalogManager.properties, but they've not had any effect.

use, strace -f java >& hugelogfile.txt
and after, grep -i catalogmanager.properties hugelogfile.txt
and you should see where it's looking. If it doesn't look for that
file, check to see if it opened the jar file containing the resolver.

If you're running BaseX from Oxygen, Oxygen needs to have it in its
classpath too i think.

Also, of course, see if the catalog file is actually being opened!

I actually wrote some of the code in BaseX that makes XML catalogs work
with transform(), or provided a rough draft that Christian improved :),
and debugging it was... interesting.

I'd also try an absolute path for the catalog file - if you are using
the BaseX server, relative paths will be relative to the directory
(folder) where the server itself is running. (and of course the server
needs the resolver in its classpath).

Messages from the catalog manager seem to go (oddly) to standard
output interleaved with any XML output.

The command-line i used for testing this (well, one of the tests) was,

R=$HOME/lib/xmlcatalog/xml-commons-resolver-1.2/resolver.jar
MAIN=$HOME/packages/basex/basex

java -Dxml.catalog.files=saxlog.xml -D'
http://saxon.sf.net/feature/uriResolverClass=org.apache.xml.resolver.tools.CatalogResolver'
-cp
$R/resolver.jar:/home/lee/packages/basex/basex/BaseX.jar:$MAIN/lib/cust
om/*:$MAIN/lib/*: org.basex.BaseX try.xq

(Saxon was in $MAIN)

>
--
Liam Quin, 
https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations: 
http://www.fromoldbooks.org


Re: [basex-talk] xslt:transform function not working with XML Catalog

2020-07-09 Thread Liam R. E. Quin
On Thu, 2020-07-09 at 04:32 +, Lizzi, Vincent wrote:
> Hi Liam,
> 
> Thanks for the reply and suggestions. Based on your suggestion I
> tried pragmas and strace, and had another go at
> CatalogManager.properties, but they've not had any effect. 

use, strace -f java >& hugelogfile.txt
and after, grep -i catalogmanager.properties hugelogfile.txt
and you should see where it's looking. If it doesn't look for that
file, check to see if it opened the jar file containing the resolver.

If you're running BaseX from  Oxygen, Oxygen needs to have it in its
classpath too i think.

Also, of course, see if the catalog file is actually being opened!

I actually wrote some of the code in BaseX that makes XML catalogs work
with transform(), or provided a rough draft that Christian improved :),
and debugging it was... interesting.

I'd also try an absolute path for the catalog file - if you are using
the BaseX server, relative paths will be relative to the directory
(folder) where the server itself is running. (and of course the server
needs the resolver in its classpath).

Messages from  the catalog manager seem to go (oddly) to standard
output interleaved with any XML output.

The command-line i used for testing this (well, one of the tests) was,

R=$HOME/lib/xmlcatalog/xml-commons-resolver-1.2/resolver.jar
MAIN=$HOME/packages/basex/basex

java -Dxml.catalog.files=saxlog.xml -D'
http://saxon.sf.net/feature/uriResolverClass=org.apache.xml.resolver.tools.CatalogResolver'
-cp
$R/resolver.jar:/home/lee/packages/basex/basex/BaseX.jar:$MAIN/lib/cust
om/*:$MAIN/lib/*: org.basex.BaseX  try.xq 

(Saxon was in $MAIN)

> 
-- 
Liam Quin, https://www.delightfulcomputing.com/
Available for XML/Document/Information Architecture/XSLT/
XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
Barefoot Web-slave, antique illustrations:  http://www.fromoldbooks.org



Re: [basex-talk] Enabling Xerces2 XML Schema processor

2020-07-09 Thread Omar Siam
You need to download the Xerces2 Java 2.12.1 (XML Schema 1.1) variant: 
Xerces-J-bin.2.12.1-xml-schema-1.1.zip .


Am 09.07.2020 um 17:25 schrieb Yasir B:

Hello,

Very new to this - seeking help on how to enable the Xerces2 XML 
Schema processor as described in 
https://docs.basex.org/wiki/Validation_Module#XML_Schema_Validation


I downloaded the Xerces2 Java 2.12.1, but could not find the following 
jar files: org.eclipse.wst.xml.xpath2.processor_1.2.0.jar,

cupv10k-runtime.jar

Thank you


--
Mag. Ing. Omar Siam
Austrian Center for Digital Humanities and Cultural Heritage
Österreichische Akademie der Wissenschaften | Austrian Academy of Sciences
Wohllebengasse 12-14, 1040 Wien, Österreich | Vienna, Austria
T: +43 1 51581-7295
omar.s...@oeaw.ac.at | www.oeaw.ac.at/acdh



Re: [basex-talk] xslt:transform function not working with XML Catalog

2020-07-09 Thread Imsieke, Gerrit, le-tex

Is the catalog schemas/catalog.xml residing in file:current-dir()?

On 09.07.2020 16:02, Lizzi, Vincent wrote:

Hi Gerrit,

Thank you for the hint! Removing quotes from the pragma did not work in 
this case.


   (# db:catfile schemas/catalog.xml #)

The catalog file is also configured at the beginning of the query:

declare option db:catfile 'schemas/catalog.xml';

This detail about not needing quotes in a pragma is worth remembering 
though!.


Vincent



Re: [basex-talk] xslt:transform function not working with XML Catalog

2020-07-09 Thread Lizzi, Vincent
Hi Gerrit,

Thank you for the hint! Removing quotes from the pragma did not work in this 
case.

  (# db:catfile schemas/catalog.xml #)

The catalog file is also configured at the beginning of the query:

declare option db:catfile 'schemas/catalog.xml';

This detail about not needing quotes in a pragma is worth remembering though!.

Vincent



_
Vincent M. Lizzi
Head of Information Standards | Taylor & Francis Group
vincent.li...@taylorandfrancis.com




Information Classification: General
From: BaseX-Talk  On Behalf Of 
Imsieke, Gerrit, le-tex
Sent: Thursday, July 9, 2020 1:18 AM
To: basex-talk@mailman.uni-konstanz.de
Subject: Re: [basex-talk] xslt:transform function not working with XML Catalog

Hi Vincent,

I feel your pain. Maybe this comment helps:
https://github.com/BaseXdb/basex/issues/1793#issuecomment-579134499
(omit the quotes in the pragma).

I documented it here, too:
https://docs.basex.org/wiki/Catalog_Resolver#Additional_Notes
"The catalog location in the pragma can be given relative to the current
working directory (the directory that is returned by file:current-dir())
or as an absolute operating system path. The catalog location in the
pragma is not an XQuery expression; no concatenation or other operations
may occur in the pragma, and the location string must not be surrounded
by quotes."

Gerrit

On 09.07.2020 06:32, Lizzi, Vincent wrote:
> Hi Liam,
>
> Thanks for the reply and suggestions. Based on your suggestion I tried
> pragmas and strace, and had another go at CatalogManager.properties, but
> they've not had any effect. (I'm using Windows 10 but was able to run
> strace in Ubuntu via WSL). This query:
>
> try {
>
>   (# db:catfile 'schemas/catalog.xml' #)
>
>   (# db:intparse false #)
>
>   (# db:dtd true #)
>
>   (# db:chop false #)
>
>   { xslt:transform('file.xml', 'stylesheet.xsl')//inlinegraphic }
>
> } catch * { $err:description }
>
> Produces the same error again due to the DTD not being available at the
> system literal URI.
>
> I did try setting verbosity 99 in a CatalogManager.properties file on
> the classpath, but this did not produce any additional messages. I also
> tried setting the same properties directly when launching BaseX this did
> not work either. Specifically, I set the following system properties
> when launching BaseX, and then used proc:property() in a query to
> confirm that these system properties were in fact set.
>
> 'xml.catalog.verbosity': '99'
>
> 'xml.catalog.ignoreMissing': 'no'
>
> 'xml.catalog.catalog-class-name': 'org.apache.xml.resolver.Resolver'
>
> 'xml.catalog.files': 'schemas/catalog.xml'
>
> xml-resolver-1.2.jar and Saxon are definitely on the classpath.
>
> Thanks,
>
> VIncent
>
> _
>
> *Vincent M. Lizzi*
>
> Head of Information Standards | Taylor & Francis Group
>
> vincent.li...@taylorandfrancis.com
> 
>
>
> Information Classification: General
>
> *From:* Liam R. E. Quin mailto:l...@fromoldbooks.org>>
> *Sent:* Wednesday, July 8, 2020 10:28 PM
> *To:* Lizzi, Vincent 
> mailto:vincent.li...@taylorandfrancis.com>>;
>  BaseX
> mailto:basex-talk@mailman.uni-konstanz.de>>
> *Subject:* Re: [basex-talk] xslt:transform function not working with XML
> Catalog
>
> On Wed, 2020-07-08 at 22:46 +, Lizzi, Vincent wrote:
> > I've encountered a problem using xslt:transform in to transform some
> > old XML that contains a DTD DOCTYPE system literal pointing to a non-
> > working URI and also uses ENTITYREF attributes to refer to image
> > files. I have the XML Catalog configured correctly using CATFILE.
>
>
> If this is on Linux, using strace can help check which catalog file is
> being used; you can also turn on debugging in a
> CatalogManager.properties file containing the line
> verbosity = 999
> (thee file needs to be in your Java classpath).
>
> There's also a BaseX pragma, (# db:catfile path/to/catalog.xml #) {
> transform(...)
> }
>
> You need to turn off the BaseX internal parser.
>
> Make sure that the resolver library and of course saxon are in your
> class path.
>
> You may need to add,
> declare option db:catfile "path/relative/to/cwd/catalog.xml";
> to your query.
>
> Liam
>
> --
> Liam Quin, 
> https://www.delightfulcomputing.com/
> >
> Available for XML/Document/Information Architecture/XSLT/
> XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
> Barefoot Web-slave, antique illustrations: 
> http://www.fromoldbooks.org
>

--
Gerrit Imsieke
Geschäftsführer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229