Difficulty getting Saxon mode in XQuery instead of XSLT

I find it difficult to work with XQuery. I downloaded Saxon-HE 9.2. He seems to want to work only with XSLT.

When I type:

java -jar saxon9he.jar 

I am returning usage information for XSLT. When I use the command syntax for XQuery, it does not recognize parameters (e.g. -q) and provides information about using XSLT.

Here are some command line interactions:

 >java -jar saxon9he.jar No source file name Saxon-HE 9.2.0.6J from Saxonica Usage: see http://www.saxonica.com/documentation/using-xsl/commandline.html Options: -a Use xml-stylesheet PI, not -xsl argument -c:filename Use compiled stylesheet from file -config:filename Use configuration file -cr:classname Use collection URI resolver class -dtd:on|off Validate using DTD -expand:on|off Expand defaults defined in schema/DTD -explain[:filename] Display compiled expression tree -ext:on|off Allow|Disallow external Java functions -im:modename Initial mode -ief:class;class;... List of integrated extension functions -it:template Initial template -l:on|off Line numbering for source document -m:classname Use message receiver class -now:dateTime Set currentDateTime -o:filename Output file or directory -opt:0..10 Set optimization level (0=none, 10=max) -or:classname Use OutputURIResolver class -outval:recover|fatal Handling of validation errors on result document -p:on|off Recognize URI query parameters -r:classname Use URIResolver class -repeat:N Repeat N times for performance measurement -s:filename Initial source document -sa Use schema-aware processing -strip:all|none|ignorable Strip whitespace text nodes -t Display version and timing information -T[:classname] Use TraceListener class -TJ Trace calls to external Java functions -tree:tiny|linked Select tree model -traceout:file|#null Destination for fn:trace() output -u Names are URLs not filenames -val:strict|lax Validate using schema -versionmsg:on|off Warn when using XSLT 1.0 stylesheet -warnings:silent|recover|fatal Handling of recoverable errors -x:classname Use specified SAX parser for source file -xi:on|off Expand XInclude on all documents -xmlversion:1.0|1.1 Version of XML to be handled -xsd:file;file.. Additional schema documents to be loaded -xsdversion:1.0|1.1 Version of XML Schema to be used -xsiloc:on|off Take note of xsi:schemaLocation -xsl:filename Stylesheet file -y:classname Use specified SAX parser for stylesheet --feature:value Set configuration feature (see FeatureKeys) -? Display this message param=value Set stylesheet string parameter +param=filename Set stylesheet document parameter ?param=expression Set stylesheet parameter using XPath !option=value Set serialization option >java -jar saxon9he.jar -q:"..\w3xQueryTut.xq" Unknown option -q:..\w3xQueryTut.xq Saxon-HE 9.2.0.6J from Saxonica Usage: see http://www.saxonica.com/documentation/using-xsl/commandline.html Options: -a Use xml-stylesheet PI, not -xsl argument // etc... >java net.sf.saxon.Query -q:"..\w3xQueryTut.xq" Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/saxon/Query Caused by: java.lang.ClassNotFoundException: net.sf.saxon.Query // etc... Could not find the main class: net.sf.saxon.Query. Program will exit. 

Perhaps I will make some kind of stupid mistake. Do you know what it could be?

UPDATE 1 This command does not work:

 >java -jar saxon9he.jar net.sf.saxon.Query q:"..\w3xQueryTut.xq" Source file net.sf.saxon.Query does not exist 

