Project

Profile

Help

How to connect?
Download (83.6 KB) Statistics
| Branch: | Revision:

he / src / userdoc / about.xml @ 8ddaa514

1
<?xml version="1.0" encoding="utf-8"?>
2
<article id="about" title="About Saxon">
3
   <h1>About Saxon</h1>
4

    
5
   <p>
6
      <i>If you need help finding your way around this documentation, there is a full <a
7
            href="../help-system" class="bodylink">guide to the documentation system</a>.</i>
8
   </p>
9

    
10
   <p>There are many changes in Saxon 10. These changes, together with a full history of changes in
11
      previous releases are comprehensively listed in the <a class="bodylink" href="/changes">Change
12
         History</a>.</p>
13

    
14
   <p>Saxon 10 includes highly conformant implementations of the current W3C Recommendations: XSLT
15
      3.0, XQuery 3.1, XPath 3.1, and XSD 1.1. See <a class="bodylink" href="/conformance">Standards
16
         Conformance</a> for more details.</p> 
17

    
18
   <p>Support for older specifications such as XSLT 2.0 and XQuery 1.0 has been dropped, but of course
19
      the newer specifications have a high level of backwards compatibility so existing code should
20
      continue to run without any problems. Support for two superseded specifications is retained
21
      for the time being: XSD 1.0 and XPath 2.0.</p>
22
   
23
   <p>XSLT 2.0 and 3.0 define a "backwards compatibility mode" for running XSLT 1.0 stylesheets:
24
      this is available in all Saxon editions.</p>
25

    
26

    
27

    
28
   <p>This documentation covers three Saxon editions: home, professional, and enterprise (HE, PE,
29
      and EE). The Home Edition remains open source (under the Mozilla Public License 2.0). An
30
      outline of what is present in each edition can be found in the <a class="bodylink"
31
         href="http://www.saxonica.com/products/feature-matrix-9-9.xml">feature matrix</a>. Broadly
32
      speaking:</p>
33
  <ul>
34
    <li>Saxon-HE includes support for published W3C recommendations at the minimum
35
      conformance level;</li>
36
    <li>Saxon-PE includes support for optional W3C features and for Saxon
37
      extensions;</li>
38
    <li>Saxon-EE includes features needed for advanced applications and high
39
      performance.</li>
40
  </ul> 
41
  <p>See also <a class="bodylink" href="packages">Choosing a software package</a>.</p>
42

    
43

    
44
   <p>This documentation covers Saxon on both the Java and .NET platforms. Much of it is also applicable
45
   to the Saxon/C product, but you should check the Saxon/C documentation for aspects specific to that platform.
46
   The same applies to Saxon-JS.</p>
47

    
48

    
49
   <aside>This documentation (including full API documentation for both the Java and .NET platforms)
50
      is provided on the <a href="http://www.saxonica.com/" class="bodylink">Saxonica</a> website.
51
      It is also included in the <code>saxon-resources-10.zip</code> file available for download
52
      either from <a href="http://sourceforge.net/project/showfiles.php?group_id=29872"
53
         class="bodylink">SourceForge</a> or from the <a
54
            href="http://www.saxonica.com/download/download_page.xml" class="bodylink">Saxonica
55
            download page</a>. The resources file is separate from the software download, and it
56
      includes sample applications as well as this documentation for all editions (Saxon-HE, -PE,
57
      and -EE) on both platforms. Saxon-HE source code for the latest release is also available for
58
      download from the SourceForge project page.</aside>
59

    
60
   <p><a href="/javadoc" class="apilink">JavaDoc API specifications</a> and <a href="/dotnetdoc"
61
         class="apilink">.NET API specifications</a> are also available.</p>
62

    
63
   <p>A full <a class="bodylink" href="/changes">change log</a> is provided.</p>
64

    
65

    
66
   <section id="gettingstarted" title="Getting Started">
67
      <h1>Getting Started</h1>
68

    
69
      <p>If you are new to Saxon, or to Java, or to XML, XSLT, and XQuery, this section provides a
70
         quick checklist of the things you need to do before you can run your first application.</p>
71

    
72
      <p>First decide which platform you want to use. If you already use either the Java or .NET
73
         platform, it's simplest to use the platform you are familiar with. If you don't use either
74
         of these platforms, we recommend starting with Java, as Saxon has been available on Java
75
         for longer and this version is therefore better integrated and better documented. If you
76
         currently use both, then the choice largely depends on what language you want to use to
77
         write your own applications.</p>
78
      <nav>
79
         <ul/>
80
      </nav>
81

    
82
      <section id="gettingstartedjava" title="Getting started with Saxon on the Java platform">
83
         <h1>Getting started with Saxon on the Java platform</h1>
84

    
85
         <p>Saxon doesn't come with a graphical user interface: it's designed to be integrated into
86
            other tools and applications. You will therefore start by using it from the operating
87
            system command line. On Windows, you may want to install a text editor such as
88
               <code>jEdit</code> that offers a more friendly command line than the standard DOS
89
            console provided by Microsoft.</p>
90

    
91
         <p>Alternatively, Saxon is integrated with popular XML development environments such as <a
92
               class="bodylink" href="http://www.oxygenxml.com/">Oxygen XML Editor</a> and <a class="bodylink"
93
               href="http://www.stylusstudio.com/">Stylus Studio</a>, which will handle all the
94
            installation dependencies.</p>
95
         <ol>
96
            <li>
97
               <p>Ensure that Java is installed. Saxon 10 requires Java 8 or later. If for some
98
                  reason you need to run with an earlier Java release, Saxon 9.8 ran with Java SE 6 or later. 
99
                  To check that Java is installed, try typing <code>java -version</code>
100
                  at the command prompt. If it is not installed, you can <a
101
                     href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"
102
                     class="bodylink">get the software from Oracle</a>.</p>
103
            </li>
104
            <li>
105
               <p>Download the Saxon software (you will typically start with the open-source version
106
                  Saxon-HE) from <a
107
                     href="http://sourceforge.net/project/showfiles.php?group_id=29872"
108
                     class="bodylink">SourceForge</a>. Alternatively, the commercial versions of the
109
                  product (Saxon-PE and Saxon-EE) can be downloaded from <a
110
                     href="http://www.saxonica.com/" class="bodylink">www.saxonica.com</a>. Because
111
                  the software is pure Java, the same version applies whether you are using Java on
112
                  Windows, Linux, or Mac OS/X.</p>
113
            </li>
114
            <li>
115
               <p>The software comes as a zip file. Unzip it into a suitable directory, for example
116
                     <code>c:\saxon</code>.</p>
117
            </li>
118
            <li>
119

    
120
               <p>To check that the software is working, try running a simple query from the command
121
                  line, as follows. The filename after the "-cp" flag should match the location
122
                  where you installed the software. The file will be called
123
                     <code>saxon-he-10.0.jar</code> for Saxon Home Edition, <code>saxon-pe-10.0.jar</code> for
124
                  the Professional Edition, or <code>saxon-ee-10.0.jar</code> for the Enterprise
125
                  Edition (where the "10.0" in the name will change to "10.1", "10.2", etc. in
126
                  subsequent maintenance releases):</p>
127

    
128
               <kbd>java -cp c:\saxon\saxon-he-10.0.jar net.sf.saxon.Query -t -qs:"current-date()"</kbd>
129

    
130
               <p>Here <strong>java</strong> tells the operating system to run the Java virtual
131
                  machine; the filename after <strong>-cp</strong> is known as the classpath, and
132
                  tells Java where to find the Saxon application software;
133
                     <strong>net.sf.saxon.Query</strong> is the Saxon entry point for the XQuery
134
                  processor; the option <strong>-t</strong> tells Saxon to report what it is doing
135
                  on the console; and the option <strong>-qs:"current-date()"</strong> tells Saxon to
136
                  run the simple query <code>current-date()</code>, which returns the current date
137
                  and displays the result on the console.</p>
138

    
139
               <p>If this doesn't work, there are three possible reasons: the operating system can't
140
                  find the Java software; Java can't find the Saxon software; or Saxon has been
141
                  invoked, but has failed to run your query. The error message should give you a
142
                  clue which of these is the case.</p>
143
            </li>
144
            <li>
145
               <p>As a first-time user, you will probably want to install the sample applications.
146
                  These are packaged together with a copy of this documentation in the file
147
                  <code>saxon-resources-10.zip</code>. This can be downloaded from
148
                  either the SourceForge or Saxonica sites (it is the same file in both cases).
149
                  Unzip the contents of this file into the same directory as the Saxon software.
150
                  When you run a program that uses Saxon, this program as well as Saxon itself will
151
                  need to be on the classpath. For more details of the classpath, see <a
152
                     class="bodylink" href="../../installationjava">Installing (Java)</a>.</p>
153
            </li>
154
           <li><p>You might also like to experiment with the <a
155
             class="bodylink" href="/gizmo">Gizmo</a> tool. This is a simple interactive command-line
156
           application allowing you to display, search, and modify XML files from a terminal, as
157
           well as to invoke XSD validation and XSLT transformations. It is a useful testbed for
158
           trying out XPath expressions, or for examining the structure of unfamiliar XML documents.</p></li>
159
            <li>
160
               <p>If you are using features specific to Saxon-PE or Saxon-EE (the commercial
161
                  editions of Saxon), you will need to obtain a file containing a licence key. You
162
                  can apply for a free 30-day evaluation license key by going to <a
163
                     href="http://www.saxonica.com/" class="bodylink">www.saxonica.com</a> and
164
                  clicking on "Download / Evaluation License". The license key file will be sent by email
165
                  within 24 hours. This file, called <code>saxon-license.lic</code>, should be
166
                  placed in the same directory where the file <code>saxon-pe-10.#.jar</code> or
167
                     <code>saxon-ee-10.#.jar</code> is found. <i>When running Saxon from the command
168
                     line, it not usually necessary for the directory containing the license file
169
                     to be on the classpath. </i> For more details on Saxon license keys, see the <a
170
                     class="bodylink" href="../../license">Saxon Licenses</a> section. </p>
171
            </li>
172
         </ol>
173

    
174
         <p>You can now run one of the sample stylesheets or queries that comes with the
175
               <code>saxon-resources</code> download. Assuming you installed Saxon-HE into
176
               <code>c:\saxon</code>, make this your current directory, and type:</p>
177

    
178
         <p>
179
            <i>for XSLT (all on one line):</i>
180
         </p>
181
         <samp><![CDATA[java -cp saxon-he-10.0.jar net.sf.saxon.Transform -t -s:samples\data\books.xml 
182
     -xsl:samples\styles\books.xsl -o:c:\temp.html]]></samp>
183

    
184
         <p>
185
            <i>for XQuery (all on one line):</i>
186
         </p>
187
         <samp><![CDATA[java -cp saxon-he-10.0.jar net.sf.saxon.Query -t 
188
   -s:samples\data\books.xml -q:samples\query\books-to-html.xq -o:c:\temp.html]]></samp>
189

    
190
         <p>Now open <code>c:\temp.html</code> in your browser to check that it worked.</p>
191

    
192
         <p>For more details on installing Saxon on the Java platform, see <a class="bodylink"
193
               href="../../installationjava">Installing (Java)</a>.</p>
194
      </section>
195

    
196
      <section id="gettingstarteddotnet" title="Getting started with Saxon on the .NET platform">
197
         <h1>Getting started with Saxon on the .NET platform</h1>
198

    
199
         <p>Saxon doesn't come with a graphical user interface: it's designed to be integrated into
200
            other tools and applications. You will therefore start by using it from the operating
201
            system command line. On Windows, you may want to install a text editor such as <a
202
               href="http://www.ultraedit.com/" class="bodylink">UltraEdit</a> that offers a more
203
            friendly command line than the standard DOS console provided by Microsoft.</p>
204

    
205
         <ol>
206
            <li>
207
               <p>It is highly recommended that you have .NET version 4.0 or higher installed on
208
                  your machine. This is available as a free download from Microsoft. (Saxon may work
209
                  with older versions of .NET, but this has not been thoroughly tested.) For
210
                  non-Windows users, the .NET Saxon product can also be run on the Mono
211
                  platform.</p>
212
              
213
                <p><b>Saxon does not work with .NET Core. This is a limitation of the technology
214
                used to port Saxon from the Java platform to .NET.</b></p>
215
            </li>
216
            <li>
217
               <p>Download the software (you will typically start with the open-source version
218
                  Saxon-HE) from <a
219
                     href="http://sourceforge.net/project/showfiles.php?group_id=29872"
220
                     class="bodylink">SourceForge</a>. Alternatively, the commercial editions of the
221
                  product (Saxon-PE and Saxon-EE) can be downloaded from <a
222
                     href="http://www.saxonica.com/" class="bodylink">www.saxonica.com</a>.</p>
223
            </li>
224
            <li>
225
               <p>The software comes as a .exe installer: <code>SaxonHEn-n-n-nNsetup.exe</code> for
226
                  Saxon Home Edition, <code>SaxonPEn-n-n-nNsetup.exe</code> for the Professional
227
                  Edition, and <code>SaxonEEn-n-n-nNsetup.exe</code> for the Enterprise Edition.
228
                  Double-click it to run the installer. It installs the executable files into a
229
                  user-selected directory, sets a registry entry to point to this location, and
230
                  registers the relevant DLLs in the Global Assembly Cache.</p>
231
            </li>
232
            <li>
233
               <p>As a first-time user, you will probably want to install the sample applications.
234
                  These are packaged together with a copy of this documentation in the file
235
                  <code>saxon-resources-10.zip</code>. This can be downloaded from
236
                  either the SourceForge or Saxonica sites (it is the same file in both cases).
237
                  Unzip the contents of this file into the same directory as the Saxon software.</p>
238
            </li>
239
            <li>
240
               <p>If you are using a commercial edition of Saxon (that is, Saxon-PE or Saxon-EE),
241
                  you will need to obtain a file containing a licence key. The license key is
242
                  interchangeable between the Java and .NET platforms. You can apply for a free
243
                  30-day evaluation license key by going to <a href="http://www.saxonica.com/"
244
                     class="bodylink">www.saxonica.com</a> and clicking on "Try Saxon for 30 days".
245
                  The license key file will be sent by email within 24 hours. This file, called
246
                     <code>saxon-license.lic</code>, should be placed in the directory containing
247
                  the Saxon DLL files: for example <code>c:/Program
248
                     Files/Saxonica/SaxonPE10.0N/bin</code>. <i>When running Saxon from the command
249
                     line, it is no longer necessary for the directory containing the license file
250
                     to be on the classpath.</i> For more details on Saxon license keys, see the <a
251
                     class="bodylink" href="../../license">Saxon Licenses</a> section.</p>
252
            </li>
253
         </ol>
254

    
255

    
256
         <p>You can now run one of the sample stylesheets or queries that comes with the
257
               <code>saxon-resources</code> download. Assuming you installed into
258
               <code>c:\saxon</code>, make this your current directory, and type:</p>
259

    
260
         <p>
261
            <i>for XSLT (all on one line):</i>
262
         </p>
263
         <samp><![CDATA[bin\Transform -t -s:samples\data\books.xml 
264
     -xsl:samples\styles\books.xsl -o:c:\temp.html]]></samp>
265

    
266
         <p>
267
            <i>for XQuery (all on one line):</i>
268
         </p>
269
         <samp><![CDATA[bin\Query -t -s:samples\data\books.xml 
270
       -q:samples\query\books-to-html.xq -o:c:\temp.html]]></samp>
271

    
272
         <p>Now open <code>c:\temp.html</code> in your browser to check that it worked.</p>
273

    
274
         <p>For more complete details on installing Saxon on the .NET platform, see <a
275
               class="bodylink" href="../../installationdotnet">Installing (.NET)</a></p>
276
      </section>
277
   </section>
278
   <section id="whatis" title="What is Saxon?">
279
      <h1>What is Saxon?</h1>
280

    
281

    
282
      <p>The Saxon package is a collection of tools for processing XML documents. The main
283
         components are: </p>
284
      <ul>
285
         <li>
286
            <p>An XSLT processor, which can be used from the command line, or invoked from an
287
               application, using a supplied API. Saxon implements the XSLT 3.0 Recommendation.
288
               The product can also be used to run XSLT 2.0 stylesheets, or XSLT 1.0
289
               stylesheets in backwards compatibility mode.</p>
290
         </li>
291
         <li>
292
            <p>An XPath processor accessible to applications via a supplied API. This supports 
293
               XPath 2.0 and XPath 3.1. It can also be used in backwards-compatibility mode to
294
               evaluate XPath 1.0 expressions.</p>
295
         </li>
296
         <li>
297
            <p>An XQuery processor that can be used from the command line, or invoked from an
298
               application by use of a supplied API. This supports XQuery 3.1, which also allows
299
               XQuery 1.0 or 3.0 queries to be executed.
300
               With Saxon-EE, you can also use the XQuery extensions defined in the XQuery Update 1.0 Recommendation, but later
301
               working drafts of XQuery Update are not supported (W3C has abandoned work on these versions).</p>
302
         </li>
303
         <li>
304
            <p>An XML Schema Processor. This supports both XSD 1.0 and XSD 1.1. This can be used on
305
               its own to validate a schema for correctness, or to validate a source document
306
               against the definitions in a schema. It is also used to support the schema-aware
307
               functionality of the XSLT and XQuery processors. Like the other tools, it can be run
308
               from the command line, or invoked from an application.</p>
309
         </li>
310

    
311
         <li>
312
            <p>On the Java platform, when using XSLT, XPath, XQuery, or XML schema validation, Saxon offers
313
               a choice of APIs. If you need portability across different vendors' tools, you can
314
               use the JAXP API for XSLT, XPath, and XML Schema processing, and the XQJ interface
315
               for XQuery. On the other hand, if you want a more integrated and complete API
316
               offering access to all Saxon's facilities, the s9api interface is recommended. You
317
               can also dive down deeper into the Saxon internals if you need to: there has been no
318
               particular attempt to make interfaces private, and all public interfaces are
319
               documented in the JavaDoc. Clearly, the deeper you go, the greater the risk of
320
               interfaces changing in future releases.</p>
321
         </li>
322
         <li>
323
            <p>On the .NET platform, Saxon offers an API that enables close integration with other
324
               services available from .NET, notably the XML-related classes in the
325
                  <code>System.Xml</code> namespace. It isn't possible to use Saxon as a transparent
326
               plug-in replacement for the <code>System.Xml.Xsl</code> processor, because the API
327
               for the Microsoft engine using concrete classes rather than abstract interfaces.
328
               However, it is possible to use it as a functional replacement with minor changes to
329
               your application code.</p>
330
         </li>
331
      </ul>
332

    
333
      <p>Full details of Saxon's conformance to the specifications are provided in the <a
334
            class="bodylink" href="/conformance">Conformance</a> section.</p>
335

    
336
      <p>As well as features standardized by W3C, Saxon provides an extensive library of <a
337
            class="bodylink" href="/extensions">extensions</a>, all implemented in conformance with
338
         the XSLT and XQuery Recommendations to ensure that portable stylesheets and queries can be
339
         written. These include the <a href="http://www.exslt.org/" class="bodylink">EXSLT</a>
340
         extension libraries <strong>common</strong>, <strong>sets</strong>, <strong>math</strong>,
341
         and <strong>dates-and-times</strong>, and the <a href="http://www.expath.org/"
342
            class="bodylink">EXPath</a> modules <strong>binary</strong>, <strong>file</strong>, and