UPDATE 2 This command works better:

 >dir 03/28/2010 16:07 <DIR> . 03/28/2010 16:07 <DIR> .. 03/27/2010 13:37 849 books.xml 03/27/2010 13:32 <DIR> doc 03/27/2010 13:32 <DIR> notices 03/27/2010 13:32 5,473,874 saxon9he.jar 03/27/2010 13:38 37 w3xQueryTut.xq >java -cp saxon9he.jar net.sf.saxon.Query q:"w3xQueryTut.xq" java.io.FileNotFoundException: q:w3xQueryTut.xq (The system cannot find the path specified) at java.io.FileInputStream.open(Native Method) at java.io.FileInputStream.<init>(Unknown Source) at java.io.FileInputStream.<init>(Unknown Source) at net.sf.saxon.Query.compileQuery(Query.java:885) at net.sf.saxon.Query.doQuery(Query.java:183) at net.sf.saxon.Query.main(Query.java:89) Fatal error during query: java.io.FileNotFoundException: q:w3xQueryTut.xq (The s ystem cannot find the path specified) 

w3xQueryTut.xq:

 doc("books.xml")/bookstore/book/title 

books.xml:

 <?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> 
+4
source share
4 answers

I have no problem with this command line usage :

java -cp C:\xml\Parsers\Saxon\HE-9-2-0-6\saxon9he.jar net.sf.saxon.Query
-q:"C:\Program Files\Oxygen XML Editor 11\samples\xquery\Books\authors.xquery"

+1
source

When you use " java -jar saxon9he.jar ", you ask Java to call the default entry point in the JAR file, which is net.sf.saxon.Transform . To enter at a specific entry point, for example net.sf.saxon.Query , you need to use the form " java -cp saxon9he.jar net.sf.saxon.Query ".

+3
source
  • pre preparations
  • Download Saxon: You must first download the Saxon package at http://sourceforge.net/projects/saxon/ and unzip it at some directory like D:\Program Files\SaxonHE9-5-0-1J .
  • Get the source code: If you want to get the source code, download it at http://nchc.dl.sourceforge.net/project/saxon/Saxon-HE/9.3/saxon-resources9-3.zip before unpacking it into the directory SaxonHE9-5-0-1J;
  • Build workstation: prepare a workstation for you: in SaxonHE9-5-0-1J\iexercise , where you can put your * .xq files and their results; You can also create a directory called icache to store your caches;
  • Let Java know where to find the interpreter: For it to work well for Xquery statements, you need to add the main package for interpreting it in Windows: open a command prompt and go to SaxonHE9-5-0-1J and run saxon9he.jar in jdk1.7.0\lib after copying jdk1.7.0\lib :

    set classpath =.;% java_home% \ lib \ saxon9he.jar

  • Check if this is known: Thus, you can usually run xquery scripts immediately after step 4. If you are not sure about this, run it: java net.sf.saxon.Query 2. Prepare your first run

  • Create a file (for example, with the name test.xq) with the affixes .xq, .xquery or .xqy in iexercise, its contents are displayed below:

    doc ("catalog.xml") / catalog / product [@dept = "ACC"]

  • Copy the pre-made catalog.xml file to. /.

  • Run java net.sf.saxon.Query -q:test.xq -o:result.xml first argument tells the interpreter to compile the xquery file, which is your work in step 1.4, -q: filename is the file that will be compiled with xquery instructions, and the third shows where to put the result; if not specified, will be displayed on standard output.

Directory File:

 <catalog> <product dept="WMN"> <number>557</number> <name language="en">Fleece Pullover</name> <colorChoices>navy black</colorChoices> </product> <product dept="ACC"> <number>563</number> <name language="en">Floppy Sun Hat</name> </product> <product dept="ACC"> <number>433</number> <name language="en">Deluxe Travel Bag</name> </product> <product dept="MEN"> <number>784</number> <name language="en">Cotton Dress Shirt</name> <colorChoices>white green</colorChoices> <desc>Our <i>favorite</i> shirt!</desc> </product> </catalog> 
+1
source

Please note that the saxon documentation does not say

 java -jar saxon9he.jar net.sf.saxon.Query -q:myQuery.xql 

(this is not a jar executable, and you don't need -q at all if the last xql file) will therefore work

 java net.sf.saxon.Query myQuery.xql 

or

 java -cp C:\downloads\saxon\saxon9he.jar net.sf.saxon.Query myQuery.xql 
0
source

Source: https://habr.com/ru/post/1305372/


All Articles