343
            <strong>archive</strong>. Many of these extensions were pioneered in Saxon and have
344
         since become available in other products.</p>
345

    
346
      <p>These extension libraries in most cases require Saxon-PE or higher, and in some cases require
347
         Saxon-EE.</p>
348
     
349
       <aside>Some Saxon extensions are described in the documentation as <b>experimental</b>. This
350
       means that they may be withdrawn or redesigned in future releases, in response to feedback
351
       on their usability, performance, or reliability.</aside>
352
   </section>
353

    
354
   <section id="packages" title="Choosing the Saxon Edition">
355
      <h1>Choosing the Saxon Edition</h1>
356

    
357
      <p>Saxon is distributed in three editions: Saxon-HE, Saxon-PE, and Saxon-EE, each of which is
358
         available for both the Java and .NET platforms. Saxon-HE is available under an open-source
359
         license (specifically, the Mozilla Public License 2.0), and all its features are available
360
         to all users. Saxon-PE and Saxon-EE are commercial products and require activation by a
361
         license key.</p>
362

    
363
      <p>There are also restricted licenses that work with Saxon-EE but restrict its capability:</p>
364

    
365
      <ul>
366
         <li>
367
            <p>The EET license provides schema validation and schema-aware XSLT transformation only
368
               (no XQuery)</p>
369
         </li>
370

    
371
         <li>
372
            <p>The EEQ license provides schema validation and schema-aware XQuery only (no XSLT)</p>
373
         </li>
374

    
375
         <li>
376
            <p>The EEV license provides schema validation only (no XQuery or XSLT)</p>
377
         </li>
378
      </ul>
379

    
380
      <p>For a full table showing the features available in each edition and licensing variant, see
381
         the <a href="http://www.saxonica.com/products/feature-matrix-9-9.xml" class="bodylink"
382
            >feature matrix</a>.</p>
383

    
384
      <p>For information on obtaining and setting up a license key, see the <a class="bodylink"
385
            href="/about/license">Saxon Licenses</a> section.</p>
386

    
387

    
388
      <p>For commercial information including prices, terms and conditions, maintenance and upgrade
389
         offerings, site licensing, and redistribution licensing, see the <a
390
            href="http://www.saxonica.com/shop/index.html" class="bodylink">online store</a>.</p>
391
   </section>
392

    
393

    
394
   <section id="installationjava" title="Installation: Java platform">
395
      <h1>Installation: Java platform</h1>
396

    
397

    
398
      <p>This section explains in more detail how to install Saxon on the Java platform. For a basic
399
         "quick start" guide, see <a class="bodylink"
400
            href="/about/gettingstarted/gettingstartedjava">Getting started with Saxon on the Java
401
            platform</a>.</p>
402
      <nav>
403
         <ul/>
404
      </nav>
405

    
406
      <section id="prerequisites" title="Prerequisites">
407
         <h1>Prerequisites</h1>
408

    
409
         <p>The following software must be installed separately, it is not included with the Saxon
410
            download.</p>
411
         <ul>
412
            <li>
413
               <p>To run Saxon you need at least a Java VM, and preferably a Java development
414
                  environment. Saxon 10 requires at least Java SE 8 (also known as JDK 1.8). 
415
                  It should also run under later Java versions, but this may not be fully tested. </p>
416
            </li>
417
            
418
            <li>
419

    
420
               <p>Saxon has options to work with source trees constructed using DOM, JDOM2,
421
                  XOM, DOM4J, or AXIOM:</p>
422
               <ul>
423
                  <li>
424
                     <p>To use Saxon with DOM, you do not need any extra code on your classpath. The
425
                        DOM implementation must support DOM Level-3 interfaces, and the DOM must
426
                        be built with namespace processing enabled. Saxon is tested with both the
427
                        DOM implementation provided by the Apache Xerces parser, and the DOM that is
428
                        packaged with the Oracle JDK. It should work with other DOM implementations,
429
                        but this can never be 100% guaranteed without testing. Many DOM
430
                        implementations, especially non-productized implementations, deviate in
431
                        minor but significant ways from the specifications. </p>
432
                  </li>
433
                  <li>
434
                     <p>For the other object models, JDOM2, XOM, DOM4J, and AXIOM, the
435
                        supporting Saxon adapter code is integrated into the JAR files for Saxon-PE
436
                        and Saxon-EE, but is available only as source code for Saxon-HE. To exploit
437
                        this code with the open source Home Edition, you will need to compile the
438
                        source code from the relevant subpackage of
439
                        <code>net.sf.saxon.option</code>, and register it using the
440
                        method <a class="javalink"
441
                           href="net.sf.saxon.Configuration#registerExternalObjectModel"
442
                           >registerExternalObjectModel</a> on the <a class="javalink"
443
                           href="net.sf.saxon.Configuration">Configuration</a> object, or via the <a
444
                           class="bodylink" href="/configuration/configuration-file">configuration
445
                           file</a>. (With Saxon-PE and Saxon-EE, the supported object models
446
                     are registered automatically if the underlying code is found on the classpath.)</p>
447
                  </li>
448
                 <li><p><i>Note that support for JDOM version 1 is dropped in Saxon 10.</i></p></li>
449

    
450
               </ul>
451
            </li>
452
         </ul>
453

    
454
         <p>By default Saxon uses an XML parser that supports the SAX2 interface. Saxon has been
455
            tested successfully in the past with a wide variety of such parsers including Ælfred,
456
            Xerces, Lark, SUN Project X, Crimson, Piccolo, Oracle XML, xerces, xml4j, and xp. In
457
            the past Saxonica recommended using the Apache version of Xerces in preference to the
458
            built-in parser delivered with the JDK, but since JDK 8 the built-in parser appears to be equally
459
            reliable. The parser must be SAX2-compliant. All the
460
            relevant JAR files must be installed on your Java CLASSPATH.</p>
461

    
462
         <p>Saxon will also work with a StAX parser. Generally speaking, StAX parsers are 
463
            less mature and less interoperable than SAX parsers, and any performance advantage is likely to be very minor.
464
            However, the support for StAX provides the ability to supply input via a customized pull
465
            pipeline. Saxon is tested with Woodstox 3.0.0. Saxon's schema validation is available
466
            only with a SAX2 parser.</p>
467

    
468
      </section>
469

    
470

    
471
      <section id="installingjava" title="Installing the software">
472
         <h1>Installing the software</h1>
473

    
474

    
475
         <p>An index of all currently available open-source versions of Saxon is on <a
476
               href="http://sourceforge.net/project/showfiles.php?group_id=29872" class="bodylink"
477
               >the download page at SourceForge</a>. It is also possible to install using Maven
478
         using the artifact id <code>Saxon-HE</code> (please avoid other artefacts using the Saxon name
479
         which were created at various times by third parties and are not maintained by Saxonica).</p>
480

    
481
         <p>For the commercial versions of Saxon, please follow the download links from <a
482
               href="http://www.saxonica.com/" class="bodylink">www.saxonica.com</a>. Historic
483
            versions of the software are not listed on the website, but are available to existing
484
            users on request.</p>
485

    
486
         <aside>Please see the <a class="bodylink" href="/changes">change log</a> for details of all
487
            changes in this release.</aside>
488

    
489
         <p>Installation of Saxon on the Java platform simply involves unzipping the supplied
490
            download file into a suitable directory. The procedure is the same for all editions (HE,
491
            PE, and EE). The JAR files are differently named in each edition.</p>
492

    
493

    
494
         <p>One of the files that will be created in this directory is the principal JAR file. This
495
            is <strong>saxon-he-10.0.jar</strong>, <strong>saxon-pe-10.0.jar</strong>, or
496
               <strong>saxon-ee-10.0.jar</strong> depending on which Saxon edition you are using.
497
         The "10.0" in the name will change to "10.1", "10.2", etc. in subsequent maintenance releases.</p>
498

    
499
         <p>There are some additional JAR files to support optional features such as the SQL
500
            interface and the ICU localization library. When running Saxon, the principal JAR file
501
            should be on the class path. The class path is normally represented by an environment
502
            variable named CLASSPATH: see your Java documentation for details. Note that the JAR
503
            file itself (not the directory that contains it) should be named on the class path.</p>
504

    
505
         <p>Some environments (for example Java IDEs such as Eclipse, and servlet containers such as
506
            tomcat) build the classpath themselves: they might ask you to register the location of
507
            JAR files via a graphical user interface or a text configuration file, or they might ask
508
            you to put the JAR files in a well known place (for example <code>WEB-INF/lib</code> in
509
            the case of tomcat). Follow the instructions for the environment you are using.</p>
510
      </section>
511

    
512
      <section id="jarfiles" title="JAR files included in the product">
513
         <h1>JAR files included in the product</h1>
514

    
515

    
516
         <p>The full list of JAR files in the Saxon distribution is as follows. Here "10.#"
517
         means "10.0", "10.1", "10.2", etc. depending on the maintenance release.</p>
518
         <table>
519
            <thead>
520
               <tr>
521
                  <td>
522
                     <p>
523
                        <strong>JAR file</strong>
524
                     </p>
525
                  </td>
526
                 <td>
527
                   <p>
528
                     <strong>Size (approx)</strong>
529
                   </p>
530
                 </td>
531
                  <td>
532
                     <p>
533
                        <strong>Contents</strong>
534
                     </p>
535
                  </td>
536
                 <td>
537
                   <p>
538
                     <strong>Included in Editions</strong>
539
                   </p>
540
                 </td>
541
               </tr>
542
            </thead>
543
            <tbody>
544
               <tr>
545
                  <td>
546
                     <p><span class="nowrap">saxon-he-10.#.jar</span></p>
547
                  </td>
548
                 <td>
549
                   <p>5.4Mb</p>
550
                 </td>
551
                  <td>
552
                     <p>Saxon Home Edition. Contains all the software in Saxon-HE, except as noted
553
                        below.</p>
554
                  </td>
555
                 <td><p>HE</p></td>
556
               </tr>
557
               <tr>
558
                  <td>
559
                     <p><span class="nowrap">saxon-pe-10.#.jar</span></p>
560
                  </td>
561
                 <td>
562
                   <p>6Mb</p>
563
                 </td>
564
                  <td>
565
                     <p>Saxon Professional Edition. Contains all the software in Saxon-PE, except as
566
                        noted below.</p>
567
                  </td>
568
                 <td><p>PE</p></td>
569
               </tr>
570
               <tr>
571
                  <td>
572
                     <p><span class="nowrap">saxon-ee-10.#.jar</span></p>
573
                  </td>
574
                 <td>
575
                   <p>8.3Mb</p>
576
                 </td>
577
                  <td>
578
                     <p>Saxon Enterprise Edition. Contains all the software in Saxon-EE, except as
579
                        noted below.</p>
580
                  </td>
581
                 <td><p>EE</p></td>
582
               </tr>
583

    
584
               <tr>
585
                  <td>
586
                     <p><span class="nowrap">icu4j-59_1.jar</span></p>
587
                  </td>
588
                 <td>
589
                   <p>11.9Mb</p>
590
                 </td>
591
                  <td>
592
                     <p>A copy of the open source <a class="bodylink"
593
                           href="http://site.icu-project.org">ICU-J</a> localization library, used
594
                        to support sorting and date/number formatting in a wide variety of
595
                        languages. If this JAR
596
                        file is not present on the classpath, this will restrict the collations and
597
                        localization options available to those that are found in the Java runtime.</p>
598
                     <p>It should be possible to replace this JAR with a later version downloaded from
599
                     the ICU project.</p>
600
                     <p>(Previous Saxon releases used a tailored version of this JAR file. With experience,
601
                     we found that this added complexity and delivered no tangible benefits.)</p>
602
                  </td>
603
                 <td><p>PE, EE</p></td>
604
               </tr>
605
              
606
              <tr>
607
                <td>
608
                   <p><span class="nowrap">saxon-xqj-10.#.jar</span></p>
609
                </td>
610
                <td>
611
                  <p>100Kb</p>
612
                </td>
613
                <td>
614
                  <p>Support for the XQJ (XQuery for Java) API. Provided as a separate JAR file in Saxon-HE
615
                  so that it can be excluded from distributions that require pure OSI-approved open source
616
                  licensing. The code is included as an integral part of Saxon-PE and Saxon-EE, so no
617
                  separate JAR file is required in those cases.</p>
618
                </td>
619
                <td><p>HE</p></td>
620
              </tr>
621

    
622
               <tr>
623
                  <td>
624
                     <p><span class="nowrap">saxon-sql-10.#.jar</span></p>
625
                  </td>
626
                 <td>
627
                   <p>61Kb</p>
628
                 </td>
629
                  <td>
630
                     <p>Supports XSLT and XPath extensions for accessing and updating a relational database
631
                        from within a stylesheet or query. Provided with Saxon-PE and Saxon-EE. The source
632
                        code is open source so that it can be modified, but it requires support for
633
                        element extensibility, which requires Saxon-PE or higher.</p>
634
                  </td>
635
                 <td><p>PE, EE</p></td>
636
               </tr>
637

    
638
               <tr>
639
                  <td>
640
                     <p><span class="nowrap">saxon-he-test-10.#.jar</span></p>
641
                  </td>
642
                 <td>
643
                   <p>127Kb</p>
644
                 </td>
645
                  <td>
646
                     <p>Test drivers for running the W3C test suites for XSLT and XQuery against
647
                        Saxon-HE. The test drivers are
648
                        published as open source code in the <code>saxon-resources</code>
649
                       download. The test suites themselves are on GitHub: repositories
650
                     <code>w3c/xslt30-test</code> and <code>w3c/qt3tests</code>.</p>
651
                  </td>
652
                 <td><p>HE</p></td>
653
               </tr>
654

    
655
               <tr>
656
                  <td>
657
                     <p><span class="nowrap">saxon-pe-test-10.#.jar</span></p>
658
                  </td>
659
                 <td>
660
                   <p>176Kb</p>
661
                 </td>
662
                  <td>
663
                     <p>Test drivers for running the W3C test suites for XSLT and XQuery
664
                       against Saxon-PE. The test suites themselves are on GitHub: repositories
665
                       <code>w3c/xslt30-test</code> and <code>w3c/qt3tests</code>.</p>
666
                  </td>
667
                 <td><p>PE</p></td>
668
               </tr>
669
              
670
              <tr>
671
                <td>
672
                   <p><span class="nowrap">saxon-ee-test-10.#.jar</span></p>
673
                </td>
674
                <td>
675
                  <p>215Kb</p>
676
                </td>
677
                <td>
678
                  <p>Test drivers for running the W3C test suites for XSLT, XQuery, and XSD
679
                    against Saxon-EE. The test suites themselves are on GitHub: repositories
680
                    <code>w3c/xslt30-test</code>, <code>w3c/qt3tests</code>, <code>w3c/xsdtests</code>.
681
                  </p>
682
                </td>
683
                <td><p>EE</p></td>
684
              </tr>
685
              
686
              <tr>
687
                <td>
688
                   <p><span class="nowrap">jline-2.9.jar</span></p>
689
                </td>
690
                <td>
691
                  <p>205Kb</p>
692
                </td>
693
                <td>
694
                  <p>JLine 2: an open source library supporting interactive command-line applications,
695
                  including content completion and command history. This is used by the Gizmo utility,
696
                  and must be on the classpath when Gizmo is run (it is not needed otherwise).</p>
697
                </td>
698
                <td><p>HE, PE, EE</p></td>
699
              </tr>
700
               
701
            </tbody>
702
         </table>
703

    
704
         <p>When running any Java application, Saxon included, all Java classes that are needed must
705
            be present on the CLASSPATH. The classpath can be set in the form of an environment
706
            variable, or it can be included in the <code>java</code> command that invokes the
707
            application.</p>
708

    
709
         <p>The classpath is written as a list of filenames. These will either be the names of
710
            directories (folders) that contain relevant classes, or the names of JAR files
711
            containing the classes. On Windows, the names in the list are separated by semicolons;
712
            on Linux and macOS, a colon is used.</p>
713

    
714
         <p>The table above lists the JAR files provided with Saxon that you may need to include on
715
            your classpath. In addition, you may need to include the following
716
            resource:</p>
717
         <table>
718
            <thead>
719
               <tr>
720
                  <td>
721
                     <p>
722
                        <strong>Resource</strong>
723
                     </p>
724
                  </td>
725
                  <td>
726
                     <p>
727
                        <strong>Description</strong>
728
                     </p>
729
                  </td>
730
               </tr>
731
            </thead>
732
            <tbody>
733
               <tr>
734
                  <td>
735
                     <p><span class="nowrap">saxon-license.lic</span></p>
736
                  </td>
737
                  <td>
738
                     <p>License file. This is needed only for running Saxon-EE/Saxon-PE. The license
739
                        file is obtained when you purchase the product or when you apply for an
740
                        evaluation license. If the license file is placed in the same directory
741
                        as the <code>saxon-pe-10.#.jar</code> or <code>saxon-ee-10.#.jar</code> JAR file, then
742
                     Saxon will usually be able to find it without further assistance; in some class-loading
743
                     environments, however, the <em>directory containing the license file</em> 
744
                        (not the license file itself) needs to be listed
745
                     on the classpath.</p>
746
                  </td>
747
               </tr>
748
               
749
            </tbody>
750
         </table>
751
         
752
         <h2>Verifying the Saxon JAR files</h2>
753
         
754
         <p>Before releasing new versions of the Saxon JAR files, Saxonica signs them with a digital signature which you
755
            can use to verify that the files have not been tampered with. The signatures are based on a digital certificate 
756
            issued to Saxonica by the security company GlobalSign.</p>
757
         
758
         <p>You can verify that a particular JAR file (for example <code>saxon-ee-10.0.jar</code>) has a valid signature using the command:</p>
759
         
760
         <kbd>jarsigner -verify saxon-ee-10.0.jar</kbd>
761
         
762
         <p>More usefully, you can check that it was signed by Saxonica with the command:</p>
763
         
764
         <kbd>jarsigner -verify -verbose saxon-ee-10.0.jar</kbd>
765
         
766
         <p>This produces voluminous information about the contents of the JAR file, ending with details of the security certificate, 
767
            something like this:</p>
768
         
769
         <samp><![CDATA[- Signed by "EMAILADDRESS=mike@saxonica.com, CN=Saxonica Limited, O=Saxonica Limited, L=Reading, ST=Berkshire, C=GB"
770
    Digest algorithm: SHA-256
771
    Signature algorithm: SHA256withRSA, 2048-bit key
772
  Timestamped by "CN=GlobalSign TSA for Advanced - G3 - 003-01, O=GMO GlobalSign K.K., C=JP" on Thu Sep 27 16:58:22 UTC 2018
773
    Timestamp digest algorithm: SHA-256
774
    Timestamp signature algorithm: SHA256withRSA, 2048-bit key]]></samp>
775
         
776
         <p>The details will vary from release to release, but will always identify Saxonica as the originator, and give the date
777
            on which the JAR file was built prior to release.</p>
778
         
779
         <p>Saxonica signs both the open-source and commercial JAR files. The signature does not prevent the JAR file being unpacked
780
            and modified, but it means that you can always distinguish a modified JAR file from the original.</p>
781
      </section>
782
      <section id="classloading-and-osgi" title="Class Loading and OSGi">
783
         <h1>Class Loading and OSGi</h1>
784
         <aside>This information is intended for advanced users only.</aside>
785
         
786
         <p>Saxon runs in a wide variety of Java environments without problems, but problems can occasionally arise
787
         because of the specialized requirements of particular platforms. This is particularly true of environments
788
         that have their own way of doing Java class loading (examples are Eclipse and Apache Camel).</p>
789
         
790
         <p>As a general rule, arbitrary failures can arise if more than one Saxon version is on the classpath.
791
         This applies both across versions (for example Saxon 10 and Saxon 9.9) and across editions (say Saxon-EE and Saxon-HE).
792
         Note that although there are many classes (such as <code>net.sf.saxon.Configuration</code>) which are present in all
793
         three Saxon editions (HE, PE, EE) the actual content of the class may vary slightly between editions, which is why
794
         mixing classes loaded from different editions is generally fatal.</p>
795
         
796
         <p>JAXP provides the ability to load parsers, XSLT transformation engines, XPath processors, and schema processors
797
         by searching the classpath for a JAR file that declares itself appropriately as a service provider. The intent of this
798
         mechanism is that applications can switch from one processor to another simply by changing what JAR files are on the classpath.
799
         In Saxonica's experience this mechanism can often cause problems, because the level of compatibility between different
800
         providers is not good enough. If an XSLT stylesheet has been tested under Xalan, for example, there are many reasons
801
         why it might not work under Saxon (or vice versa): the products implement different versions of the W3C specifications,
802
         many features of the W3C specifications have been left implementation-defined (for example, vendor extension functions),
803
         and even at the API level, products are in many cases allowed to interpret the specifications in their own way.
804
         Therefore Saxonica recommends that applications should explicitly load a software package that has been tested with the
805
         application and is known to work, rather than allowing a different provider to be substituted simply by changing the class path.</p>
806
         
807
         <p>Saxon uses dynamic loading to access resources in a number of situations, for example:</p>
808
         
809
         <ul>
810
            <li>Locating the license file for Saxon-PE and Saxon-EE</li>
811
            <li>Under Saxon-EE, loading bytecode that has been dynamically generated</li>
812
            <li>Loading user-supplied extension functions</li>
813
            <li>Loading copies of commonly-used W3C schemas and DTDs (issued within the Saxon JAR file in
814
            folder <code>net/sf/saxon/data</code>)</li>
815
            <li>Invoking "plugins" of various kinds, such as localization code, collations, URI resolvers, non-standard XML parsers</li>
816
         </ul>
817
         
818
         <p>Generally all such dynamic loading is channeled via a <code>DynamicLoader</code> object obtained as a property of the
819
         <code>Configuration</code>. Applications with specialist requirements can either customize Saxon's <code>DynamicLoader</code>
820
         (for example by calling <code>configuration.getDymanicLoader().setClassLoader()</code>), or they can replace Saxon's
821
         <code>DynamicLoader</code> with one of their own.</p>
822
         
823
         <p>By default, Saxon's <code>DynamicLoader</code> uses the following strategy to load a class, in order:</p>
824
         
825
         <ol>
826
            <li>Check if the class is present in a list of known, pre-registered classes, and if so, return the known class.</li>
827
            <li>Use any <code>ClassLoader</code> that has been explicitly registered using <code>DynamicLoader.setClassLoader()</code>.</li>
828
            <li>Use the context class loader for the current thread.</li>
829
            <li>Use <code>Class.forName()</code>.</li>
830
         </ol>
831
         
832
         <p>This strategy sometimes fails in environments that use OSGi (for example Apache Camel). Saxon does not explicitly support OSGi.
833
            In some cases users have reported
834
            that a sufficient workaround is to call <code>configuration.getDynamicLoader().setClassLoader(Configuration.class.getClassLoader());</code>.</p>
835
         
836
         <p>The area that tends to be most problematic in complex environments is loading of Saxon-generated bytecode. 
837
            The simplest workaround here is to switch off bytecode generation. This can be done using the configuration option
838
         <code>Feature.GENERATE_BYTE_CODE</code>, or by an appropriate call on <code>XsltCompiler.getUnderlyingCompilerInfo().setOptimizerOptions()</code>.
839
         The performance benefit of bytecode generation is typically in the range 10%-40%, so in many cases the performance hit will not be
840
         noticeable.</p>
841
         
842
         <p>See also <a class="bodylink"
843
            href="/about/license/licensefaq">Troubleshooting license file problems</a>.</p>
844
      </section>
845
         
846
   </section>
847

    
848
   <section id="installationdotnet" title="Installation: .NET platform">
849
      <h1>Installation: .NET platform</h1>
850
     
851
     <p><b>This information is provisional. Saxon 10 is not yet available for .NET;
852
     the information will be updated when it is released.</b></p>
853

    
854

    
855
      <p>This section explains in more detail how to install Saxon on the .NET platform. For a basic
856
         "quick start" guide, see <a class="bodylink"
857
            href="/about/gettingstarted/gettingstarteddotnet">Getting started with Saxon on the .NET
858
            platform</a>.</p>
859

    
860
      <aside>The source code of Saxon is written in Java. The version of the product that runs on
861
         the .NET platform has been produced by cross-compiling the Java bytecode into CIL code,
862
         which is then packaged as a .NET assembly. The cross-compiler is the open-source <a
863
            href="http://www.ikvm.net/" class="bodylink">IKVMC</a> product. The code of course makes
864
         many calls on classes provided by the Java run-time library. On the .NET platform, most of
865
         these are provided by the OpenJDK product: Saxon comes with a version of the OpenJDK
866
         library, itself cross-compiled as a .NET assembly. Other run-time services are obtained
867
         from the .NET platform itself. These include XML parsing, handling of URI resolution, and
868
         internationalized collation support. </aside>
869

    
870

    
871
      <p>For more information about Saxon on the .NET platform, see <a class="bodylink"
872
            href="/dotnet">Saxon on .NET</a>.</p>
873

    
874

    
875
      <h2 class="subtitle">Prerequisites: .NET platform</h2>
876

    
877
      <p>The following software must be installed separately, it is not included with the Saxon
878
         download.</p>
879
      <ul>
880
         <li>
881
            <p>To run Saxon you need to install the .NET platform, version 4.0 or later.</p>
882
         </li>
883
      </ul>
884

    
885
      <p>Because Saxon is run from the command line, you might find it useful (under Microsoft
886
         Windows) to have a text editor with better command-line support than the standard DOS
887
         console. For instance, <a href="http://www.ultraedit.com" class="bodylink"
888
         >UltraEdit</a>.</p>
889

    
890

    
891
      <h2 class="subtitle">Installing the software</h2>
892

    
893
      <p>The software is issued in the form of a .exe file containing an installation wizard: all
894
         you need to do is to run it, answering simple prompts such as the directory in which you
895
         want it installed.</p>
896

    
897
      <p>The main components are as follows. Here "10.#" means "10.0", "10.1", "10.2", etc.
898
         depending on the maintenance release.</p>
899
      <table>
900
         <thead>
901
            <tr>
902
               <td>
903
                  <p>
904
                     <strong>File</strong>
905
                  </p>
906
               </td>
907
               <td>
908
                  <p>
909
                     <strong>Contents</strong>
910
                  </p>
911
               </td>
912
            </tr>
913
         </thead>
914
         <tbody>
915
            <tr>
916
               <td>
917
                  <p>saxon-he-10.#.dll, saxon-pe-10.#.dll or saxon-ee-10.#.dll</p>
918
               </td>
919
               <td>
920
                  <p>The Saxon library for Home Edition, Professional Edition, or Enterprise
921
                     Edition.</p>
922
               </td>
923
            </tr>
924
            <tr>
925
               <td>
926
                  <p>saxon-he-api-10.#.dll, saxon-pe-api-10.#.dll, saxon-ee-api-10.#.dll</p>
927
               </td>
928
               <td>
929
                  <p>The classes implementing Saxon's .NET API. The three DLLs are identical except
930
                     that they contain references to the appropriate version of the main Saxon
931
                     DLL.</p>
932
               </td>
933
            </tr>
934
            <tr>
935
               <td>
936
                  <p>Transform.exe</p>
937
               </td>
938
               <td>
939
                  <p>Command line entry-point for XSLT transformation.</p>
940
               </td>
941
            </tr>
942
            <tr>
943
               <td>
944
                  <p>Query.exe</p>
945
               </td>
946
               <td>
947
                  <p>Command line entry-point for XQuery evaluation.</p>
948
               </td>
949
            </tr>
950
            <tr>
951
               <td>
952
                  <p>Validate.exe</p>
953
               </td>
954
               <td>
955
                  <p>Command line entry-point for XML Schema validation. Included only in the
956
                     Saxon-EE distribution.</p>
957
               </td>
958
            </tr>
959
            <tr>
960
               <td>
961
                  <p>IKVM.Runtime.dll</p>
962
               </td>
963
               <td>
964
                  <p>Run-time library for the IKVM cross-compiler.</p>
965
               </td>
966
            </tr>
967
            <tr>
968
               <td>
969
                  <p>IKVM.OpenJDK.XXXX.dll</p>
970
               </td>
971
               <td>
972
                  <p>A number of DLL files containing parts of the Java OpenJDK class library
973
                     cross-compiled to .NET.</p>
974
               </td>
975
            </tr>
976
         </tbody>
977
      </table>
978

    
979
      <p>These files will typically be found in a folder with a name such as <code>c:\Program
980
            Files\Saxonica\SaxonHE10.0N\bin</code></p>
981

    
982

    
983
      <p>You may find it useful to add this directory to the <code>PATH</code> environment variable.
984
         This enables you to use the commands <code>Transform</code>, <code>Query</code>, and
985
            <code>Validate</code> without identifying their location explicitly.</p>
986

    
987
      <h2 class="subtitle">Sample applications</h2>
988

    
989
      <p>Saxon on .NET is distributed with a number of sample applications. These are issued
990
         (together with this documentation and other resources) in a separate download file
991
            <code>saxon-resources-10.zip</code>, available from both the SourceForge and Saxonica
992
         websites. Once this is unzipped, the sample applications can be found in the directory
993
            <code>/samples</code>. They are described in <a class="bodylink" href="/samples"
994
            >Samples</a>.</p>
995

    
996
      <p>Many of the samples are equally applicable to the Java and .NET platforms. However, there
997
         are several programs in the <code>/samples/cs</code> directory that are specifically
998
         designed to illustrate ways of using the <code>Saxon.Api</code> interface. This interface
999
         is exclusive to the .NET product, and is described in more detail in <a class="bodylink"
1000
            href="/dotnet/dotnetapi">Saxon API for .NET</a>. These sample applications are described
1001
         in <a class="bodylink" href="/samples/dotnetsamples">Example applications for .NET</a>.</p>
1002

    
1003
   </section>
1004

    
1005
   <section id="license" title="Saxon Licenses">
1006
      <h1>Saxon Licenses</h1>
1007

    
1008
      <p>This section provides further information on the license keys needed to run Saxon products,
1009
         for both the Java and .NET platforms.</p>
1010

    
1011
      <nav>
1012
         <ul/>
1013
      </nav>
1014

    
1015
      <section id="licensekey" title="Setting up a license key">
1016
         <h1>Setting up a license key</h1>
1017

    
1018
         <p>The open-source Saxon-HE product does not require any license key. For Saxon-PE and
1019
            Saxon-EE, however, you need to obtain a license key from Saxonica. You can order a free
1020
            license key for a 30-day evaluation, or purchase an unrestricted license key, from the
1021
               <a href="http://www.saxonica.com/" class="bodylink">Saxonica</a> website.</p>
1022

    
1023
         <p>The license key will arrive in the form of a file named <code>saxon-license.lic</code>
1024
            attached to an email message. Saxon will search for the license key in the following
1025
            locations:</p>
1026
         <ol>
1027
            <li>
1028
               <p>If you supply a Saxon <a class="bodylink" href="/configuration/configuration-file">configuration file</a>,
1029
               the location given in the <code>licenseFileLocation</code> attribute of the
1030
               outermost <code>configuration</code> element in this file.</p>
1031
            </li>
1032
            <li>
1033
               <p>The location specified using the configuration property <a class="bodylink code"
1034
                  href="/configuration/config-features">Feature.LICENSE_FILE_LOCATION</a>, as
1035
                  described below.</p>
1036
            </li>
1037
            <li>
1038
               <p>The directory containing the executable Saxon software, that is
1039
                     <code>saxon-ee-10.#.jar</code> or <code>saxon-pe-10.#.jar</code> on the Java platform,
1040
                  and <code>saxon-pe-10.#.dll</code> or <code>saxon-ee-10.#.dll</code> on the .NET platform.
1041
                  (On .NET, remember that the software may have been moved to the Global Assembly
1042
                  Cache.)</p>
1043
            </li>
1044
            <li>
1045
               <p>On the Java platform only, the directories identified by the environment variable
1046
                        <code><dfn>SAXON_HOME</dfn></code> and <code>SAXON_HOME/bin</code>.</p>
1047
            </li>
1048
            <li>
1049
               <p>On the .NET platform only, the installation directory - that is, the directory
1050
                  chosen for installing the software when the installation wizard was run. This
1051
                  directory is identified in the Windows registry.</p>
1052
            </li>
1053
            <li>
1054
               <p>All directories on the Java class path. When running from the command line, you
1055
                  can set the classpath using the <code>-cp</code> option on the <code>java</code>
1056
                  command, or via the environment variable <code>CLASSPATH</code>. More complex
1057
                  environments might have other ways of building the classpath. In Tomcat, for
1058
                  example, the license file should be treated in the same way as free-standing
1059
                  (unjarred) classes, and placed in the <code>WEB-INF/classes</code> directory.</p>
1060
            </li>
1061
         </ol>
1062

    
1063
         <p>It is also possible to force Saxon to read the license file from a specific location by
1064
            setting the Configuration property <code
1065
               java="net.sf.saxon.lib.Feature#LICENSE_FILE_LOCATION">Feature.LICENSE_FILE_LOCATION</code>.
1066
            When this property
1067
            is set, the <code>Configuration</code> will immediately attempt to load the specified
1068
            file, avoiding any subsequent attempt to search for it on the classpath and elsewhere.
1069
            This mechanism is useful in environments that are otherwise difficult to control: for
1070
            example configuration properties can be specified as attributes to the
1071
               <code>factory</code> element of <dfn>Ant</dfn>'s <code>&lt;xslt&gt;</code> task.</p>
1072

    
1073
         <p>On the Java platform it is generally simplest to copy the file to the directory in which
1074
               <code>saxon-ee-10.#.jar</code> is installed. On .NET it is generally simplest to copy the
1075
            file to the directory in which <code>saxon-ee-10.#.dll</code> is installed, and then set the
1076
            environment variable <code>SAXON_HOME</code> to point to this location.</p>
1077

    
1078
         <p>If you acquire Saxon-PE or Saxon-EE as a component of an application with which it has
1079
            been integrated, the application may activate the software automatically using an OEM
1080
            license key. In this case you do not need to acquire an individual license key of your
1081
            own. This also applies if you want to run transformations or validate using schemas
1082
            that a developer has issued in compiled form with an embedded license key: in this case
1083
            you will need to download the Saxon-EE software, but you do not need to install a
1084
         separate license key.</p>
1085

    
1086
         <p>
1087
            <i>Please be aware that the terms and conditions under which license files are issued
1088
               require you to ensure that it is kept confidential and secure, and is used only on
1089
               one machine. It must not be copied to other computers, or made available for sharing
1090
               on a file server.</i>
1091
         </p>
1092
      </section>
1093

    
1094
      <section id="verifylicense" title="Verifying a license">
1095

    
1096
         <h1>Verifying a license</h1>
1097

    
1098
         <p>For Saxon on the Java platform, to verify your license you can use one of the following
1099
            simple commands, which will return various information from the license (including the
1100
            Saxon edition covered, name of the licensee, date issued, etc.).</p>
1101
         
1102
         <p>For example for Saxon-PE 10.0:</p>
1103
         <kbd>java -cp saxon-pe-10.0.jar com.saxonica.config.Verifier saxon-license.lic </kbd>
1104
         <p>Similarly, for Saxon-EE 10.0:</p>
1105
         <kbd>java -cp saxon-ee-10.0.jar com.saxonica.config.Verifier saxon-license.lic </kbd>
1106
      </section>
1107
      
1108
      <section id="checklicense" title="Checking a license is found">
1109
         
1110
         <h1>Checking a license is found</h1>
1111
         
1112
         <p>To check that a valid license for Saxon-PE or Saxon-EE has been found and Saxon is
1113
            running with full functionality, try running one of the following simple commands.</p>
1114
         <p>On Java (for example, for Saxon-EE 10.0):</p>
1115
         <kbd>java -cp saxon-ee-10.0.jar net.sf.saxon.Query -qs:"saxon:string-to-hexBinary('saxon', 'utf-8')"</kbd>
1116
         <p>Similarly, on .NET:</p>
1117
         <kbd>Query -qs:"saxon:string-to-hexBinary('saxon', 'utf-8')"</kbd>
1118
         <p>Saxon will revert to Saxon-HE functionality if it cannot find a valid license file.
1119
            The above query uses a Saxon extension function which requires Saxon-PE or -EE, so
1120
            it will produce the correct answer ("7361786F6E") if the license is found, but return an
1121
            error message if the license is not found.</p>
1122
         <p>See <a class="bodylink" href="../licensefaq">Troubleshooting license key problems</a>
1123
            for advice if the license is not found.</p>
1124
      </section>
1125

    
1126
      <section id="licensefaq" title="Troubleshooting license key problems">
1127
         <h1>Troubleshooting license key problems</h1>
1128

    
1129
         <p>If you are having trouble running Saxon-PE or Saxon-EE for the first time, here is a
1130
            list of the most common problems:</p>
1131
         <ul>
1132
            <li>
1133

    
1134
               <p><strong>If your license key does not arrive</strong> within 24 hours, it may be
1135
                  because it has been intercepted by your company's spam/virus checker. This is
1136
                  surprisingly common. Send us an email and we will try to find a way through your
1137
                  company's defenses.</p>
1138

    
1139
               <p>Another possible cause is that you provided an email address that doesn't work.
1140
                  Again, it's surprising how many people do this.</p>
1141
            </li>
1142
         </ul>
1143

    
1144
         <p>And some less common problems:</p>
1145
         <ul>
1146
            <li>
1147
               <p>
1148
                  <strong>Check that the filename is <code>saxon-license.lic</code>
1149
                  </strong>. Some mail systems, notably Yahoo, have been known to change the hyphen
1150
                  to an underscore in transit.</p>
1151
            </li>
1152
            <li>
1153
               <p>
1154
                  <strong>If Saxon says it cannot find the license key</strong>, please read the
1155
                  instructions above for where to install the license key once again.</p>
1156
               
1157
               <p>If you're relying on Saxon finding the license file in the directory that contains
1158
               the Saxon JAR file, be aware that this doesn't always work (it depends on security settings).
1159
               Try a different mechanism: the simplest is to put the directory containing the license file on the classpath. </p>
1160
               
1161
               <p>If you are convinced that the directory containing the license file is on the
1162
                  classpath, check that you are not running the software using the <strong>java
1163
                     -jar</strong> option, which ignores everything on the classpath.</p>
1164
            </li>
1165
            <li>
1166
               <p>
1167
                  <strong>If Saxon says that a particular operation requires Saxon-PE or
1168
                     Saxon-EE</strong>, this may mean that you are running Saxon-HE software, or
1169
                  that you have invoked Saxon using a Saxon-HE entry point, or that Saxon has
1170
                  reverted to Saxon-HE functionality because it could not find a valid license file
1171
                  (in the latter case it will usually have produced a message to this effect: but
1172
                  depending on your application, you might not see the message).</p>
1173
               
1174
               <p>You can check what version of Saxon is on the classpath by calling the static method
1175
                  <code>net.sf.saxon.Version.getProductTitle()</code> from your Java code.</p>
1176
               
1177
              
1178
               
1179
              <p>If you are using the JAXP API, check that the <code>TransformerFactory</code>
1180
              that is instantiated is an instance of <code>ProfessionalTransformerFactory</code>
1181
              or <code>EnterpriseTransformerFactory</code>. Remember that you don't have to rely
1182
              on the JAXP search mechanism to find a <code>TransformerFactory</code>; you can 
1183
              create an instance directly using (for example) <code>new ProfessionalTransformerFactory()</code>,
1184
              which is not only more reliable, it is also much faster.</p>
1185
               
1186
               <p>If you are using the s9api API, check that you created a <code>Processor</code>
1187
               object using <code>new Processor(true)</code> rather than <code>new Processor(false)</code>.</p>
1188
               
1189
               <p>You can check what Saxon edition you are effectively running by finding the <code>Configuration</code>
1190
                  object (for example, by using <code>Processor.getUnderlyingConfiguration()</code>)
1191
                  and calling its <code>getEditionCode()</code> method. </p>
1192
               
1193
               <p>From an XSLT stylesheet, you can establish what version and variant of Saxon you are running by calling
1194
               <code>system-property('xsl:product-version')</code>.</p>
1195
            </li>
1196
            <li>
1197
               <p>
1198
                  <strong>If Saxon says the license key is invalid</strong> then it probably is.
1199
                  Very occasionally a license file gets corrupted in transit. Please ask for another
1200
                  copy (or we might issue you a new license). Sometimes the corruptions can be
1201
                  traced to the use of non-ASCII characters in license fields such as your name or
1202
                  Company (email systems can be unkind to such files). In the event of problems, try
1203
                  applying again, restricting yourself to ASCII characters.</p>
1204
               
1205
                  <p><i>We upgraded the tools we use for creating license files in late 2017, and
1206
                  we believe this problem is now fixed. However, the data flow is not all under
1207
                  our control, so it remains a possibility.</i></p>
1208
            </li>
1209
            <li>
1210
               <p>
1211
                  <strong>If Saxon says the license key has expired</strong> this generally means
1212
                  you are using a 30-day evaluation license and the expiry date has been reached.
1213
                  (Perhaps you have obtained a new license key, and Saxon is still picking up the
1214
                  old one.) If it's taking you longer to evaluate the software than you planned,
1215
                  please send us an email explaining the circumstances before you apply for another
1216
                  license, otherwise the request may be refused.</p>
1217
               <p>If you run Saxon from the command line with the <code>-t</code> option, it will report
1218
               the serial number of the license file that it picked up. Check that this is your most current
1219
               license file.</p>
1220
            </li>
1221
            <li>
1222
               <p>
1223
                  <strong>If Saxon says the license key does not cover the version of Saxon that you
1224
                     are using</strong>, this usually means that you purchased a standard license
1225
                  key which covers free upgrades for one year, and that year has elapsed. You will
1226
                  need to purchase an upgrade, which can be done online. Most paid-for licenses are
1227
                  permanent, but only in relation to software issued within one year of the
1228
                  purchase.</p>
1229
               <p>If you run Saxon from the command line with the <code>-t</code> option, it will report
1230
                  the serial number of the license file that it picked up. Check that this is your most current
1231
                  license file.</p>
1232
            </li>
1233
            <li>
1234
               <p>
1235
                  <strong>If Saxon says the license is temporarily suspended</strong>, try again after 
1236
                  five minutes. Evaluation licenses occasionally (and randomly) issue this message to
1237
                  discourage attempts to use them for running a live producton service.</p>
1238
            </li>
1239
         </ul>
1240
      </section>
1241
   </section>
1242

    
1243
   <section id="resources" title="Source code, samples, and other resources">
1244

    
1245
      <h1>Source code, samples, and other resources</h1>
1246

    
1247
      <p>Source code, sample files, and documentation are not included in the same download file as
1248
         the executable code. Instead, the samples and documentation are available in a separate
1249
         resources file <code>saxon-resources-10.zip</code>, which can be downloaded from either the
1250
         <a href="https://sourceforge.net/projects/saxon/files/" class="bodylink">SourceForge Saxon
1251
            project</a> or the <a href="http://www.saxonica.com/"
1252
               class="bodylink">www.saxonica.com</a> sites. The documentation is also available
1253
         online.</p>
1254
      
1255
      <p>The preprocessed source code for Saxon-HE is issued as a ZIP archive downloadable from the
1256
         Saxon project site on SourceForge. The raw source is available from the Subversion
1257
         repository on the <a href="http://dev.saxonica.com/" class="bodylink">dev.saxonica.com</a>
1258
         site.</p>
1259

    
1260
      <h2 class="subtitle">Source code</h2>
1261

    
1262
      <p>Note that it is not necessary to download or recompile the source code unless you
1263
         need to make changes (and it is rarely necessary to make changes, because Saxon provides
1264
         extensive system programming hooks to enable customization). The exception to this is that
1265
         in Saxon-HE, adapters for external object models, and localization code for non-English
1266
         languages, are provided in source form only.</p>
1267

    
1268
      <p>The modules included in the source code of Saxon-HE are also used, without modification, in
1269
         Saxon-PE and Saxon-EE. Source code for the additional components of the commercial editions
1270
         is not provided. The source code is the same between the Java and .NET platforms: both
1271
         products are generated from the same source, though there are some modules that apply only
1272
         to one platform or the other.</p>
1273

    
1274

    
1275
      <h2 class="subtitle">User documentation</h2>
1276

    
1277
      <p>User documentation (this documentation, together with API specifications for the Java and
1278
         .NET products) is also available for download from the SourceForge site. The resources
1279
         download contains exactly the same information as the documentation section of the Saxonica
1280
         website. It also contains this documentation in its original XML form, together with the
1281
         schemas and stylesheets used to publish it. Note that online documentation is available
1282
         only for a few recent Saxon versions; older versions can be downloaded from
1283
         SourceForge.</p>
1284

    
1285
      <h2 class="subtitle">Sample applications</h2>
1286

    
1287
      <p>The resources download contains a number of sample applications, found in the directory
1288
            <code>/samples</code>. They are described in the <a class="bodylink" href="/samples"
1289
            >Samples</a> section of the documentation. Most of the samples are equally applicable to
1290
         the Java and .NET platforms.</p>
1291
   </section>
1292

    
1293
   <section id="historical" title="Historical Note">
1294
      <h1>Historical Note</h1>
1295

    
1296

    
1297
      <p>Saxon has been under development since 1998. Until release 9.3, most of the code was
1298
         written by one person, Michael Kay, which has resulted in a high level of design integrity.
1299
         More recently the development team has expanded to three or four people, but Michael Kay
1300
         still retains control of all developments.</p>
1301

    
1302
      <p>Saxon was originally written to support an internal project in ICL (now part of <a
1303
            href="http://www.fujitsu.com" class="bodylink">Fujitsu</a>), and ICL continued to
1304
         sponsor development of Saxon until Michael Kay left the company in January 2001. ICL chose
1305
         not to market it as a commercial product, but to make the code available to the public
1306
         under the Mozilla public license. From 2001 through 2003 Michael Kay worked for <a
1307
            href="http://www.softwareag.com" class="bodylink">Software AG</a>, who continued to
1308
         sponsor the development of Saxon as an open source product.</p>
1309

    
1310
      <p>In March 2004 Michael Kay founded <a href="http://www.saxonica.com/" class="bodylink"
1311
            >Saxonica Limited</a> to provide ongoing development and support of Saxon as a
1312
         commercial venture. Saxonica continues to develop the open source version of
1313
         Saxon (Saxon-HE), while at the same time delivering 
1314
         additional software (Saxon-PE and Saxon-EE) as commercial offerings. The commercial
1315
         product incorporates the code of the open-source product in its entirety, with many additions
1316
         such as schema processing, streaming, advanced optimization, and multi-threading, and 
1317
         it is produced in accordance with the provisions defined
1318
         by the Mozilla Public License.</p>
1319

    
1320
      <p>The port of Saxon to the .NET platform was pioneered by Pieter Siegers Kort and M. David
1321
         Peterson, without any involvement from Saxonica. Their work was absorbed into the Saxonica
1322
         product line from Saxon 8.7 onwards. The Saxonica product used the same approach as the
1323
         previous Saxon.NET product for cross-compiling the code into CIL assemblies. In addition,
1324
         however, it provided a new .NET API for use by C# and other .NET applications, and made
1325
         much greater use of .NET services such as collations and regular expression processing.
1326
         This integration was done by Saxonica with generous advice from M. David Peterson. The
1327
         project would not have been possible without the IKVMC cross-compilation technology
1328
         developed by Jeroen Frijters, as well as the GNU Classpath developed by a large team of
1329
         individual enthusiasts. The use of GNU Classpath was subsequently discontinued and replaced
1330
         with OpenJDK. Further development of IKVMC has been discontinued; however the software is
1331
         robust and stable and we do not envisage any problems with its continued use.</p>
1332

    
1333
      <p>
1334
         <i>It is unfortunately not possible to release Saxon-HE under any license other than the
1335
            Mozilla Public License. Although the amount of code from external contributors is small,
1336
            it is not practically feasible to obtain the necessary permission from all these people
1337
            to release under a different license. From Saxon 9.5, Saxonica moved forward to the
1338
            Mozilla Public License 2.0; the differences are only of interest to lawyers, but the
1339
            language is more concise and readable.</i>
1340
      </p>
1341

    
1342
      <p>In 2010 Saxonica started work on a prototype of Saxon-CE, a cut-down version of Saxon
1343
         cross-compiled to run in the browser using the Google Web Toolkit (GWT). This was released as a product in June 2012.
1344
         However, the use of GWT imposed severe constraints, and in 2016 Saxonica embarked on a replacement, 
1345
         Saxon-JS, written in pure Javascript, which was released in February 2017.</p>
1346

    
1347
      <p>The name Saxon was chosen because originally it was a layer on top of SAX. Also, it
1348
         originally used the Ælfred parser (among others); those who study English history will know
1349
         that Ælfred was a Saxon king.</p>
1350
   </section>
1351
   <section id="support" title="Technical Support">
1352
      <h1>Technical Support</h1>
1353

    
1354

    
1355
      <p>
1356
         <i>This information applies primarily to the open-source product Saxon-HE.</i>
1357
      </p>
1358

    
1359
      <p>Please read the <a class="bodylink" href="/conditions">Conditions of Use</a>.</p>
1360

    
1361
      <p>The open-source Saxon-HE product comes with no warranty and no formal technical support
1362
         service; but although we make no formal commitments or guarantees, we try hard to be
1363
         helpful.</p>
1364
      <nav>
1365
         <ul/>
1366
      </nav>
1367

    
1368
      <section id="forum" title="Lists and forums for getting help">
1369
         <h1>Lists and forums for getting help</h1>
1370

    
1371

    
1372
         <p>If you have a general question about XSLT, XPath, XQuery or XSD coding, that is not specifically
1373
            related to Saxon, we recommend asking on <a href="http://stackoverflow.com/">StackOverflow</a>.
1374
            There are suitable tags for categorizing your question, and there is a helpful community of users
1375
            prepared to provide answers.</p>
1376
         
1377
         <p>You can also use <a href="http://stackoverflow.com/">StackOverflow</a> to ask Saxon-specific questions
1378
            (using the <code>saxon</code> tag); Saxonica keeps an eye on such questions and tries to ensure that
1379
            they are properly answered, but a question posted here should not be treated as a formal request
1380
            for Saxonica assistance. Many of the answers here come from other users rather than from Saxonica,
1381
            and Saxonica cannot take responsibility for their accuracy.</p>
1382
         
1383
         <p>For many years the <a href="http://www.mulberrytech.com/xsl/xsl-list/"
1384
               class="bodylink">xsl-list at MulberryTech</a> served the same purpose: 
1385
            these days it is probably more useful for deeper questions about the design principles
1386
            of the various languages, which often lead to interesting discussion among the experts.
1387
            The archives of the list can be searched at <a
1388
               href="http://xsl-list.markmail.org/" class="bodylink">MarkMail</a>.</p>
1389

    
1390
         <p>Similarly, there are a number of help forums for XQuery: for details see the XQuery home
1391
            page at <a href="http://www.w3.org/XML/Query" class="bodylink"
1392
               >http://www.w3.org/XML/Query</a>. The most active is <a href="http://www.xquery.com/"
1393
               class="bodylink">talk at xquery.com</a>.</p>
1394

    
1395
         
1396

    
1397
         <p>If you have questions specific to Saxon you can usually get an answer by raising them on
1398
            the Saxon help mailing list at <a href="https://lists.sourceforge.net/lists/listinfo/saxon-help"
1399
               class="bodylink">http://lists.sourceforge.net/lists/listinfo/saxon-help</a>. You will
1400
            need to register.</p>
1401

    
1402
         <p>The preferred place for Saxon-specific questions and bug reports is the bug database and
1403
            forum on the Saxonica community site at <a class="bodylink"
1404
               href="http://saxonica.plan.io/">saxonica.plan.io</a>. This is also where you can
1405
            search for details of known bugs. Saxonica monitors these forums and tries to manage
1406
            issues through to closure (though again, without any contractual commitment or
1407
            guarantees). </p>
1408

    
1409

    
1410
         <aside>Please do not use the bug tracker or forums on SourceForge. The information on these
1411
            is out of date and we no longer monitor them. Only the Saxon help <a
1412
               href="https://lists.sourceforge.net/lists/listinfo/saxon-help" class="bodylink">mailing list</a> on
1413
            SourceForge is active.
1414
            Instead use the bug tracker and forums on the <a class="bodylink"
1415
               href="http://saxonica.plan.io/">Saxonica community site</a> as referenced above.</aside>
1416

    
1417

    
1418
      </section>
1419

    
1420
      <section id="patches" title="Bugs and patches">
1421
         <h1>Bugs and patches</h1>
1422

    
1423

    
1424
         <p>If you hit something that looks like a bug, please check the known errors on the
1425
            Saxonica community site <a href="http://saxonica.plan.io/" class="bodylink"
1426
               >saxonica.plan.io</a>.</p>
1427

    
1428
         <p>You're welcome to submit attachments, but please remember that anything you post here will be available to
1429
            all users. If you submit a repro, please don't include the Saxon JAR file. 
1430
            And <b>never</b> include your license file!</p>
1431

    
1432
         <p>Saxon-EE and Saxon-PE users are provided with an email address that allows bug reports
1433
            to be sent to Saxonica privately if preferred.</p>
1434
         
1435
         <p>The open source code of Saxon-HE is maintained in a Subversion repository on the
1436
            <a href="http://dev.saxonica.com/" class="bodylink">dev.saxonica.com</a> site. This
1437
            exists solely to provide early access to source patches; it is
1438
            not used to deliver incremental releases of new functionality. Building the
1439
            JAR files is reasonably easy for an experienced Java programmer; an Ant script is
1440
            provided to assist with this, but it is likely to require customization to local
1441
            requirements (for example, deleting the parts concerned only with Saxon-EE or Saxon on
1442
            .NET). Building the .NET product is considerably more complicated, and although scripts
1443
            are provided, you should only attempt it if you have a good knowledge of both
1444
            platforms.</p>
1445

    
1446
         <p>If you wish to contribute modifications to the open source code, you will need to be
1447
            prepared to sign a contributor agreement defining the terms under which the code is made
1448
            available. This may need the written agreement of your employer. You should also check
1449
            with Saxonica in advance to discuss the format of test material to be submitted along
1450
            with code changes; proposed contributions have often been rejected because they came
1451
            without adequate tests.</p>
1452
      </section>
1453
   </section>
1454
   <section id="related" title="Related Products">
1455
      <h1>Related Products</h1>
1456

    
1457

    
1458
      <p>This section lists some Saxon add-ons and extensions produced by third parties. Saxonica
1459
         Limited takes no responsibility for the quality of these products.</p>
1460

    
1461
      <h2 class="subtitle">Open Source tools</h2>
1462

    
1463
      <p><a href="http://sourceforge.net/projects/kernowforsaxon/" class="bodylink">Kernow</a> is a
1464
         graphical front-end for Saxon. This is an open-source product developed by Andrew Welch. It
1465
         provides an effective alternative to the Saxon command line interface for users who prefer
1466
         a GUI for running ad-hoc transformations.</p>
1467

    
1468
      <p>On MAC OS/X, Todd Ditchendorf has produced <a href="http://www.ditchnet.org/xslpalette/"
1469
            class="bodylink">XSLPalette</a>, which is designed to integrate with your own choice of
1470
         text editor to provide XSLT development and debugging support.</p>
1471
      <h2 class="subtitle">Commercial Editors and Debuggers</h2>
1472

    
1473
      <p>A number of commercial XML IDEs provide support for XML, XSLT, and/or XQuery editing and
1474
         debugging, with the ability to configure Saxon as the chosen XSLT/XQuery processor. These
1475
         include:</p>
1476
      <ul>
1477
         <li>
1478
            <p>
1479
               <a href="http://www.stylusstudio.com/" class="bodylink">Stylus Studio</a>: offers
1480
               XSLT, XQuery, and XML Schema development and debugging, all using Saxon. It has
1481
               Saxon-EE built-in (but you will need a separate license to run Saxon-EE applications
1482
               outside the IDE).</p>
1483
         </li>
1484
         <li>
1485
            <p>
1486
               <a href="http://www.oxygenxml.com/" class="bodylink">Oxygen XML Editor</a> offers XSLT and XML
1487
               Schema development and debugging for Saxon. It has Saxon-EE built-in (but you will
1488
               need a separate license to run Saxon-EE applications outside the IDE).</p>
1489
         </li>
1490
         <li>
1491
            <p>A budget XML Editor and Debugger for Saxon is <a href="http://www.editix.com/"
1492
                  class="bodylink">EditiX</a>, with prices starting at $119.</p>
1493
         </li>
1494
         <li>
1495
            <p>
1496
               <a href="http://www.altova.com/" class="bodylink">XML Spy from Altova</a> allows you
1497
               to configure Saxon as your XSLT or XQuery processor, but does not provide Saxon
1498
               debugging. If you want to run Saxon-PE or -EE, you will need your own license. There
1499
               is also <a href="https://www.xml-buddy.com/"
1500
                  class="bodylink">a third-party plug-in</a> that allows Saxon-EE to be used for
1501
               schema validation.</p>
1502
         </li>
1503
      </ul>
1504
      <h2 class="subtitle">XQuery Documentation</h2>
1505

    
1506
      <p><strong>xqDoc</strong> is a Javadoc-like documentation tool for XQuery. It works with
1507
         Saxon, and is available either as a free-standing tool from <a href="http://xqdoc.org/"
1508
            class="bodylink">http://xqdoc.org/</a> or as part of <a
1509
            href="http://www.stylusstudio.com/" class="bodylink">Stylus Studio</a>.</p>
1510
   </section>
1511
</article>
(1-1/21)