diff --git a/.travis.yml b/.travis.yml index 92352d4f..8fec2e01 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,9 +13,8 @@ services: - docker env: - # Deactivated for RC releases beween 4.7.1 and 5.0.0 - # - img=existdb/existdb:latest - - img=existdb/existdb:release + - img=existdb/existdb:latest + # - img=existdb/existdb:release cache: directories: @@ -37,7 +36,7 @@ before_script: script: - mvn validate - mvn test - - npm run cypress + - npm run cypress -- --record after_success: - docker ps diff --git a/README.md b/README.md index 2c40a948..e48907a3 100644 --- a/README.md +++ b/README.md @@ -48,5 +48,7 @@ The full test-suite consists of validation, unit, and integration tests, it runs Both unit and integration tests, expect a running instance of exist with a copy of the documentation app installed reachable at `localhost:8080` and an empty admin password. It might be necessary to skip test execution during building from time to time, use: `mvn clean package -DskipTests`. +You can view recordings of the previous integration test runs on our [Cypress Dashboard](https://dashboard.cypress.io/#/projects/h8zx19/runs) + ## License LGPLv2.1 [eXist-db.org](http://exist-db.org/exist/apps/homepage/index.html) diff --git a/cypress.json b/cypress.json index a5f1e9d2..0b0ea89a 100644 --- a/cypress.json +++ b/cypress.json @@ -1,5 +1,6 @@ { "baseUrl": "http://localhost:8080/exist/apps/doc", + "projectId": "h8zx19", "fileServerFolder": "src/main/xar-resources", "ignoreTestFiles": "src/test/cypress/integration/examples/*.js", "fixturesFolder": "src/test/cypress/fixtures", @@ -7,5 +8,6 @@ "pluginsFile": "src/test/cypress/plugins/index.js", "screenshotsFolder": "src/test/cypress/screenshots", "supportFile": "src/test/cypress/support/index.js", - "videosFolder": "src/test/cypress/videos" + "videosFolder": "src/test/cypress/videos", + "projectId": "h8zx19" } diff --git a/package-lock.json b/package-lock.json index f4b2f50a..afc2b07c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "exist-documentation", - "version": "4.2.0", + "version": "5.0.0-RC3", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -6493,9 +6493,9 @@ "dev": true }, "mixin-deep": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", @@ -10555,9 +10555,9 @@ "dev": true }, "set-value": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", "dev": true, "requires": { "extend-shallow": "^2.0.1", @@ -11434,38 +11434,15 @@ "dev": true }, "union-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", - "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", - "set-value": "^0.4.3" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "set-value": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", - "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.1", - "to-object-path": "^0.3.0" - } - } + "set-value": "^2.0.1" } }, "uniq": { diff --git a/package.json b/package.json index 9d873129..7f57ac45 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "exist-documentation", - "version": "4.2.0", + "version": "5.0.0-RC3", "description": "Documentation package for eXist-db", "scripts": { "test": "standard 'src/test/**/*.js' && mocha src/test/mocha/ --recursive --exit", diff --git a/pom.xml b/pom.xml index 67ede1ca..ecf019b4 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.exist-db exist-documentation - 4.2.2-SNAPSHOT + 5.0.0-SNAPSHOT eXist-db Documentation Documentation package for eXist-db @@ -48,7 +48,7 @@ 1.8 1.8 - 4.7.0 + 5.0.0-RC7 v11.15.0 6.9.0 @@ -109,13 +109,14 @@ install-node-and-npm - generate-resources + compile npm version bump npm + compile version --no-git-tag-version --allow-same-version=true ${project.version} @@ -125,6 +126,7 @@ npm + compile ci @@ -135,6 +137,7 @@ gulp + compile mocha tests diff --git a/src/main/xar-resources/data/advanced-installation/advanced-installation.xml b/src/main/xar-resources/data/advanced-installation/advanced-installation.xml index b0cd975b..aca44e5c 100644 --- a/src/main/xar-resources/data/advanced-installation/advanced-installation.xml +++ b/src/main/xar-resources/data/advanced-installation/advanced-installation.xml @@ -8,7 +8,7 @@ Advanced Installation Methods - 1Q18 + 2Q19 installation operations @@ -46,25 +46,6 @@ background service which is automatically launched during system start-up. This can be convenient, especially for servers. eXist-db continues to run even after users have logged off. - eXist-db comes with pre-configured scripts that use YAJSW (Yet Another Java Service - Wrapper) to handle the setup procedure. The scripts for this are contained in the - directory tools/yajsw. - Out of the box the following mainstream platforms are supported: - - - Windows x86 (32bit/64bit) - - - Linux x86 (32bit/64bit) & IA (64bit) - - - macOS x86 (32bit/64bit) - - - Solaris x86 (32bit/64bit) & SPARC (32bit/64bit) - - @@ -81,10 +62,6 @@ Choose Install eXist-db as Service from eXist-db's entry in the Windows start menu. - - Run tools/yajsw/bin/installService.bat from the command - line. - Installing eXist-db as a service on Windows requires full administrator rights. @@ -98,9 +75,6 @@ - Launch it via the service manager (as shown in the screenshot above) or from the - command line: - tools\yaysw\bin\startService.bat @@ -109,7 +83,7 @@ Unix/Linux The scripts for running eXist-db as a service for Unix and Linux based system - (among which MacOS)can be found in the tools/yajsw/bin/ + (among which MacOS) can be found in the tools/serviced/ sub-directory. Run the following command to get eXist-db started during initialization of the system: @@ -168,17 +142,6 @@ - - - - - Other platforms - - Support for additional platforms can be bootstrapped by looking at templates in - the tools/yajsw/templates sub-directory. Consult the YAJSW - documentation for more information. - @@ -187,8 +150,8 @@ Alternatives for scripts in the bin Directory Included in the distribution are a number of useful .sh (Unix - Shell) and .bat (DOS batch) programs located in the - bin sub-directory. Their names speak for themselves. + Shell) and .bat (Windows batch) programs located in the + bin sub-directory. Their names speak for themselves. However, if you find that programs do not launch, you can try to manually launch them on the command-line without the scripting wrapper. This often provides useful debugging information. @@ -197,7 +160,6 @@ startup.sh (Unix) / startup.bat (Windows) - java -jar start.jar jetty Starts the included Jetty web server at port 8080. eXist runs as a web application, located at http://localhost:8080/exist/. @@ -206,7 +168,7 @@ shutdown.sh (Unix) / shutdown.bat (Windows) - java -jar start.jar shutdown -p youradminpassword + shutdown.sh -p youradminpassword Closes the running instance of eXist. If eXist has been started with startup.sh, calling shutdown.sh will also stop the Jetty web server. Otherwise, only the database is stopped by @@ -215,22 +177,11 @@ shutdown before killing the server process. - - server.sh (Unix) / server.bat (Windows) - - java -jar start.jar standalone - Launches eXist as a stand-alone server process. In this setup, eXist is - only accessible through the XMLRPC and the built-in HTTP interface. - - client.sh (Unix) / client.bat (Windows) - java -jar start.jar client Launches the Java Admin - Client. This application is also launched if no application is - selected on the command-line, like this: - java -jar start.jar + Client. diff --git a/src/main/xar-resources/data/advanced-installation/listings/listing-2.txt b/src/main/xar-resources/data/advanced-installation/listings/listing-2.txt index 232a395f..3859ad17 100644 --- a/src/main/xar-resources/data/advanced-installation/listings/listing-2.txt +++ b/src/main/xar-resources/data/advanced-installation/listings/listing-2.txt @@ -1,11 +1,11 @@ -Wolfgangs-MacBook-Air:eXist wolf$ java -jar installer/eXist-db-setup-2.0RC2-rev17974.jar -console +$ java -jar exist-installer/target/exist-installer-5.0.0-RC8-SNAPSHOT.jar Select target path [/Users/wolf/Source/trunk/eXist] /Applications/eXist/ press 1 to continue, 2 to quit, 3 to redisplay 1 Set Data Directory Please select a directory where eXist will keep its data files. On Vista and Windows 7, this should be outside the usual 'Program Files' directory: -Data dir: [webapp/WEB-INF/data] +Data dir: [data] press 1 to continue, 2 to quit, 3 to redisplay 1 @@ -40,12 +40,12 @@ press 1 to continue, 2 to quit, 3 to redisplay [ Starting processing ] Starting process Setting admin password ... (1/1) --- Starting embedded database instance --- -File lock last access timestamp: 30.12.2012 /Applications/eXist/webapp/WEB-INF/data/dbx_dir.lck -Found a stale lockfile. Trying to remove it: /Applications/eXist/webapp/WEB-INF/data/dbx_dir.lck -File lock last access timestamp: 30.12.2012 /Applications/eXist/webapp/WEB-INF/data/journal.lck -Found a stale lockfile. Trying to remove it: /Applications/eXist/webapp/WEB-INF/data/journal.lck +File lock last access timestamp: 30.12.2012 /Applications/eXist/data/dbx_dir.lck +Found a stale lockfile. Trying to remove it: /Applications/eXist/data/dbx_dir.lck +File lock last access timestamp: 30.12.2012 /Applications/eXist/data/journal.lck +Found a stale lockfile. Trying to remove it: /Applications/eXist/data/journal.lck Dez 30, 2012 10:13:26 PM org.expath.pkg.repo.util.Logger info -INFO: Create a new repository with storage: File system storage in /Applications/eXist/webapp/WEB-INF/expathrepo +INFO: Create a new repository with storage: File system storage in /Applications/eXist/data/expathrepo Setting admin user password... --- Initialization complete. Shutdown embedded database instance --- [ Console installation done ] \ No newline at end of file diff --git a/src/main/xar-resources/data/ant-tasks/ant-tasks.xml b/src/main/xar-resources/data/ant-tasks/ant-tasks.xml index b69ff37f..f3b1cac4 100644 --- a/src/main/xar-resources/data/ant-tasks/ant-tasks.xml +++ b/src/main/xar-resources/data/ant-tasks/ant-tasks.xml @@ -8,7 +8,7 @@ Ant Tasks - 1Q18 + 2Q19 operations @@ -16,10 +16,10 @@ - eXist-db provides a library for the Ant build tool to automate common system administration and operation - tasks, like backup/restore or importing files. Ant is included in the eXist-db - distribution (only if you've installed the eXist-db source code). + eXist-db provides a library for the Ant build tool to automate common system administration and + operation tasks, like backup/restore or importing files. The latest version of eXist-db's + Ant Tasks can be found on Maven Central as the artifact exist-ant. @@ -35,22 +35,11 @@ <project xmlns:xdb="http://exist-db.org/ant" … > - Import the eXist-db tasks by adding the following code: + Import the eXist-db tasks with Ivy and then add the following code: - - Setup the classpath (the property ${server.dir} must - point to the eXist-db installation directory): - - - - For a working example have a look into the file - webapp/xqts/build.xml, which is used to prepare the database for - running the xquery test suite. - - @@ -848,7 +837,8 @@ eXist-db (remote or local). Supply your own values for the source and target user, pass, and url properties. You can find this Ant script under the - samples/ant directory. + $EXIST_HOME/exist-samples/src/main/resources/org/exist/samples/ant + directory. diff --git a/src/main/xar-resources/data/ant-tasks/listings/listing-1.xml b/src/main/xar-resources/data/ant-tasks/listings/listing-1.xml index a4780572..9f9e9197 100644 --- a/src/main/xar-resources/data/ant-tasks/listings/listing-1.xml +++ b/src/main/xar-resources/data/ant-tasks/listings/listing-1.xml @@ -1,3 +1 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/main/xar-resources/data/ant-tasks/listings/listing-2.xml b/src/main/xar-resources/data/ant-tasks/listings/listing-2.xml deleted file mode 100644 index aadcf9b5..00000000 --- a/src/main/xar-resources/data/ant-tasks/listings/listing-2.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/src/main/xar-resources/data/author-reference/author-reference.xml b/src/main/xar-resources/data/author-reference/author-reference.xml index 3c60f63b..f73d4bc1 100644 --- a/src/main/xar-resources/data/author-reference/author-reference.xml +++ b/src/main/xar-resources/data/author-reference/author-reference.xml @@ -6,7 +6,7 @@ Author Reference - 1Q18 + 2Q19 authoring exist @@ -162,7 +162,7 @@ but does not because its too simple) Technical guidelines More information about DocBook itself can be found on the official DocBook site. + xlink:href="https://docbook.org/">official DocBook site. @@ -589,7 +589,7 @@ but does not because its too simple) A tag element surrounds its content with < and > and formats it like code. Meant to make life easier: xxx]]> is the shorter version of - <xxx>]]>. + ]]>. @@ -633,9 +633,9 @@ but does not because its too simple) Links to external sources are done with the link element. Place the target's full URI in the xlink:href attribute. For instance, - + link xlink:href="https://exist-db.org/exist/apps/homepage/index.html" links to the eXist + xlink:href="https://exist-db.org/exist/apps/homepage/index.html">eXist home page. To open the link on a new page, add condition="_blank". @@ -649,7 +649,7 @@ but does not because its too simple) use the link element. However, use the target's document name (without the .xml extension) as the link address. For instance, - + link xlink:href="documentation" links to the documentation home page. diff --git a/src/main/xar-resources/data/backup/backup.xml b/src/main/xar-resources/data/backup/backup.xml index 9cfc6913..cf5cc526 100644 --- a/src/main/xar-resources/data/backup/backup.xml +++ b/src/main/xar-resources/data/backup/backup.xml @@ -6,7 +6,7 @@ Database Backup and Restore - 1Q18 + 2Q19 operations @@ -160,7 +160,7 @@ eXist-db can also create incremental backups, meaning only resources which were modified since the last backup are backed up. All backups will be stored in ZIP format. The default storage directory is - webapp/WEB-INF/data/export/. You can configure a different + $EXIST_HOME/data/export/. You can configure a different directory in the configuration file conf.xml. @@ -170,7 +170,7 @@ You can use eXist-db's scheduler to schedule server-side backup and consistency check tasks. To do this, add the following definition to the scheduler section in the configuration file - conf.xml + $EXIST_HOME/etc/conf.xml @@ -309,12 +309,21 @@ eXist also includes a command-line JMX client. Call it with parameter -s to see the latest consistency report: - java -jar start.jar org.exist.management.client.JMXClient -s + + + Unix/Linux: + $EXIST_HOME/bin/jmxclient.sh -s + + + Windows: + $EXIST_HOME\bin\jmxclient.bat -s + + This may produce output as shown below: You can also subscribe to the notifications made available by the SanityReport MBean to be informed of sanity check results. Please consult eXist-db's JMX documentation on how to configure this. + xlink:href="jmx">JMX documentation on how to configure this. @@ -423,9 +432,9 @@ Stop the running eXist database instance - Change into directory EXIST_HOME/webapp/WEB-INF/data or + Change into directory $EXIST_HOME/data or another directory you specified as data directory in the configuration - (conf.xml). + ($EXIST_HOME/etc/conf.xml). Remove all .dbx, .lck and @@ -469,8 +478,9 @@ - A second dialog box will prompt you for an admin password to use for the - restore process. + A second dialog box will prompt you for an admin password to use for the restore process. You may also request that newer versions of + application packages already installed in the database should be overwritten by those contained in the backup. This is normally not + desirable, but you can check the checkbox if you still wish to do so. If the restore was accepted, a progress dialog box will display the @@ -496,6 +506,9 @@ __contents__.xml file to restore. For example: + The restore process compares app packages contained in the backup with those already installed in the database. By default, older versions of + an application package contained in the backup will not be restored if a newer version is installed in the database. To change this behavior and + enforce an overwrite, pass parameter --overwrite. @@ -550,7 +563,16 @@ This tool needs direct access to the database files, so you must stop the running database instance first if it is active. Use the following command line to start the utility as a GUI: - java -jar start.jar org.exist.backup.ExportGUI + + + Unix/Linux: + $EXIST_HOME/bin/export-gui.sh + + + Windows: + $EXIST_HOME\bin\export-gui.bat + + @@ -564,7 +586,16 @@ consistency check and a full backup. On a headless system use the command-line version instead (The -h parameter will get you a list of possible options): - java -jar start.jar org.exist.backup.ExportMain + + + Unix/Linux: + $EXIST_HOME/bin/export.sh + + + Windows: + $EXIST_HOME\bin\export.bat + + diff --git a/src/main/xar-resources/data/backup/listings/listing-7.txt b/src/main/xar-resources/data/backup/listings/listing-7.txt index 899e9b91..07b45943 100644 --- a/src/main/xar-resources/data/backup/listings/listing-7.txt +++ b/src/main/xar-resources/data/backup/listings/listing-7.txt @@ -1,6 +1,47 @@ -java -jar start.jar backup - -u [admin_username] - -p [admin_password] - -b [collection_path] - -d [target_path] - -ouri=[xml_uri] \ No newline at end of file +backup.sh --h + + Usage: backup.sh [Arguments] + + Arguments: + -b, --backup backup the specified collection. + : any string + Default: + -d, --dir specify the directory to use for + backups. + : a file path + Default: /Users/aretter/code/exist.maven/. + --deduplicate-blobs Deduplicate BLOBS in the backup. + : true or false + Default: false + -h, --help : an argument to print help for + Default: If no specific parameter is given the whole usage text is given + -o, --option= specify extra options: + property=value. For available properties see client. + properties. + =: where "" is any string and "" is any string + Default: Empty map + -p, --password set the password for connecting to + the database. + : any string + Default: + -P, --dba-password if the backup specifies a different + password for the admin user, use this option + to specify the new password. Otherwise + you will get a permission denied + : any string + Default: + -q, --quiet be quiet. Just print errors. + Default: disabled + -r, --restore read the specified __contents__.xml + file and restore the resources described + there. + : a file path + Default: /Users/aretter/code/exist.maven/. + -R, --rebuild rebuild the EXpath app repository + after restore. + Default: disabled + -u, --user set user. + : any string + Default: admin + -U, --gui start in GUI mode + Default: disabled \ No newline at end of file diff --git a/src/main/xar-resources/data/basic-installation/basic-installation.xml b/src/main/xar-resources/data/basic-installation/basic-installation.xml index d5e826c1..2c47c3a3 100644 --- a/src/main/xar-resources/data/basic-installation/basic-installation.xml +++ b/src/main/xar-resources/data/basic-installation/basic-installation.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Basic Installation - 3Q18 + 2Q19 installation getting-started @@ -48,8 +48,8 @@ environment. Java comes in a number of versions, so it is important that you use the version that eXist-db requires: Java 8 (since eXist-db 3.0). For instructions about running Java on your operating system, see Oracle's Installing - Java page. Installing + Java page. OpenJDK is a good open source alternative to the Oracle JVM and known to work well with eXist-db. eXist-db runs with both the Java JRE (Java Runtime Environment) and the JDK (Java @@ -64,7 +64,7 @@ on commercial Linux distributions. Users of other distributions are better served by distribution-specific instructions. More information for specific versions of Linux can be found at Amazon Linux, Ubuntu and Download the installer by following the download link on the eXist-db homepage page. We recommend + xlink:href="https://exist-db.org/">eXist-db homepage page. We recommend that you download the latest stable release. The installer is a single file called eXist-db-setup-[version].jar (for instance @@ -109,7 +109,7 @@ .jar file. On Mac OS X 10.7 and higher, a security feature called Gatekeeper + xlink:href="https://support.apple.com/kb/HT5290">Gatekeeper may prevent the installer from running since eXist-db is not registered with Apple. To circumvent the warning dialog and allow the installer to run, right-click or control-click the file and @@ -131,7 +131,7 @@ More advanced installation methods (like installing on a headless system) are - described in the Advanced + described in the Advanced Installation article. If you wish to compile and run exist from source please see the article on building eXist @@ -252,7 +252,7 @@ eXist-db can also be run as a background service. For more information see the - Advanced Installation + Advanced Installation article. @@ -303,14 +303,13 @@ Change (cd) to the directory where you installed eXist-db - (for instance, /usr/local/lib/exist/ for Linux, - /Applications/eXist/ for Mac, or C:\Program - Files\eXist for Windows). + (for instance, /opt/exist/ for Linux, + /Applications/eXist/ for Mac, or C:\eXist for Windows). - Simply calling start.jar will start eXist-db via the + Simply calling launcher.sh or launcher.bat will start eXist-db via the desktop launcher: - java -jar start.jar + $EXIST_HOME/bin/launcher.sh @@ -319,14 +318,14 @@ bin/ sub-directory. On Linux or Mac, enter bin/startup.sh, on Windows bin\startup.bat. More information about these start-up scripts in the Advanced Installation + xlink:href="advanced-installation#headless">Advanced Installation article. Having trouble? If you're having trouble launching eXist-db, see our articles on Troubleshooting and Advanced + xlink:href="advanced-installation#headless">Advanced Installation. @@ -352,7 +351,7 @@ Seeing it? Congratulations! (Not seeing it? See our article on Troubleshooting). + xlink:href="troubleshooting">Troubleshooting). All right, ready to dive in! Your local installation includes everything you need. Access is easy, through the applications on the bin/shutdown.sh -u admin -p youradminpassword bin/shutdown.bat -u admin -p youradminpassword - - From the command line, run the following Java command, using your admin - account's credentials: - java -jar start.jar shutdown -u admin -p youradminpassword - From the Java Admin Client: select Connection, Shutdown from diff --git a/src/main/xar-resources/data/beginners-guide-to-xrx-v4/beginners-guide-to-xrx-v4.xml b/src/main/xar-resources/data/beginners-guide-to-xrx-v4/beginners-guide-to-xrx-v4.xml index 4695c8e1..b7dde432 100644 --- a/src/main/xar-resources/data/beginners-guide-to-xrx-v4/beginners-guide-to-xrx-v4.xml +++ b/src/main/xar-resources/data/beginners-guide-to-xrx-v4/beginners-guide-to-xrx-v4.xml @@ -4,7 +4,7 @@ Creating CRUDS applications with XRX in eXist - 1Q18 + 2Q19 getting-started application-development @@ -57,7 +57,7 @@ To use this guide you will need to have following tools in place: - eXist: You will need to have eXist running on your local system. + eXist: You will need to have eXist running on your local system. By default eXist runs on port 8080 so that when you set your web browser to http://localhost:8080/exist/ you should see the eXist homepage come up. @@ -101,7 +101,7 @@ This example will use the following terms and concepts: XRX is the name of the web application architecture that we are introducing in this guide. The term XRX comes from the - combination of XForms, REST, and XQuery. The term was coined by Dan McCreary. XForms are used in the client (web browser), REST is + combination of XForms, REST, and XQuery. The term was coined by Dan McCreary. XForms are used in the client (web browser), REST is the interface between the client and the server, and XQuery is the server language. Two of the most significant advantages of XRX over other architectures are: (1) it does not require users to translate data into Java or .Net objects, and (2) it does @@ -235,7 +235,8 @@ interchange of applications, the EXPath Community has created a specification for application metadata, called EXPath Packaging System. eXist supports and extends this module. This tutorial will not cover this file's structure, but you - can learn more about this by reading . + can learn more about this by reading about the Package + Repository. You are always free to change the names of the collection or the queries, but as @@ -400,7 +401,7 @@ also creates a Lucene full text index for all words in the term name, term definition and term publish-status-code. (By using the repo.xml Deployment Descriptor's "prepare" field, you can automate the installation of this - collection.xconf file into the target location; see .) + collection.xconf file into the target location; see .) @@ -585,7 +586,7 @@ allows users to enter multi-line descriptions for definitions of terms. The last control is the xf:select1 control that allows the user to select one value from a list of values. (For a complete discussion of the XForms controls we - suggest you use the XForms Wikibook at http://en.wikibooks.org/wiki/XForms. The Input Form Controls section goes + suggest you use the XForms Wikibook at http://en.wikibooks.org/wiki/XForms. The Input Form Controls section goes through each of the controls in the XForms specification. In addition to the standard controls there are other controls that can also be integrated directly into XForms, such as rich-text editors.) @@ -709,7 +710,7 @@ Create an XQuery module to centralize some of the common code and reduce duplication and then reference these functions in each of your queries. For example, you could put the HTML boilerplate into a style module. You could also - explore eXist's HTML templating module; see . + explore eXist's HTML templating module. Change the list-items.xq to use HTML tables to view each @@ -769,7 +770,7 @@ Modify the collection configuration file for the /db/apps/terms/data collection to enable versioning when items are - updated. See . + updated. See Versioning Extensions. @@ -785,22 +786,22 @@ Wiki Books: - XForms Wikibook + XForms Wikibook Dan McCreary - XRX Wikibook + XRX Wikibook Dan McCreary - XQuery Wikibook + XQuery Wikibook Chris Wallace; Dan McCreary Articles: - XRX (web application architecture) + XRX (web application architecture) XRX: XQueries in eXist diff --git a/src/main/xar-resources/data/configuration/configuration.xml b/src/main/xar-resources/data/configuration/configuration.xml index b2e0693a..1be066f6 100644 --- a/src/main/xar-resources/data/configuration/configuration.xml +++ b/src/main/xar-resources/data/configuration/configuration.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Application Server Configuration - 1Q18 + 2Q19 operations @@ -423,7 +423,7 @@ <tag>db-connection</tag>/<tag>default-permissions</tag> element Specifies the default permissions for all resources and collections in eXist - (see User Authentication and Access + (see User Authentication and Access Control). When this is not configured, the default mod (similar to the Unix chmod command) is set to 0775 in the resources and @@ -463,7 +463,7 @@ workaround, which will be removed in the future. Please use the n-gram or full-text indexes for case-insensitive queries or - if that is impossible - specify a collation. + xlink:href="xquery#collations">collation. @@ -574,7 +574,7 @@ class and id. The other attributes, as well as any nested elements, are specific to the index implementation. Detailed information is available in the article on Configuring Database Indexes. + xlink:href="indexing#moduleconf">Configuring Database Indexes. @@ -594,7 +594,7 @@ Configuring indexes via the default settings is not recommended. If you need a global collection configuration, store one for the root collection /db. For more information, see Configuring Indexes. + xlink:href="indexing">Configuring Indexes. @@ -735,7 +735,7 @@ The serializer is responsible for serializing XML documents or document fragments back into XML. This configuration element defines default settings for various parameters, which can also be specified programmatically. All settings can be - overwritten by XQuery serialization + overwritten by XQuery serialization options. <tag>serializer</tag> attributes @@ -821,7 +821,7 @@ catalog files. Catalog files are used to locate DTDs, schemas and resolve external entities in general. Please refer to the corresponding documentation on XML Validation. + xlink:href="validation">XML Validation. @@ -990,7 +990,7 @@ which must point to the XQuery source code of the module, for instance: For the src attribute, eXist understands the same types of URIs as in an + xlink:href="xquery#module-system">same types of URIs as in an ordinary XQuery import statement. diff --git a/src/main/xar-resources/data/configuration/listings/listing-1.xml b/src/main/xar-resources/data/configuration/listings/listing-1.xml index 6ce14408..b231cfeb 100644 --- a/src/main/xar-resources/data/configuration/listings/listing-1.xml +++ b/src/main/xar-resources/data/configuration/listings/listing-1.xml @@ -1,7 +1,7 @@ - + - + \ No newline at end of file diff --git a/src/main/xar-resources/data/contentextraction/contentextraction.xml b/src/main/xar-resources/data/contentextraction/contentextraction.xml index 3e25f21e..275e8163 100644 --- a/src/main/xar-resources/data/contentextraction/contentextraction.xml +++ b/src/main/xar-resources/data/contentextraction/contentextraction.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Extracting Content from Binary Files - 1Q18 + 2Q19 application-development @@ -17,26 +17,12 @@ contains functions for extracting the content of the binary files, and returning the content as XML. In this form, the content can then be queried, indexed, and manipulated. It useful especially in conjunction with Lucene indexes. - The Content Extraction is built on the Apache + The Content Extraction is built on the Apache Tika library. Tika understands a large variety of formats, ranging from PDF documents to spreadsheets and image metadata. - - Enabling the Content Extraction Module - - To enable the content extraction module, edit - $EXIST_HOME/extensions/build.properties and set the - include.feature.contentextraction property to true: - - Next, run bin/build.sh or bin/build.bat to build the module. - You should see in the output the various libraries from the Tika project downloaded and - installed. - - - - Usage diff --git a/src/main/xar-resources/data/contentextraction/listings/listing-1.txt b/src/main/xar-resources/data/contentextraction/listings/listing-1.txt deleted file mode 100644 index 27d857e2..00000000 --- a/src/main/xar-resources/data/contentextraction/listings/listing-1.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Binary Content and Metadata Extraction Module -include.feature.contentextraction = true \ No newline at end of file diff --git a/src/main/xar-resources/data/dashboard/dashboard.xml b/src/main/xar-resources/data/dashboard/dashboard.xml index 0fd3e06e..7cd3870a 100644 --- a/src/main/xar-resources/data/dashboard/dashboard.xml +++ b/src/main/xar-resources/data/dashboard/dashboard.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Dashboard - 1Q18 + 2Q19 getting-started @@ -180,6 +180,6 @@ [To be completed...] Plugins are loaded and unloaded on demand via dojo's AMD loader. They are modular, self-contained units. To add a new plugin, you need to provide an HTML and a .js file, which defines a subclass of the base plugin class. The source code for the dashboard is - available on GitHub. + available on GitHub. --> diff --git a/src/main/xar-resources/data/deployment/deployment.xml b/src/main/xar-resources/data/deployment/deployment.xml index 615b0a41..d950d4ce 100644 --- a/src/main/xar-resources/data/deployment/deployment.xml +++ b/src/main/xar-resources/data/deployment/deployment.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Database Deployment - 1Q18 + 2Q19 operations java-development @@ -350,7 +350,7 @@ If your database is running in stand-alone mode, you must specify a different server URI. For instance, to stop eXist when running in stand-alone mode, listening on port 8088, use: - java -jar start.jar shutdown --uri=xmldb:exist://localhost:8088/xmlrpc + $EXIST_HOME/bin/shutdown.sh --uri=xmldb:exist://localhost:8088/xmlrpc diff --git a/src/main/xar-resources/data/development-starter/development-starter.xml b/src/main/xar-resources/data/development-starter/development-starter.xml index 7f3a2383..c00211ce 100644 --- a/src/main/xar-resources/data/development-starter/development-starter.xml +++ b/src/main/xar-resources/data/development-starter/development-starter.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Getting Started with Web Application Development - 1Q18 + 2Q19 getting-started application-development @@ -30,7 +30,7 @@ eXide. - An HTML templating framework for a clean + An HTML templating framework for a clean separation of HTML page content and application logic. @@ -44,7 +44,7 @@ Those working on data sets in TEI may want to look at TEI Publisher also. It includes an + xlink:href="https://teipublisher.com">TEI Publisher also. It includes an application generator tailored at digital editions. The created app packages include all the basic functionality needed for browsing the edition, searching it or producing PDFs and ePUBs. diff --git a/src/main/xar-resources/data/devguide_indexes/devguide_indexes.xml b/src/main/xar-resources/data/devguide_indexes/devguide_indexes.xml index 5c463069..96c1f5bf 100644 --- a/src/main/xar-resources/data/devguide_indexes/devguide_indexes.xml +++ b/src/main/xar-resources/data/devguide_indexes/devguide_indexes.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Developer's Guide to Modularized Indexes - 1Q19 + 2Q19 java-development indexes @@ -65,7 +65,7 @@ A spatial index that stores some of the geometric characteristics of Geography + xlink:href="https://www.opengeospatial.org/standards/gml">Geography Markup Language geometries (tested against GML version 2.1.2). For instance: @@ -74,19 +74,19 @@ The spatial referencing system (osgb:BNG for this polygon) The polygon itself, stored in a binary form (Well-Known + xlink:href="https://en.wikipedia.org/wiki/Well-known_text">Well-Known Binary) The coordinates of its bounding box @@ -310,8 +310,8 @@ index. void configure(BrokerPool pool, String dataDir, Element config) Notifies the Index a data directory (normally - ${EXIST_HOME}/webapp/WEB-INF/data) and the configuration element - in which it is declared. + ${EXIST_HOME}/data) and the configuration element in which it + is declared. void open() Method that is executed when the Index is opened, whatever it means. Consider this method as an initialization and allocate the necessary @@ -429,8 +429,9 @@ Returns an array of org.exist.dom.DocumentImpl.Occurrences that is an ordered list of the index entries, in a textual form, associated with the number of occurences for the entries and a list of the documents - containing them. For some indexes, the concept of ordered or textual occurrences - might not be meaningful. + containing them. + For some indexes, the concept of ordered or textual occurrences + might not be meaningful. @@ -520,10 +521,10 @@ the Indexes and org.exist.xquery.* for their associated Modules. There is also a dedicated location for required external libraries and for the test cases. The build system should normally be able to - download the required libraries and build all the files automatically, in particular the - extension-modules Ant target, and even launch the tests provided - that the DB's configuration file declares the Indexes (see above) and - their associated Modules (see below). + download the required libraries and build all the files automatically, and even launch + the tests provided that the DB's configuration file declares the + Indexes (see above) and their associated + Modules (see below). The described spatial Index heavily relies on the excellent open source librairies provided by the Geotools project. We have experienced a few problems that will be mentioned @@ -729,7 +730,7 @@ WKT VARCHAR The Well-Known + xlink:href="https://de.wikipedia.org/wiki/Well_Known_Text">Well-Known Text representation of the geometry @@ -787,7 +788,7 @@ VARCHAR The WKT representation of the geometry In the epsg:4326 + xlink:href="https://en.wikipedia.org/wiki/EPSG:4326">epsg:4326 SRS @@ -962,7 +963,7 @@ GML parsing. It is null if the geometry is topologically not well formed. This latter case is maybe a too restrictive feature of Geotools parser which also throws NullPointerExceptions (!) if the GML is somehow not - well-formed. See GEOT-742 for more information on this issue. documentDeleted is a flag indicating that the current document has been deleted and that we don't have to process it any more. Remember that @@ -1075,13 +1076,13 @@ org.geotools.gml.producer.GeometryTransformer which needs some polishing because, despite it is called a transformer, it doesn't cope easily with a Handler and returns a... String ! See GEOT-1315. The last method is also a utility method: It implements a workaround for our test file SRS which isn't yet known by Geotools libraries (see GEOT-1307), then it tries to get the transformation from our cache. If it doesn't succeed, it tries to find one in the libraries that are in the CLASSPATH. Should those libraries lack the Bursa-Wolf parameters, it will make another attempt @@ -1259,7 +1260,7 @@ operates in the http://exist-db.org/xquery/spatial namespace (whose default prefix is spatial). The functions signatures are documented together with the functions themselves in - this page. + the XQuery function documentation. Here we will only look at their eval() methods. The first functions set we will describe is org.exist.xquery.modules.spatial.FunSpatialSearch, which performs @@ -1327,36 +1328,7 @@ few of its features will be demonstrated, but we will explain again what happens under the hood. The first step is to make sure to have a recent enough release version of eXist: - 4.7.0 or later. - Then, you have to prepare eXist to build the spatial index library. To do that, go - into the ${EXIST_HOME}/extensions/indexes directory and, if - necessary, copy build.properties to a new file, - local.properties. - Open this file and check that include.index.spatial is set to - true. - Invoke build.bat clean or build.sh clean, - depending on your platform, from a command line. This will generate - ${EXIST_HOME}/extensions/indexes/build.xml, which is needed by - the modularized indexes infrastructure. - Invoke build.bat extension-indexes or build.sh - extension-indexes, depending on your platform, from a command line. - If necessary, the required external (large) libraries will be downloaded into the - ${EXIST_HOME}/extensions/indexes/spatial/lib directory. Most - of them have a gt2-*.jar name. Make sure to make them available - in your application's classpath ! - - If you are behind a proxy, do not forget to change the settings in - ${EXIST_HOME}/build.properties. - - A file named exist-spatial-module.jar should be generated into - the ${EXIST_HOME}/lib/extensions directory. - Enable the spatial index and the spatial module in - ${EXIST_HOME}/conf.xml if it is not already done. - The spatial index: - - The spatial module: - - This concludes the prerequisites for running the test. + 4.7.0 or later, and Java 8. Our demonstration file is taken from the Ordnance Survey of Great-Britain's WWW site which offers port-talbot.gml) this will allow eXist to recognise it as an XML file. - If you have previously executed build test, the file should + If you have previously executed mvn test, the file should have been downloaded and gunzipped for you in - ${EXIST_HOME}/extensions/indexes/spatial/src/test/resources. + $EXIST_HOME/extensions/indexes/spatial/target/test-classes. Since this file refers to an OSGB-hosted schema, we will need to bypass validation - in ${EXIST_HOME}/conf.xml. + in ${EXIST_HOME}/etc/conf.xml. Make sure the mode value is set like this: <validation mode="no"> We are now ready to start the demonstration and we will use the interactive client @@ -1414,7 +1386,7 @@ seconds, including some default fulltext indexing. Let's close the upload window and quit the interactive client. Let's look our our GML file looks like on GML Viewer, a free viewer provided by - Snowflake software: @@ -1424,12 +1396,11 @@ If you want to have a look at the spatial index HSQLDB, which, if you are using - the default data-dir, is in - ${EXIST_HOME}/webapp/WEB-INF/data/spatial_index.* there is a - dedicated script file in - ${EXIST_HOME}/extensions/indexes/spatial/. to launch HSQL's GUI - client: Use either hsql.bat or hsql.sh - [data-dir] (you only need to supply data-dir if it is not the default + the default data-dir, is in ${EXIST_HOME}/data/spatial_index.* + there is a dedicated script file in + ${EXIST_HOME}/extensions/indexes/spatial/. to launch HSQL's + GUI client: Use either hsql.bat or hsql.sh + [data-dir] (you only need to supply data-dir if it is not the default one). If the SQL command SELECT * FROM SPATIAL_INDEX_V1; is executed, the result window shows that 21961 geometries have been indexed. diff --git a/src/main/xar-resources/data/devguide_indexes/listings/listing-120.xml b/src/main/xar-resources/data/devguide_indexes/listings/listing-120.xml deleted file mode 100644 index 6ccc8a0a..00000000 --- a/src/main/xar-resources/data/devguide_indexes/listings/listing-120.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/main/xar-resources/data/devguide_indexes/listings/listing-121.xml b/src/main/xar-resources/data/devguide_indexes/listings/listing-121.xml deleted file mode 100644 index 6e17049e..00000000 --- a/src/main/xar-resources/data/devguide_indexes/listings/listing-121.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - ... - - - - ... - - - - ... - - - \ No newline at end of file diff --git a/src/main/xar-resources/data/devguide_log4j/devguide_log4j.xml b/src/main/xar-resources/data/devguide_log4j/devguide_log4j.xml index 0bdfe8e9..0bb64897 100644 --- a/src/main/xar-resources/data/devguide_log4j/devguide_log4j.xml +++ b/src/main/xar-resources/data/devguide_log4j/devguide_log4j.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Log4j Logging Guide - 1Q18 + 2Q19 java-development @@ -11,7 +11,7 @@ - This article explains how to add logging to eXist-db using Log4j in Java code. + This article explains how to add logging to eXist-db using Log4j in Java code. @@ -29,7 +29,7 @@ A big issue with the use of the logging system in troubleshooting is that it requires a restart for changes to the log configuration. Customers are often extremely reluctant to restart their production servers. - To amend these problems Log4j is introduced. Log4j is the most powerful Java-based logging library + To amend these problems Log4j is introduced. Log4j is the most powerful Java-based logging library available today and is used by most of the application servers on the market. @@ -113,13 +113,13 @@ Various free and commercial products provide specialized viewing capabilities for Log4j logs. Apache provides a very useful Log4j log - viewer Chainsaw. + viewer Chainsaw. - For more information visit the Log4j website website. + For more information visit the Log4j website website. Java 1.4 and higher’s java.util.logging API is very similar to @@ -154,8 +154,9 @@ Acquire a logger: - import org.apache.Log4j.Logger; -… private Logger logger = Logger.getLogger("xx.method.server.httpgw"); + import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +… private Logger logger = LogManager.getLogger("xx.method.server.httpgw"); Remarks: @@ -277,7 +278,8 @@ Configuring Log4j - The Log4j.xml configuration file controls Log4j’s behavior. + The $EXIST_HOME/etc/log4j2.xml configuration file controls Log4j’s + behavior. It is used mainly to set a given level of log output for loggers. Without such configuration only ERROR and FATAL log events will show up. Therefore you have to change @@ -514,17 +516,6 @@ - - Don’t be afraid to use Log4j in any tier or JVM - - Log4j currently is not included in the client jar set. The only reason - for this is that currently no clients use Log4j. However, if the - log4j.jar is needed in the client simply include it in the - client's jar set. Java’s Pack200 technology reduces jars to 25% their - original size on average. - - - @@ -648,4 +639,4 @@ -
\ No newline at end of file +
diff --git a/src/main/xar-resources/data/devguide_rest/devguide_rest.xml b/src/main/xar-resources/data/devguide_rest/devguide_rest.xml index 8e83f1f6..6c355835 100644 --- a/src/main/xar-resources/data/devguide_rest/devguide_rest.xml +++ b/src/main/xar-resources/data/devguide_rest/devguide_rest.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> REST-Style Web API - 1Q18 + 2Q19 application-development interfaces @@ -323,7 +323,7 @@ images, CSS stylesheets or Javascript files into a database collection, it is entirely possible to serve a complex application out of the database. For instance, have a look at the example Using + xlink:href="https://demo.exist-db.org/exist/apps/demo/examples/web/index.html">Using XQuery for Web Applications on the demo server. diff --git a/src/main/xar-resources/data/devguide_xmldb/devguide_xmldb.xml b/src/main/xar-resources/data/devguide_xmldb/devguide_xmldb.xml index a668ceb8..85f386c1 100644 --- a/src/main/xar-resources/data/devguide_xmldb/devguide_xmldb.xml +++ b/src/main/xar-resources/data/devguide_xmldb/devguide_xmldb.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Writing Java Applications with the XML:DB API - 1Q18 + 2Q19 java-development @@ -21,9 +21,10 @@ Introduction The preferred way to work with eXist-db when developing Java applications is to use - the XML:DB API. eXist-db's implementation of the XML:DB standards follows the XIndice - implementation, and conforms to the latest working drafts put forth by the XML:DB Initiative. For more - information, refer to the Javadocs for this API. + the XML:DB API. eXist-db's implementation of the XML:DB standard conforms to the latest + working drafts put forth by the XML:DB Initiative. For + more information, refer to the Javadocs for this API. The basic components employed by the XML:DB API are drivers, collections, resources and services. @@ -37,11 +38,10 @@ document or a document fragment, selected by a previously executed XPath query. Finally, services are requested for special tasks such as querying a collection with XPath, or managing a collection. - There are several XML:DB examples provided in eXist's samples - directory . To start an example, use the start.jar jar file and pass - the name of the example class as the first parameter, for instance: - - + There are also several XML:DB examples provided in the + sample code + that accompanies the Integration chapter of the eXist-db book. + @@ -49,8 +49,10 @@ Using the XML:DB API - Programming with the XML:DB API is straightforward. You will find some code examples - in the samples/org/exist/examples/xmldb directory. + For working with eXist-db via XML:DB API, you will need two dependencies, one for the XML:DB API + and one for eXist-db's implementation of the API. These dependencies are available from Maven and should + be added to your Maven pom.xml or project's dependency tool like so: + In the following simple example, a document is retrieved from the eXist server and printed to standard output. @@ -156,7 +158,10 @@ Extensions to XML:DB - eXist provides extensions on top of the XML:DB specification. + eXist provides extensions on top of the XML:DB specification. + If you wish to use these extensions, you should make sure that the scope for your exist-core + dependency is set to compile. + @@ -205,4 +210,4 @@ in the configuration files. -
\ No newline at end of file + diff --git a/src/main/xar-resources/data/devguide_xmldb/listings/listing-1.txt b/src/main/xar-resources/data/devguide_xmldb/listings/listing-1.txt index 1d49ba97..f1e7bc98 100644 --- a/src/main/xar-resources/data/devguide_xmldb/listings/listing-1.txt +++ b/src/main/xar-resources/data/devguide_xmldb/listings/listing-1.txt @@ -1 +1,12 @@ -java -jar start.jar org.exist.examples.xmldb.Retrieve [- other options] \ No newline at end of file + + net.sf.xmldb-org + xmldb-api + 1.7.0 + + + + org.exist-db + exist-core + 5.0.0 + runtime + \ No newline at end of file diff --git a/src/main/xar-resources/data/devguide_xmlrpc/devguide_xmlrpc.xml b/src/main/xar-resources/data/devguide_xmlrpc/devguide_xmlrpc.xml index 0b381be3..cddc3da4 100644 --- a/src/main/xar-resources/data/devguide_xmlrpc/devguide_xmlrpc.xml +++ b/src/main/xar-resources/data/devguide_xmlrpc/devguide_xmlrpc.xml @@ -23,10 +23,10 @@ XML-RPC (XML Remote Procedural Call) provides a simple way to access eXist-db by calling remote procedures from a wide variety of programming languages and environments, like CGI scripts, PHP, JSP and more. For a Java server, eXist uses the XML-RPC library created by Hannes Wallnoefer which recently has moved to Apache (see: - http://xml.apache.org/xmlrpc). + http://xml.apache.org/xmlrpc). Perl examples use the RPC::XML package, which should be available at every CPAN mirror (see - CPAN). + CPAN). The following is a small example, which shows how to talk to eXist-db from Java using the Apache XML-RPC library. This example can be found in samples/org/exist/examples/xmldb/Retrieve.java. diff --git a/src/main/xar-resources/data/documentation/documentation.xml b/src/main/xar-resources/data/documentation/documentation.xml index e1ee2b39..0817092d 100644 --- a/src/main/xar-resources/data/documentation/documentation.xml +++ b/src/main/xar-resources/data/documentation/documentation.xml @@ -3,27 +3,26 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Documentation - 1Q18 + 2Q19 getting-started Welcome to eXist-db. This article serves as an index to the eXist-db documentation - articles, which will help you getting to know, install and use eXist-db. + articles, which will help you get to know, install, and use eXist-db. Getting Started - The following articles and resources will help you getting started using eXist. + The following articles and resources will help you get started using eXist-db. Basic Installation - How to do a basic installation of eXist-db and fire it up for the first - time. + How to install eXist-db and fire it up for the first time. @@ -31,7 +30,7 @@ For the first steps with your freshly installed eXist-db, watch the screencasts available on the eXist-db homepage + xlink:href="https://exist-db.org">eXist-db homepage. @@ -46,54 +45,52 @@ Getting Help - This article will tell you where to go for help and advice. + Where to go for help and advice. Dashboard - Learn how to use and populate eXist-db's main user interface, the + How to use and populate eXist-db's main user interface, the dashboard. Uploading files - Learn how to get files in and populate your database. + How to get files in and populate your database. WebDAV - One of the ways to easily view and populate the database is using the - WebDAV protocol. + How to upload and manage files in the database with a WebDAV client. Using Collections in eXist-db - Provide information about how to set up a collection structure in - eXist-db. + How to set up a collection structure in eXist-db. Learning XQuery - Provides tips and resources for newcomers to XQuery and eXist-db + Tips and resources for newcomers to XQuery and eXist-db. How to use oXygen together with eXist-db If you're using oXygen, this article describes how - to make the most of it in combination with eXIst-db. + xlink:href="https://oxygenxml.com/">oXygen, this article describes how + to make the most of it in combination with eXist-db. How to report an issue - If you think you found a bug, this article will tell you how to report + If you think you've found a bug, this article will tell you how to report it. @@ -116,42 +113,42 @@ Learning XQuery - This provides tips and resources for newcomers to XQuery and - eXist-db + Tips and resources for newcomers to XQuery and eXist-db. XQuery in eXist-db This discusses the XQuery implementation of eXist-db for the somewhat more - experienced user + experienced user. KWIC (Keywords In Context) - This article will learn you how to display search results in context - (parts of the document surrounding the search match). + How to display search results in context (parts of the document + surrounding the search match). XQuery Update Extensions - Tells you how to update XML stored in the database using eXist-db's update + How to update XML stored in the database using eXist-db's XQuery Update extension. xqDoc - Describes the built-in XQuery documentation system. + Describes eXist-db's support for the xqDoc, a standard for documenting your + XQuery functions and libraries with specially-formatted comments. - XQsuite + XQSuite - This is an annotation-based framework that allows you to add tests to - XQuery functions and execute them. + How to add tests to your XQuery functions with XQSuite, an annotation-based + framework. @@ -171,22 +168,21 @@ Getting Started with Web Application Development - This will help you build a basic web application using the built-in HTML templating framework. + How to build a basic web application using the built-in HTML templating framework. Using Collections in eXist-db - Provide information about how to set up your application's collection - structure in eXist-db. + How to set up your application's collection structure in eXist-db. xmldb module - Provides an overview of the functions to query and manipulate the database - contents in the xmldb module. + An overview of the xmldb XQuery function module for querying and + manipulating database contents. @@ -199,33 +195,31 @@ XSL Transformations - Explains how to perform XSL Transformation in XQuery code. + How to perform XSL Transformation with XQuery. Indexing - This will provide you with an overview of eXist-db's indexes and how to - configure them. More about indexing in: + An overview of eXist-db's indexes and how to configure them. More about + indexing in: Full Text indexing - Will provide with all the information necessary to use - eXist-db's Lucene based full-text indexing. + How to use eXist-db's Lucene based full-text indexing. N-Gram Index - Provides information on how to configure the - ngram index. + How to configure the ngram index. Range Index - This article describes eXist-db's super fast modularized range + How to use eXist-db's super fast modularized range index based on Apache Lucene. There is also an older version of the range index, kept for compatibility @@ -244,21 +238,21 @@ XML Validation - Explains how to do XML validation in eXist-db. + How to validate XML in eXist-db. - XQsuite + XQSuite - This is an annotation-based framework that allows you to add - unit tests to XQuery functions and execute them. + XQSuite is an annotation-based framework that allows you to + add unit tests to XQuery functions and execute them. Integration testing - Provides information on how to configure automated test - pipelines, and recommends minimal test configurations. + How to configure automated test pipelines, and recommends + minimal test configurations. @@ -267,15 +261,15 @@ XInclude Support - Explains how to use XInclude in eXist-db. + How to use XInclude in eXist-db. The beginners guide to XRX - This article will learn you how to create a simple application using XRX - (XForms, REST, XQuery). + How to create a simple application using XRX (XForms, REST, and + XQuery). @@ -287,22 +281,21 @@ Content extraction - Shows how to extract and index non-XML contents, like PDF or Word + How to extract and index non-XML contents, like PDF or Word documents. REST-Style Web API - Explains how to use eXist-db's REST interface, a useful tool in building + How to use eXist-db's REST interface, a useful tool in building applications. HTTP Request/Session - Provides information about the functions available working with HTTP - requests and sessions. + An overview of functions for working with HTTP requests and sessions. @@ -321,26 +314,26 @@ XForms Introduction - Introduces the bright shiny world of XForms inside eXist-db to you. + Introduces the bright shiny world of XForms inside eXist-db. Tuning the Database - Explains what you can do to optimize your queries and indexes. + How to optimize your queries and indexes. Configuring Database Triggers - Will tell you how to use and configure triggers in your database that - fire when things get created, updated or deleted. + How to use and configure triggers in your database that fire when things + get created, updated or deleted. Versioning Extension - Explains how to use the built-in versioning system of eXist-db. + How to use the built-in versioning system of eXist-db. @@ -358,25 +351,25 @@ REST-Style Web API - Explains how to use eXist-db's REST interface. + How to use eXist-db's REST interface. SOAP Interface Developer's Guide - Explains how to add a SOAP interface to eXist-db using Java code. + How to add a SOAP interface to eXist-db using Java code. XML-RPC API Developer's Guide - Explains how to interface with eXist-db using the XML-RPC API. + How to interface with eXist-db using the XML-RPC API. WebDAV - Explains how to use eXist-db's WebDAV interface. + How to use eXist-db's WebDAV interface. @@ -433,88 +426,72 @@ - Building eXist + Building eXist-db How to build Java .jar files from an - eXist distribution. + eXist-db distribution. Performance FAQ - Contains a short FAQ about eXist-db's performance. + A short FAQ about eXist-db's performance. Production Use - Good Practice - When you use eXist-db on a production system, please read this for - advice. + How to configure eXist-db for use on a production system. Production use - Proxying eXist-db behind a Web Server - You can proxy eXist-db behind a web server like Nginx or Apache. This - article will provide you with some examples. + How to proxy eXist-db behind a web server like Nginx or Apache. JMX - eXist has a JMX interface for access to internal statistics about memory, + eXist-db has a JMX interface for access to internal statistics about memory, caching, etc. - - incompatibilities overview - - Consult this article when you upgrade from an older version of - eXist-db. - - Scheduler Module - Scheduling jobs (like backups) is a useful tool in an eXist-db - installation. + How to schedule jobs (like backups). Security - The security model of eXist. Also explains how to connect eXist-db to - other authentication realms like LDAP or OAuth. + The security model of eXist-db. Also, how to connect eXist-db to other + authentication realms like LDAP or OAuth. Tuning the Database - Explains what you can do to optimize the database's performance. + How to optimize the database's performance. Performance FAQ - Contains a short FAQ about eXist-db's performance. - - - - - - + A short FAQ about eXist-db's performance. Upgrade Guide - Helps you updating to a new version of eXist-db. + How to upgrade from an older version of eXist-db. - incompatibilities overview + Incompatibilities Consult this article when you upgrade from an older version of eXist-db. @@ -544,90 +521,90 @@ Writing Java Applications with the XML:DB API - Explains how to work with eXist-db from Java code using the XML:DB API. + How to work with eXist-db from Java code using the XML:DB API. This API provides a common interface to native or XML-enabled databases and supports the development of portable, reusable applications. - Building eXist + Building eXist-db - How to build Java .jar files from an - eXist distribution. + How to build Java .jar files from an eXist-db + distribution. Developer's Guide to Modularized Indexes - Explains how the internal indexing mechanism works and how to add your own - indexes to it. + How the internal indexing mechanism works and how to add your own indexes + to it. Log4j Logging Guide - This article explains how to add logging to your Java code using - Log4J. + How to add logging to your Java code using Log4J. SOAP Interface Developer's Guide - Explains how to add a SOAP interface to eXist-db using Java code. + How to add a SOAP interface to eXist-db using Java code. XML-RPC API Developer's Guide - Explains how to interface with eXist-db using the XML-RPC API. + How to interface with eXist-db using the XML-RPC API. Extension Modules - Provides an overview of how to create eXist-db extension modules (in Java) - and contains a list of available extension modules. + How to create eXist-db extension modules (in Java); contains a list of + available extension modules. JMX - eXist provides access to various management interfaces using JMX. + eXist-db provides access to various management interfaces using + JMX. Developer's Guide to Modularized Indexes - Explains how the internal indexing mechanism works and how to add your own - indexes to it. + How the internal indexing mechanism works and how to add your own indexes + to it. Log4j Logging Guide - This article explains how to add logging to your Java code using + How to add logging to your Java code using Log4J. SOAP Interface Developer's Guide - Explains how to add a SOAP interface to eXist-db using Java code. + How to add a SOAP interface to eXist-db using Java code. XML-RPC API Developer's Guide - Explains how to interface with eXist-db using the XML-RPC API. + How to interface with eXist-db using the XML-RPC API. Extension Modules - Provides an overview of how to create eXist-db extension modules (in Java) - and contains a list of available extension modules. + How to create eXist-db extension modules (in Java) and contains a list of + available extension modules. @@ -646,28 +623,27 @@ eXist-db Developer Manifesto - This article lays out guidelines for developers that wish to contribute to - eXist-db's code base itself. + Guidelines for developers who wish to contribute to eXist-db's code + base. Code Review Guide - Provides instructions how to review somebody else's (or your own of - course) code. + How to review somebody else's (or your own of course) code. Author Reference - Explains how to write a documentation article for eXist-db (like the ones - you are looking at now). + How to write a documentation article for eXist-db (like the ones you are + looking at now). Legal Statement - Provides information about the legal status of eXist as an open source + The legal status of eXist-db as an open source product. diff --git a/src/main/xar-resources/data/exist-building/exist-building.xml b/src/main/xar-resources/data/exist-building/exist-building.xml index 6731c77d..edffbd65 100644 --- a/src/main/xar-resources/data/exist-building/exist-building.xml +++ b/src/main/xar-resources/data/exist-building/exist-building.xml @@ -4,7 +4,7 @@ Building eXist-db - 2Q18 + 2Q19 operations java-development @@ -12,7 +12,9 @@ - This article will tell you how to build a Java .jar file for eXist-db. If you are building exist-db from source, please also check the build instructions in the source-code repo. + This article will tell you how to build eXist-db from source, please also check the build instructions + in the source-code repo. @@ -21,36 +23,68 @@ Building eXist-db is quite easy and requires 3 simple steps: + + + Make sure you have the required build tools installed + + + + Java JDK - Building eXist-db requires JDK 8 or newer. If you are looking for an OpenJDK, then the Azul Zulu JDK may suite you. + + + Apache Maven - Building eXist-db requires Maven 3.6.0 or newer. + + + Docker (optional) - If you wish to build the Docker image, then Docker is required. + + + HFS Support (optional) - If you are on Linux and wish to build a DMG for Mac platforms. + + + CentOS etc. - sudo yum install hfsutils hfsplus-tools + + + Debian etc. - sudo apt-get install hfsprogs hfsplus + + + + + Apple Developer Code signing certificate (optional) - If you are on a Mac and wish to build and sign a DMG. + + + Clone from Github - The GitHub URL for the develop branche is: - git@github.com:eXist-db/exist.git + The GitHub URL for the develop branch is: + https://github.com/eXist-db/exist.git Please follow the instructions on our GitHub page page ( README.md section) + You can clone it by running: + git clone --single-branch --branch=develop https://github.com/eXist-db/exist.git + The above will only clone the develop branch, if you require all branches, you should omit the --single-branch --branch=develop arguments. Set JAVA_HOME - Before starting the build, your JAVA_HOME environment variable should be set to point to the root directory of the JAVA JDK - (note: JDK, not JRE!). Open a console or a DOS box on windows and type: + Before starting the build, your JAVA_HOME environment variable should be + set to point to the root directory of the JAVA JDK (note: JDK, not JRE!). Open a console on Unix/Linux, or a DOS cmd prompt on + Windows and type: set JAVA_HOME=c:\path\to\jdk on Windows or export JAVA_HOME=/path/to/jdk - on Unix. + on Unix/Linux. Build eXist Change into the eXist-db directory you just checked out and call - build.bat - on Windows or on Unix: - build.sh + mvn -DskipTests clean compile @@ -60,508 +94,172 @@ Using the Build System - You can rebuild all eXist-db packages from the standard distribution or the GitHub repository. You can even create a new distribution from - the one you installed. For example, assume you installed eXist using the installer GUI, but you need to have a .tar.bz2 package for deployment - to a server. Just call the main build script (build.sh or build.bat) and pass it the - target dist-bz2: - build.sh dist-bz2 - This will create a fresh .tar.bz2 archive in the dist directory. + You can rebuild all eXist-db packages and distributions from the cloned source code: + mvn -DskipTests clean package + This will create a fresh distributions in the exist-distribution/target directory, and a fresh installer in the exist-installer/target directory. - To be able to use the build system, you need to include the "source" module when selecting installable packages in the installer - GUI. + If you wish to also build a Docker image, you should add the property -Ddocker=true. + If you wish to also build a signed DMG on Mac, you should add the properties -Dmac-signing=true -Dmac.codesign.identity="The ID of your Apple Developer Certificate". - eXist-db relies on Ant for all compile and build tasks. Ant is included in the distribution (directory tools/ant). As - already mentioned above, there are two shell scripts to start Ant: build.sh or build.bat. The shell - scripts will take care to create a proper command line to launch Java with the Ant version included in the distribution. - Calling Ant without further argument will compile the sources and create the main .jar files (exist.jar, - exist-optional.jar, start.jar). - - build.sh -plists the available build targets. Passing one of these as argument to ant will call execute the corresponding - target. The main targets are: - Useful Build Targets - + Useful Maven targets - all - - - Compile the sources and create the main .jar files (exist.jar, - exist-optional.jar, start.jar). - - - - - benchmark - - - Performs the benchmark tests for eXist-db. - - - - - clean - - - Cleans the files and directories generated by a previous build. Data is preserved. - - - - - clean-all - - - Cleanup deeper. - - - - - clean-conf - - - Cleanup config file. - - - - - clean-default-data-dir - - - Remove contents in default data directory. - - - - - compile - - - Compiles the source code. - - - - - compile-aspectj - - - Compiles the aspects. - - - - - dist-dir - - - Packages eXist-db into a directory. - - - - - dist-bz2 - - - Packages eXist-db into a .tar.bz2 file. - - - - - dist-tar + mvn clean - Packages eXist-db into a .tar file. + Cleans the files and directories generated by a previous build. Data is not preserved unless you have overriden the path to the data directory. - dist-tgz + mvn compile - Packages eXist-db into a .tgz file. + Recompiles any changed source code. - dist-zip + mvn dependency:analyze - Packages eXist-db into a .zip file. + Checks for any problems with the dependencies that eXist-db depends on. - download-additional-jars + mvn test - Download optional third-party .jar files. These are currently: saxon. These are downloaded into - lib/user/. + Runs all tests across all modules. Surefire HTML reports can be found in the modules target/surefire-reports/html folder. - download-icu4j + mvn install - Download the optional icu4j library. + Installs all Maven artifacts to your local Maven repository (i.e. Unix/Linux: ~/.m2/repository, or Windows: %USERPROFILE%\.m2\repository. - download-xars + mvn package - Download xars to include in installer. + Performs the full lifecycle build, after which eXist-db distributions can be found in exist-distribution/target, and an eXist-db IzPack installer can be found in exist-installer/target. + + +
+ + Useful Maven properties and arguments + + - download-xqts - - - Download XQTS file. - - - - - download-xslts - - - Download XSLTS file. - - - - - extension-modules - - - Build the extensions directory. Edit the file extensions/build.properties enable extensions and modules. - - - - - installer - - - Creates a new installer package based on IzPack. - - - - - installer-exe - - - Create .exe from installer - - - - - jar - - - The default: compiles the source and creates eXist's main .jar files. - - - - - javadocs - - - Creates the API docs into webapp/api. - - - - - jdepend - - - JDepend traverses Java class file directories and generates design quality metrics for each Java package. - - - - - jetty-keygen - - - Generate keystore for jetty. - - - - - jnlp-clean - - - - - - jnlp-keygen + -V - Generate keystore for signing .jar files. + Show the version of Maven and Java used for the build. - jnlp-pack200 + -o - Pack all .jar files. + Execute Maven in offline (i.e. no Internet access!) mode. - jnlp-sign-all + -U - This signs all of the .jar files, so that the webstart of the eXist-db - client Java application will launch without any signing errors. + Force Maven to check online for any updates to dependency versions. - jnlp-sign-core + -T - Sign all CORE .jar files. + Force Maven to execute the lifecycle for the reactor modules in parallel. For example -T 2C instructs Maven to use 2x the core count of threads to parallelise the build. This can have a large positive imapact on build times. - jnlp-sign-exist + -Ddocker=true - Sign all EXIST .jar files. + Enable buiding eXist-db Docker images. - jnlp-unsign-all + -Dmac.signing=true - This unsigns all of the .jar files. + Enable signing of Mac .app and .DMG files (only on Mac platforms). - rebuild + -Dmac.codesign.identity="The ID of your Apple Developer + Certificate" - Performs a clean and the all. + Specify the certificate for signing of Mac .app and .DMG files (only on Mac platforms). - samples + -DskipTests - Builds the examples and packs them into examples.jar. + Do not execute any tests. - snapshot-installer + -Ddependency-check.skip=true - Creates a snapshot installer. + Skip the OWASP dependency security analysis. - test + -Dtest=MyTestClassName - Runs all tests in the test suite and outputs the HTML result into test/junit/html. This may take several - minutes. + The name of a single test to run. If running Maven from the root of the project as opposed to inside the specific module which houses the test, you sould also add -DfailIfNoTests=false. - xquery + -DtrimStackTrace=false - Regenerate the XQuery parser code with ANTLR (only required if you change - src/org/exist/xquery/parser/XQuery.g). + When running tests, if a stacktrace is produced as part of an error, show the full output instead of trimming it. - xars + MAVEN_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" - Scan apps directory and include all .xar files into installer. + When this precedes the mvn command, Maven will be run through the Java debugger, which allows you to connect from IntelliJ or another IDE which support JDWP.
- - You might want to set some custom settings (in particular your HTTP proxy when external libraries are required) before running - build.sh or build.bat. See build.properties. -
- - - - Signing <code>.jar</code> files for webstart - - The database can be easily accessed with the Java client, when the client is launched by clicking the Java Webstart "Launch" button on the right side of this page. Java webstart - explicilty requires that all application code, the .jar files, are signed using a security certificate. Out of the box, - when eXist-db is installed using the installer, all relevant .jar files have already been signed, so webstart can be used directly. - It is necessary however to (re-)sign the .jar files yourself if you want to (re-)build the eXist-db java code. This chapter - explains how to do this. - - - - - Quickstart - - To get started quickly, just execute the following command: - ./build.sh -f build/scripts/jarsigner.xml - This command sequentially creates the key.store file and signs a selection of .jar files: - - Note that this command needs to be executed just once. In subsequent builds newly generated .jar files are signed - automatically. - - - - - - Ant targets - - An overview of all available ant targets can be retrieved by executing the following command: - ./build.sh -projecthelp -f build/scripts/jarsigner.xml - The following ant targets are available for signing .jar files: - - - jnlp-all - - Create keystore file and sign all EXIST and CORE .jar files. (Default task) - - - - - jnlp-keygen - - Generate a new keystore file if not present. - - - - jnlp-clean - - Delete the keystore file. - - - - jnlp-sign-core - - Sign all CORE .jar files in lib/core. - - - - jnlp-sign-exist - - Sign all EXIST .jar files, e.g. exist.jar - exist-XX.jar and start.jar - - - - - jnlp-unsign-all - - Unsign all .jar files. - - - - The target jnlp-keygen generates a new certificate file key.store. If this file is - present the EXIST .jar files are signed during each following build. The process of signing - .jar files can be stopped by removing this keystore file. - The ant script contains two additional targets: jetty-keygen which generates a keystore file for the - jetty server and jnlp-pack200 which processes the signed .jar files with pack200 technology. More about the latter in the next section. - - - - - - Reducing <code>.jar</code> sizes with pack200 compression - - Pack200 is a compression technology designed for compressing .jar files. It works most efficiently on Java class files. - Pack200 can reduce the size of a .jar file up to 60% resulting into a significant reduction of the amount of downloaded webstart - data. - The webstart .jar files can be compressed with pack200 with the following command: - ./build.sh -f build/scripts/jarsigner.xml jnlp-pack200 - This command consecutively performs the following steps for all .jar files: - - - unsign - - - repack (normalization) - - - sign - - - compress with pack200 - - - compress with gzip - - - - - - - - - References - - - - - Java Web Start (Wikipedia) - - - Java Web Start: Pack200 - compression (Wikipedia) - - - - Pack200 (Wikipedia) - - - - Pack200 (Eclipse.org) - - - - Pack200 and - Compression for network deployment (Sun, bit out dated) - - - Introducing Java SE 6 update 10: Deployment Usability (Sun). - - - Ant tasks: ASOCAT. - - - - - - - - Notes - - - - Sometimes when the .jar files are signed, eXist-db does not start anymore. In this situation unsign the .jar - files first. Calling target 'jnlp-pack200' does always unsign all .jar files as first step. - - - The pack200 target is not executed automatically. If eXist-db code is changed and recompiled, you might want to execute the - jnlp-pack200 target again. - - - - - diff --git a/src/main/xar-resources/data/exist-building/listings/listing-11.txt b/src/main/xar-resources/data/exist-building/listings/listing-11.txt deleted file mode 100644 index 7971c9f6..00000000 --- a/src/main/xar-resources/data/exist-building/listings/listing-11.txt +++ /dev/null @@ -1,21 +0,0 @@ -./build.sh -f build/scripts/jarsigner.xml -Starting Ant... - -Buildfile: ..../eXist-db/build/scripts/jarsigner.xml - -jnlp-prepare: - -jnlp-keygen: - [genkey] Generating Key for exist - -jnlp-sign-exist: - [signjar] Signing JAR: ..../eXist-db/exist-fluent.jar to ..../eXist-db/exist-fluent.jar as exist - [signjar] Signing JAR: ..../eXist-db/exist-optional.jar to ..../eXist-db/exist-optional.jar as exist - [signjar] Signing JAR: ..../eXist-db/exist.jar to ..../eXist-db/exist.jar as exist - [signjar] Signing JAR: ..../eXist-db/start.jar to ..../eXist-db/start.jar as exist - -jnlp-sign-core: - [signjar] Signing JAR: ..../eXist-db/lib/core/antlr-2.7.7.jar to ..../eXist-db/lib/core/antlr-2.7.7.jar as exist - [signjar] Signing JAR: ..../eXist-db/lib/core/commons-collections-3.2.1.jar to ..../eXist-db/lib/core/commons-collections-3.2.1.jar as exist - .... - [signjar] Signing JAR: ..../eXist-db/lib/core/xmlrpc-server-3.1.3.jar to ..../eXist-db/lib/core/xmlrpc-server-3.1.3.jar as exist \ No newline at end of file diff --git a/src/main/xar-resources/data/exist-building/listings/listing-14.txt b/src/main/xar-resources/data/exist-building/listings/listing-14.txt deleted file mode 100644 index 9d910a23..00000000 --- a/src/main/xar-resources/data/exist-building/listings/listing-14.txt +++ /dev/null @@ -1,51 +0,0 @@ -./build.sh -f build/scripts/jarsigner.xml jnlp-pack200 - Starting Ant... - - Buildfile: .../eXist-db/build/scripts/jarsigner.xml - - jnlp-pack200: - - jnlp-unsign-all: - [unsignjar] Unsigning exist-fluent.jar - [unsignjar] Unsigning exist-optional.jar - [unsignjar] Unsigning exist.jar - [unsignjar] Unsigning start.jar - [unsignjar] Unsigning antlr-2.7.7.jar - ... - [unsignjar] Unsigning xmlrpc-server-3.1.3.jar - [repack] Normalizing exist-fluent.jar - [repack] Normalizing exist-optional.jar - [repack] Normalizing exist.jar - [repack] Normalizing start.jar - [repack] Normalizing antlr-2.7.7.jar - ... - [repack] Normalizing xmlrpc-server-3.1.3.jar - - jnlp-prepare: - - jnlp-keygen: - - jnlp-sign-exist: - [signjar] Signing JAR: .../eXist-db/exist-fluent.jar to .../eXist-db/exist-fluent.jar as exist - [signjar] Signing JAR: .../eXist-db/exist-optional.jar to .../eXist-db/exist-optional.jar as exist - [signjar] Signing JAR: .../eXist-db/exist.jar to .../eXist-db/exist.jar as exist - [signjar] Signing JAR: .../eXist-db/start.jar to .../eXist-db/start.jar as exist - - jnlp-prepare: - - jnlp-keygen: - - jnlp-sign-core: - [signjar] Signing JAR: .../eXist-db/lib/core/antlr-2.7.7.jar to .../eXist-db/lib/core/antlr-2.7.7.jar as exist - ... - [signjar] Signing JAR: .../eXist-db/lib/core/xmlrpc-server-3.1.3.jar to .../eXist-db/lib/core/xmlrpc-server-3.1.3.jar as exist - [pack] Packing exist-fluent.jar - [pack] Packing exist-optional.jar - [pack] Packing exist.jar - [pack] Packing start.jar - [pack] Packing antlr-2.7.7.jar - ... - [pack] Packing xmlrpc-server-3.1.3.jar - - BUILD SUCCESSFUL - Total time: 1 minute 0 seconds \ No newline at end of file diff --git a/src/main/xar-resources/data/extensions/extensions.xml b/src/main/xar-resources/data/extensions/extensions.xml index 357ae2e7..164f2389 100644 --- a/src/main/xar-resources/data/extensions/extensions.xml +++ b/src/main/xar-resources/data/extensions/extensions.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Extension Modules - 1Q18 + 2Q19 java-development @@ -27,12 +27,12 @@ eXist-db database, its internal API, the context of the executing XQuery and the HTTP Session (if appropriate). The source code for extension modules should be placed in their own folder inside - $EXIST_HOME/extensions/modules/src/org/exist/xquery/modules. They may - then be compiled in place using either $EXIST_HOME/build.sh - extension-modules or %EXIST_HOME%\build.bat - extension-modules depending on the platform. + $EXIST_HOME/extensions/modules/*/src/main/java/org/exist/xquery/modules/*. + They may then be added to $EXIST_HOME/extensions/modules/pom.xml and + compiled in place using mvn compile. Modules associated to modularized indexes must be placed in the - $EXIST_HOME/extensions/indexes/*/xquery/modules/* hierarchy. They + $EXIST_HOME/extensions/indexes/*/xquery/modules/* hierarchy. They + may then be added to $EXIST_HOME/extensions/indexes/pom.xml. They will be compiled automatically by the standard build targets or as indicated above. eXist-db must also be told which modules to load, this is done in @@ -42,7 +42,7 @@ eXist-db will require a restart to load any new modules added. Once a Module is configured and loaded eXist-db will display the module and its - function definitions as part of the function library + function definitions as part of the function library page or through util:decribe-function(). @@ -65,10 +65,12 @@ Status: production - Class: org.exist.xquery.modules.example.ExampleModule + Class: org.exist.xquery.modules.example.ExampleModule + - Namespace: http://exist-db.org/xquery/examples + Namespace: http://exist-db.org/xquery/examples +
@@ -86,10 +88,12 @@ Status: production - Class: org.exist.xquery.modules.cache.CacheModule + Class: org.exist.xquery.modules.cache.CacheModule + - Namespace: http://exist-db.org/xquery/cache + Namespace: http://exist-db.org/xquery/cache + @@ -111,7 +115,8 @@ - Namespace: http://exist-db.org/xquery/compression + Namespace: http://exist-db.org/xquery/compression + @@ -130,10 +135,12 @@ Status: production - Class: org.exist.xquery.modules.exi.EXIModule + Class: org.exist.xquery.modules.exi.EXIModule + - Namespace: http://exist-db.org/xquery/exi + Namespace: http://exist-db.org/xquery/exi + @@ -153,10 +160,12 @@ Status: production - Class: org.exist.xquery.modules.file.FileModule + Class: org.exist.xquery.modules.file.FileModule + - Namespace: http://exist-db.org/xquery/file + Namespace: http://exist-db.org/xquery/file + @@ -178,10 +187,12 @@ Status: production - Class: org.exist.xquery.modules.image.ImageModule + Class: org.exist.xquery.modules.image.ImageModule + - Namespace: http://exist-db.org/xquery/image + Namespace: http://exist-db.org/xquery/image + @@ -190,10 +201,6 @@ This extension module allows you to access and manipulate JNDI-based directories, such as LDAP, using XQuery functions. It can be very useful if you want to integration and LDAP directory into an eXist-db/XQuery based application. - To compile it, set the parameter include.module.jndi = true in - $EXIST_HOME/extensions/local.build.properties file (create it if - missing). Then, to enable it, edit the appropriate module entry in - conf.xml. Creator: Andrzej Taramina @@ -205,10 +212,12 @@ Status: production - Class: org.exist.xquery.modules.jndi.JNDIModule + Class: org.exist.xquery.modules.jndi.JNDIModule + - Namespace: http://exist-db.org/xquery/jndi + Namespace: http://exist-db.org/xquery/jndi + @@ -230,10 +239,12 @@ Status: production - Class: org.exist.xquery.modules.mail.MailModule + Class: org.exist.xquery.modules.mail.MailModule + - Namespace: http://exist-db.org/xquery/mail + Namespace: http://exist-db.org/xquery/mail + @@ -254,10 +265,12 @@ Status: production - Class: org.exist.xquery.modules.oracle.OracleModule + Class: org.exist.xquery.modules.oracle.OracleModule + - Namespace: http://exist-db.org/xquery/oracle + Namespace: http://exist-db.org/xquery/oracle + @@ -280,7 +293,8 @@ - Namespace: http://exist-db.org/xquery/scheduler + Namespace: http://exist-db.org/xquery/scheduler + @@ -303,16 +317,17 @@ - Namespace: http://exist-db.org/xquery/simple-ql + Namespace: http://exist-db.org/xquery/simple-ql + Spatial module Various functions for GML geometries, - whether indexed or not. More information about the design is available here. + xlink:href="https://www.opengeospatial.org/standards/gml">GML geometries, + whether indexed or not. More information about the design is available in the Developer's Guide to Modularized Indexes. Creator: Pierrick Brihaye @@ -324,10 +339,12 @@ Status: experimental - Class: org.exist.xquery.modules.spatial.SpatialModule + Class: org.exist.xquery.modules.spatial.SpatialModule + - Namespace: http://exist-db.org/xquery/spatial + Namespace: http://exist-db.org/xquery/spatial + @@ -349,10 +366,12 @@ Status: production - Class: org.exist.xquery.modules.sql.SQLModule + Class: org.exist.xquery.modules.sql.SQLModule + - Namespace: http://exist-db.org/xquery/sql + Namespace: http://exist-db.org/xquery/sql + @@ -374,10 +393,12 @@ Status: production - Class: org.exist.xquery.modules.xmldiff.XmlDiffModule + Class: org.exist.xquery.modules.xmldiff.XmlDiffModule + - Namespace: http://exist-db.org/xquery/xmldiff + Namespace: http://exist-db.org/xquery/xmldiff + @@ -398,28 +419,12 @@ Status: production - Class: org.exist.xquery.modules.xslfo.XSLFOModule - - - Namespace: http://exist-db.org/xquery/xslfo - - - - - XML Calabash Module - This module provides simple integration with XML Calabash XProc engine. - - - Creator: James Fuller - - - Licence: MPL v1.1 - - - Class: org.exist.xquery.modules.xmlcalabash + Class: org.exist.xquery.modules.xslfo.XSLFOModule + - Namespace: http://xmlcalabash.com + Namespace: http://exist-db.org/xquery/xslfo + diff --git a/src/main/xar-resources/data/faq_performance/faq_performance.xml b/src/main/xar-resources/data/faq_performance/faq_performance.xml index 951055c4..d395c07d 100644 --- a/src/main/xar-resources/data/faq_performance/faq_performance.xml +++ b/src/main/xar-resources/data/faq_performance/faq_performance.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Performance FAQ - 1Q18 + 2Q19 operations @@ -129,19 +129,19 @@ - On size vs. structure: Wolfgang Meier, + On size vs. structure: Wolfgang Meier, exist-open mailing list, Apr 29, 2010 - On querying while writing: Wolfgang Meier, + On querying while writing: Wolfgang Meier, exist-open mailing list, Jan 19, 2012 - On multiple concurrent users thread dumps, and memory monitoring, Wolfgang Meier, + On multiple concurrent users thread dumps, and memory monitoring, Wolfgang Meier, exist-open mailing list, Jan 19, 2012 - On limits of collection and document ids: Pierrick Brihaye, + On limits of collection and document ids: Pierrick Brihaye, exist-open mailing list, Oct 4, 2007 diff --git a/src/main/xar-resources/data/getting-help-how-to-report/getting-help-how-to-report.xml b/src/main/xar-resources/data/getting-help-how-to-report/getting-help-how-to-report.xml index fa827b96..65342a9b 100644 --- a/src/main/xar-resources/data/getting-help-how-to-report/getting-help-how-to-report.xml +++ b/src/main/xar-resources/data/getting-help-how-to-report/getting-help-how-to-report.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
How to report issues - 1Q18 + 2Q19 getting-started @@ -48,14 +48,12 @@ Include relevant parts of the logfile - (webapp/WEB-INF/logs/exist.log and - tools/yajsw/logs/wrapper.log) + (logs/exist.log). Mention the changes made in the configuration files, for instance - conf.xml, vm.properties, - tools/yajsw/conf/wrapper.conf and - tools/jetty/etc/jetty.xml. + etc/conf.xml, etc/launcher.properties, + and etc/jetty/jetty.xml. @@ -77,7 +75,7 @@ Check if the issue has been solved in the latest version of eXist-db; For - this the web based tool eXide + this the web based tool eXide can be used. @@ -92,4 +90,4 @@ -
\ No newline at end of file +
diff --git a/src/main/xar-resources/data/getting-help/getting-help.xml b/src/main/xar-resources/data/getting-help/getting-help.xml index 093b05e0..90250ccb 100644 --- a/src/main/xar-resources/data/getting-help/getting-help.xml +++ b/src/main/xar-resources/data/getting-help/getting-help.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Getting Help - 1Q18 + 2Q19 getting-started @@ -18,7 +18,7 @@ Community Support - Besides eXist-db's extensive documentation set, eXist-db has a large and active community of users + Besides eXist-db's extensive documentation, eXist-db has a large and active community of users and developers. The community uses mailing lists, chat, a wiki, and social media to get and give help, follow the latest developments and share tips and discoveries. The book, "eXist: a NoSQL Document Database and Application Platform" was published in 2014 and is available from O'Reilly.com. @@ -31,19 +31,20 @@ The exist-open mailing list is the - primary forum for asking questions and getting help. Finding the answer to a question can sometimes be as simple as searching the mailing list's archives. Whether you have a + primary forum for asking questions and getting help. Finding the answer to a question can sometimes be as simple as searching the mailing list's archives. Whether you have a question that you can't find the answer to, or you just want to join the discussion, subscribe to the mailing list. It's free and you can unsubscribe anytime. + You can also search the exist-db tag on Stackoverflow for questions and answers. - Please consult this page for tips how to best report issues. + For reporting issues, please consult the How to Report Issues article. Besides exist-open, there is a mailing list dedicated solely to the XQuery language: the xquery-talk mailing list. It's a great place to ask questions about XQuery, from basic to advanced. - Also, there are numerous excellent resources for learning XQuery, including the XQuery wikibook and Priscilla Walmsley's XQuery book. + See our list of resources for learning XQuery. Follow @existdb on Twitter for news and announcements about eXist-db. Use the #existdb hash tag (note: no dash in #existdb). - Find links about eXist-db on Del.icio.us using the existdb tag. Meet the eXist-db professionals on LinkedIn. Subscribe to the eXist + Meet eXist-db professionals on LinkedIn. Subscribe to the eXist Developer Blog, powered by the eXist-based AtomicWiki project. @@ -54,7 +55,7 @@ eXist-db began as and continues to thrive as an open source community, built on the contributions of volunteers. Recognizing the need for professional solutions for eXist-db, members of our development team and community have come together commercially under the umbrella of eXist Solutions. They are available for  Consultancy, Training or Bespoke - Development. We also offer support + Development. We also offer support subscriptions with service level agreements tailored to customer's requirements. Please contact us at info@existsolutions.com.
\ No newline at end of file diff --git a/src/main/xar-resources/data/incompatibilities/incompatibilities.xml b/src/main/xar-resources/data/incompatibilities/incompatibilities.xml index b8d80328..cc582300 100644 --- a/src/main/xar-resources/data/incompatibilities/incompatibilities.xml +++ b/src/main/xar-resources/data/incompatibilities/incompatibilities.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Known Issues when upgrading - 4Q18 + 2Q19 operations @@ -93,7 +93,7 @@ eXist-db v3.0 is the culmination of almost 1,500 changes. For more information on new features head to the blog. @@ -115,7 +115,7 @@ 2.2 introduces a new range index module. Old index definitions will still work though as we made sure to keep backwards compatible. If you would like to upgrade to the new index, check its documentation. + xlink:href="newrangeindex">documentation. The XQuery engine has been updated to support the changed syntax for @@ -123,7 +123,7 @@ old syntax for map constructors though (map { x:= "y"} instead of map { x: "y" } in XQuery 3.1), so old code should run without modifications. All map module functions from XQuery 3.1 are available. @@ -267,7 +267,7 @@ The previous auto setting was apparently too confusing for new users who did not know what to do if eXist-db refused to store a document due to failing validation. If you are familiar with - validation, the use of catalog + validation, the use of catalog files and the like, feel free to set the default back to auto or yes. @@ -277,7 +277,7 @@ eXist-db does no longer require Cocoon for viewing documentation and samples. Cocoon has been largely replaced by eXist-db's own URL rewriting and MVC + xlink:href="urlrewrite">URL rewriting and MVC framework. Consequently, we now limit Cocoon to one directory of the web application (webapp/cocoon) and moved all the Cocoon diff --git a/src/main/xar-resources/data/indexing/indexing.xml b/src/main/xar-resources/data/indexing/indexing.xml index dd2651e0..fa2cfc5b 100644 --- a/src/main/xar-resources/data/indexing/indexing.xml +++ b/src/main/xar-resources/data/indexing/indexing.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Configuring Database Indexes - 1Q18 + 2Q19 application-development @@ -45,18 +45,18 @@ fn:id(). - New Range Indexes + New Range Indexes : A (rewritten) range index which provides superior performance on large data sets. - Full Text Indexes + Full Text Indexes : This full text indexing module features faster and customizable full text indexing by transparently integrating Lucene into the XQuery engine. Prefer this index over the Legacy Full Text Index. - NGram Indexes : + NGram Indexes : These map specific text nodes and attributes of the documents in a collection to splitted tokens of n-characters (where n = 3 by default). This is very efficient for exact substring searches and for queries on scripts (mostly non-European @@ -64,16 +64,16 @@ therefore a bad match for the Lucene full text index. - Legacy Range Indexes + Legacy Range Indexes : These map specific text nodes and attributes of documents in a collection to typed values. - Spatial + Spatial Indexes (Experimental): A working proof-of-concept index, which listens for spatial geometries described through the Geography Markup Language (GML). A detailed description of the implementation can be found in the - Developer's Guide to Modularized + Developer's Guide to Modularized Indexes. @@ -286,37 +286,8 @@ Enabling Index Modules - - While some indexes (n-gram, full text) are already pre-build in the standard eXist-db - distribution, other modules may need to be enabled first. For example, the spatial index - depends on external libraries which do not ship with eXist-db. However, as an example, - enabling the spatial index is a simple process: - - - Copy the properties file - extensions/indexes/build.properties and store it as - local.build.properties in the same directory (if it does not - already exist). - - - Edit extensions/indexes/local.build.properties: - - - To include a spatial index, change the corresponding property to - "true". - - - Call the Ant build system once to regenerate the eXist-db libraries using - build.sh or build.bat. - - - The build process should create a .jar file for every index - implementation in directory lib/extensions. For example, the spatial - index is packaged into the .jar - exist-spatial-module.jar. - Once the index module has been built, it can be announced to eXist-db. To activate an - index plug-in, it needs to be added to the modules section within the global - configuration file conf.xml: + To activate an index plug-in, it needs to be added to the modules section + within the global configuration file conf.xml: @@ -353,4 +324,4 @@ join between these node sets to determine which section elements are in fact children of book elements. -
\ No newline at end of file + diff --git a/src/main/xar-resources/data/indexing/listings/listing-5.txt b/src/main/xar-resources/data/indexing/listings/listing-5.txt deleted file mode 100644 index dfee9a56..00000000 --- a/src/main/xar-resources/data/indexing/listings/listing-5.txt +++ /dev/null @@ -1,5 +0,0 @@ -# N-gram module -include.index.ngram = true - -# Spatial module -include.index.spatial = false \ No newline at end of file diff --git a/src/main/xar-resources/data/integration-testing/integration-testing.xml b/src/main/xar-resources/data/integration-testing/integration-testing.xml index 118a442b..7be75560 100644 --- a/src/main/xar-resources/data/integration-testing/integration-testing.xml +++ b/src/main/xar-resources/data/integration-testing/integration-testing.xml @@ -3,7 +3,7 @@
Integration Testing - 4Q18 + 2Q19 application-development testing @@ -113,7 +113,7 @@ Common tools for browser testing include Cypress, Selenium, and - WebDriver. As before the choice is up to you, whichever you choose it should be clearly documented so your contributors know how to adjust test cases for new features and how to + WebDriver. As before the choice is up to you, whichever you choose it should be clearly documented so your contributors know how to adjust test cases for new features and how to maintain your tests. We focus on Cypress, as it does not require any additional steps for configuring a browser first. If you need to perform cross-browser testing you can take a look at services such as diff --git a/src/main/xar-resources/data/java-admin-client/assets/webstart.small.jpg b/src/main/xar-resources/data/java-admin-client/assets/webstart.small.jpg deleted file mode 100644 index 079fc1b1..00000000 Binary files a/src/main/xar-resources/data/java-admin-client/assets/webstart.small.jpg and /dev/null differ diff --git a/src/main/xar-resources/data/java-admin-client/java-admin-client.xml b/src/main/xar-resources/data/java-admin-client/java-admin-client.xml index 943a120b..9a79a384 100644 --- a/src/main/xar-resources/data/java-admin-client/java-admin-client.xml +++ b/src/main/xar-resources/data/java-admin-client/java-admin-client.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Java Admin Client - 1Q18 + 2Q19 operations @@ -29,36 +29,12 @@ Windows and Linux users: Click the eXist-db icon in the taskbar and choose the Open Java Admin Client menu entry. - - You can download its Java WebStart file exist.jnlp via your web - browser. Once the download has completed, double-click it to launch the client: - - - - - - You can also find a link to download the Java WebStart file on the - dashboard. - - If you built eXist-db from source rather than using the downloadable - installer, the Java WebStart function will not work unless you sign the - jars. To do so, enter the following on your command line from the eXist - directory: - build.bat -f build/scripts/jarsigner.xml (DOS/Windows) - build.sh -f build/scripts/jarsigner.xml (Unix) - - Enter the following on your command line from the eXist installation directory (with the JAVA_HOME environment variable set correctly): bin\client.bat (DOS/Windows) bin/client.sh (Unix) - - Or enter the following on the command line (again from the eXist installation - directory): - java -jar start.jar client - @@ -244,10 +220,9 @@ If you ever run into problems while experimenting with eXist-db and your database files get corrupt: just remove the data files created by eXist-db and everything should work again. The data files all end with - .dbx. You will either find them in directory - webapp/WEB-INF/data or WEB-INF/data, - depending on your installation. It is ok to backup those data-files to be able - to restore them in case of a database corruption. + .dbx. You will find them in directory + $EXIST_HOME/data. It is ok to backup those data-files to + be able to restore them in case of a database corruption. @@ -278,7 +253,7 @@ therefore work with remote as well as embedded database instances. The correct database instance is determined through the XML:DB base URI as specified in the properties file or through command-line options. The deployment article describes how different + xlink:href="deployment">deployment article describes how different servers are addressed using the XML:DB URI. The XML:DB base URI used by the client for connections is defined by the uri= property. By default, this is set to @@ -310,9 +285,9 @@ This is equivalent to the -ouri=xmldb:exist:// option shown above. When launching the client with option -l or - -ouri=xmldb:exist:// the configuration for the database - instance is read from conf.xml located in - EXIST_HOME. + -ouri=xmldb:exist:// the configuration for the + database instance is read from conf.xml located in + $EXIST_HOME/etc. Use the -C parameter to specify an alternate database location. For instance: bin/client.sh -C /home/exist/test/conf.xml diff --git a/src/main/xar-resources/data/jmx/jmx.xml b/src/main/xar-resources/data/jmx/jmx.xml index 12ce7361..cef9c1e7 100644 --- a/src/main/xar-resources/data/jmx/jmx.xml +++ b/src/main/xar-resources/data/jmx/jmx.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Java Management Extensions (JMX) - 1Q18 + 2Q19 java-development operations @@ -32,7 +32,7 @@ system properties: - These options makes the server publicly accessible. Please check the Oracle + These options makes the server publicly accessible. Please check the Oracle JMX documentation for details. The extension can now be activated by passing a -j or -jmx @@ -69,7 +69,16 @@ eXist includes a simple command-line JMX client which provides quick access to some important server statistics. - java -jar start.jar org.exist.management.client.JMXClient <params> + + + Unix/Linux: + $EXIST_HOME/bin/jmxclient.sh <params> + + + Windows: + $EXIST_HOME\bin\jmxclient.bat <params> + + This accepts the following command-line parameters: @@ -140,7 +149,7 @@ The following command should print some statistics about cache usage within eXist: - java -jar start.jar org.exist.management.client.JMXClient -c -w 2000 + $EXIST_home/bin/jmxclient.sh -c -w 2000 diff --git a/src/main/xar-resources/data/learning-xquery/learning-xquery.xml b/src/main/xar-resources/data/learning-xquery/learning-xquery.xml index 73cf7623..36b0da57 100644 --- a/src/main/xar-resources/data/learning-xquery/learning-xquery.xml +++ b/src/main/xar-resources/data/learning-xquery/learning-xquery.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Learning XQuery and eXist-db - 1Q18 + 2Q19 xquery getting-started @@ -25,18 +25,18 @@ XQuery is unique in the development stack: It replaces both SQL and the traditional software layers that convert SQL into presentation formats such as HTML, PDF and ePub. XQuery can both retrieve information from your database and format it for presentation. - Learning how to select basic data from an XML document can be learned in just a few + Learning how to select basic data from an XML document can be accomplished in just a few hours, especially if you are already familiar with SQL and other functional programming - languages. Learning how to create custom XQuery functions, how to design XQuery modules + languages. Learning how to create custom XQuery functions, how to design XQuery modules, and how to execute unit tests on XQuery takes considerably longer. - + Learning by Example Many people find that they learn a new language best by reading and trying small - examples of code. One of the ideal locations for this is the XQuery Wikibook + examples of code. One of the ideal locations for this is the XQuery Wikibook Beginning Examples. These examples are all designed and tested to work with eXist. Please let us know if there are specific examples you would like to see. @@ -55,13 +55,13 @@ - - Learning FLOWR statements + + Learning FLWOR statements - Iteration in XQuery uses parallel programming statements called FLOWR (For, Let, - Order by, Where, Return). Each loop of a FLOWR statement is performed in a separate + Iteration in XQuery uses parallel programming statements called FLWOR (For, Let, + Where, Order by, Return). Each loop of a FLWOR statement is performed in a separate thread of execution. As a result you cannot use the output of any computation in a - FLOWR loop as input for the next iteration. This concept can be difficult to learn + FLWOR loop as input for the next iteration. This concept can be difficult to learn if you have never used parallel programming systems. @@ -92,7 +92,7 @@ Learning how to update XML documents - eXist comes with a set of operations for updating on-disk XML documents. eXist XQuery Update Operations + eXist comes with a set of operations for updating on-disk XML documents. eXist XQuery Update Operations @@ -115,7 +115,7 @@ XML is an inherently recursive data structure: trees contain sub-trees. Therefore many XQuery functions for transforming documents are best designed using recursion. A good place to start learning recursion is the identity node filter functions in - the XQuery + the XQuery Wikibook. @@ -126,14 +126,29 @@ Most developers who do XQuery more than a few hours a day eventually end up using a full commercial XQuery IDE, with oXygen being the best integrated with eXist. See - Using oXygen. + Using oXygen. An important feature is the XQuery auto-complete. As you type within XQuery, all eXist functions and their parameters are listed. For example if you type xmldb:, all the functions of the XMLDB module will automatically appear in a drop-down list. As you continue to type or select a function the parameters and types are also shown. This becomes an important time-saver! + + + + + Other Resources + + See Priscilla Walmsley's book, XQuery on the XQuery language, Adam Retter and Erik Siegel's book, eXist: a NoSQL Document Database and Application + Platform, on XQuery application development, and the Learning + XQuery list. + -
\ No newline at end of file +
diff --git a/src/main/xar-resources/data/legal/legal.xml b/src/main/xar-resources/data/legal/legal.xml index 67ab618c..74bc0fcf 100644 --- a/src/main/xar-resources/data/legal/legal.xml +++ b/src/main/xar-resources/data/legal/legal.xml @@ -4,7 +4,7 @@
Legal Statement - 1Q18 + 2Q19 exist @@ -74,13 +74,13 @@ (a GitHub repository) - A Definition of open source software. + A Definition of open source software. - The original text of the L-GPL license. + The original text of the L-GPL license. - An explanation of + An explanation of the L-GPL license. diff --git a/src/main/xar-resources/data/lucene/listings/listing-1.xml b/src/main/xar-resources/data/lucene/listings/listing-1.xml deleted file mode 100644 index c0164599..00000000 --- a/src/main/xar-resources/data/lucene/listings/listing-1.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - ... - \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-33.txt b/src/main/xar-resources/data/lucene/listings/listing-33.txt deleted file mode 100644 index bfde0be4..00000000 --- a/src/main/xar-resources/data/lucene/listings/listing-33.txt +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-50.txt b/src/main/xar-resources/data/lucene/listings/listing-50.txt new file mode 100644 index 00000000..2040ad47 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-50.txt @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-51.txt b/src/main/xar-resources/data/lucene/listings/listing-51.txt new file mode 100644 index 00000000..6b03666f --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-51.txt @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-52.txt b/src/main/xar-resources/data/lucene/listings/listing-52.txt new file mode 100644 index 00000000..58042ff9 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-52.txt @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-53.txt b/src/main/xar-resources/data/lucene/listings/listing-53.txt new file mode 100644 index 00000000..ce651b07 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-53.txt @@ -0,0 +1 @@ +//db:article[ft:query(., "title:(xquery AND language) AND xml")] \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-54.txt b/src/main/xar-resources/data/lucene/listings/listing-54.txt new file mode 100644 index 00000000..d67170d6 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-54.txt @@ -0,0 +1,4 @@ +for $article in collection("/db/articles")//db:article[ft:query(., "xquery", map { "fields": ("title", "author") })] +order by ft:field($article, "title"), ft:field($article, "author")[1] +return + $article \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-55.txt b/src/main/xar-resources/data/lucene/listings/listing-55.txt new file mode 100644 index 00000000..e04b4bc2 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-55.txt @@ -0,0 +1 @@ +//db:article[ft:query(., (), map { "fields": ("title", "author") })] \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-56.txt b/src/main/xar-resources/data/lucene/listings/listing-56.txt new file mode 100644 index 00000000..fb47e355 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-56.txt @@ -0,0 +1,10 @@ +let $result := collection("/db/articles")//db:article[ft:query(., "xml")] +let $facets := ft:facets($result, "keyword", ()) +return + + { + map:for-each($facets, function($label, $count) { + + }) + } +
{$label}{$count}
\ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-57.txt b/src/main/xar-resources/data/lucene/listings/listing-57.txt new file mode 100644 index 00000000..332a7408 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-57.txt @@ -0,0 +1,7 @@ +let $options := map { + "facets": map { + "keyword": ("indexing", "facets") + } +} +return + collection("/db/articles")//db:article[ft:query(., "xml", $options)] \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-58.xml b/src/main/xar-resources/data/lucene/listings/listing-58.xml new file mode 100644 index 00000000..a90136c4 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-58.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/listings/listing-59.xml b/src/main/xar-resources/data/lucene/listings/listing-59.xml new file mode 100644 index 00000000..44f78948 --- /dev/null +++ b/src/main/xar-resources/data/lucene/listings/listing-59.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/xar-resources/data/lucene/lucene.xml b/src/main/xar-resources/data/lucene/lucene.xml index 229f8aea..f01d4faf 100644 --- a/src/main/xar-resources/data/lucene/lucene.xml +++ b/src/main/xar-resources/data/lucene/lucene.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Full Text Index - 4Q18 + 2Q19 indexing @@ -19,7 +19,7 @@ Introduction - The full text index module is based on Apache Lucene. + The full text index module is based on Apache Lucene. The full-text index module is tightly integrated with eXist-db's modularized indexing architecture: the index behaves like a plug-in which adds itself to the database's index pipelines. Once configured, the index will be notified of relevant @@ -32,44 +32,18 @@ - - Enabling the Lucene Module - - The Lucene full text index is enabled by default (since eXist-db version 1.4). In case - it is not enabled in your installation, here's how to get it up and running: - - - Enable it according to the instructions in the article on index - modules. - - - Then (re-)build eXist-db using the provided - build.sh or build.bat script. The build - process downloads the required Lucene jars automatically. If everything builds - ok, you'll find a jar exist-lucene-module.jar in the - lib/extensions directory. - - - Edit the main configuration file, conf.xml and un-comment - the Lucene-related section: - - - - - The index has a single configuration parameter on the - modules/module element called buffer. It - defines the amount of memory (in megabytes) Lucene will use for buffering index entries - before they are written to disk. See the Lucene Javadocs. - - - - - Configuring the Index + The index has a single configuration parameter on the + modules/module element called + buffer. It defines the amount of memory (in megabytes) Lucene will use for + buffering index entries before they are written to disk. See the Lucene Javadocs. Like other indexes, you create a Lucene index by configuring it in a - collection.xconf document as explained in documentation. For example: + collection.xconf document as explained in documentation. For example: collection.xconf for version 2.2 @@ -172,7 +146,7 @@ back to the section. If you query a larger context, you can use the KWIC module to show the user text surrounding each match. Or you can - ask eXist-db to highlight each match + ask eXist-db to highlight each match with an exist:match tag, which you can later use to locate the matches within the text. @@ -307,11 +281,11 @@ - In the example above, we define that Lucene's StandardAnalyzer should be used by default (the analyzer element + In the example above, we define that Lucene's StandardAnalyzer should be used by default (the analyzer element without id attribute). We provide an additional analyzer and assign it the id ws, by which the analyzer can be referenced in the actual index definitions. - The whitespace analyzer is the most basic one. As the name implies, it tokenizes + The whitespace analyzer is the most basic one. As the name implies, it tokenizes the text at white space characters, but treats all other characters - including punctuation - as part of the token. The tokens are not converted to lower case and there's no stopword filter applied. @@ -346,7 +320,7 @@ java.lang.reflect.Field - The value Version#LUCENE_CURRENT is always added as first parameter for the + The value Version#LUCENE_CURRENT is always added as first parameter for the analyzer constructor (a fallback mechanism is present for older analyzers). The previously valid values java.io.File and java.util.Set can not be used since Lucene 4. @@ -366,15 +340,115 @@ - - - Defining Fields - - Sometimes you want to define different Lucene indexes on the same set of - elements, for instance to use a different analyzer. eXist-db allows to - name a certain index using the field attribute: - - Such an index is called named index. See on how to query these indexes. + + Facets and Fields + Starting with eXist 5.0, an index configuration may define additional facets and fields. Both can hold arbitrary content, which will be + attached to the indexed parent node and can be used to further refine a query, sort results or display additional information to the + user: + + + facet + + a facet defines a concept or information item by which the indexed + items can be grouped. Typical facets would be categories taken from some + pre-defined taxonomy, languages, dates, places or names occurring in a + text corpus. The goal is to enable users to "drill down" into a + potentially large result set by selecting from a list of facets + displayed to them. For example, if you shop for a laptop, you are often + presented with a list of facets with which you may restrict your result + by CPU type, memory or screen size etc. As you select facets, the result + set will become smaller and smaller. + Facets are always pre-defined at indexing time, so the drill down is + very fast. They are meant for refining other queries, the assumption + always is that the user selects one or more facets from a list of facet + values associated with the current query results. + + + + field + + a field contains additional, searchable content attached to an indexed + parent node. In many cases fields will contain constructed content which + is not directly found in the indexed XML or requires costly computation. + For example, determining publication dates or author names for a set of + articles may require some pre-processing which may be too expensive at + query time. A field allows you to pre-compute those information items at + indexing time. + Fields can be queried in the same expression as the parent node, + resulting in fast response times. Their content can optionally be stored + to speed up display or sorting. Fields may also use a different analyzer + than the parent node, which allows e.g. multiple languages to be handled + separately. + + + + + Facet and Field Configuration + Facets and fields are configured in a similar way. Both should appear nested inside the parent index element they are attached to. Let's + assume we have a collection of articles written in docbook. Each article will have a top-level info element describing the + article. Each info element contains a title, one or more authors and a list of keywords in + keywordset. + Keywords are a perfect candidate for a facet, so let's start with it: + + Every facet needs to have a dimension attribute, defining the name of the facet dimension the items will be added to. The + values associated with this facet dimension are determined by the expression attribute: it may contain an arbitary XQuery + expression rooted in the parent node being indexed. In the example the parent will be a db:article element, so the context item + for the expression is set to this element. + The expression is evaluated and for each result item, a facet value is added + to the dimension using the string value of the item. If the expression returns + the empty sequence for the current parent node, the corresponding facet will be + empty as well. + A facet can also be defined to be hierarchical. A typical example would be a date, which consists of a year, month and day component. By + indexing the single components as separate parts of a hierarchical facet, we enable the user to drill down by year first, then by month and + finally by day. Let's assume each of our docbook articles has a pubdate containing a date in xs:date + format: + + Next, we may want to define fields for the authors and title of the article. In docbook, author can be a complex element, + consisting e.g. of a personname with nested + surname and firstname. For display to the user and sorting we want to pre-compute a normalized string out of those + components: + + A field does not need to define an expression attribute though: if no expression is given, the field's content will be taken + from the parent element. This makes sense e.g. if you would like to index a node twice, e.g. using a different analyzer. Or you can specify + index="no" on the parent element and index its content with an explicit field. + A field may use a different analyzer than the one used to index the parent + content. Analyzers are referenced through analyzer attribute as described above. + Typed fields: fields may also declare a type attribute: supported values + are atomic types like xs:date, xs:dateTime, + xs:time, xs:integer, + xs:decimal and their sub-types. Defining a type is + important with respect to sorting (see below), e.g. to get dates in the correct + order. Typed fields can also be retrieved into corresponding XQuery atomic + values, so no additional casting is necessary. However, typed fields cannot be + queried using Lucene's default query parser, only retrieved with + ft:field. + Storing fields: By default the complete content of a field is stored in the Lucene index, + allowing later fast retrieval of the content using + ft:field. You can disable storing the content by adding + attribute store="no". The field will still be indexed and + available for queries though. + + Importing external modules: as can be seen in the field definition for "author" above, expressions can easily become quite verbose, so writing them into an attribute + is not convenient. It is thus also possible to import one or more XQuery modules into the index configuration and use the functions declared + in the module: + + In this example we extract the code for computing the author field into a function idx:authors located in an XQuery + module, module.xql. Note that we're using a relative import path for the module in the at attribute. + The path will be resolved relative to the collection to which the collection configuration applies (not where the collection configuration + itself is stored). It is also important that the module and all dependencies it imports is stored before the collection + configuration is saved and indexing starts. + Conditions: sometimes you may want to create a field only if a certain condition is met. For this + purpose, an additional attribute if may be added, containing an XPath expression. If the expression evaluates to an + effective boolean value of true, the field will be created. Otherwise it is skipped. + Conditions are useful to e.g. distinguish between different languages and apply an appropriate analyzer to each. Let's assume our docbook + articles may have both, a German and English version. The language is indicated by the @xml:lang attribute on the top-level + section element. We thus create a separate field for each language and connect it to the analyzer appropriate for the + language: + + Note that we skip indexing the parent article element with index="no" because we do not want a default index, but + rather a separate field for each language, so we can target them in queries explicitely. + @@ -382,119 +456,166 @@ Querying the Index - Querying full text from XQuery is straightforward. For example: - - The query function takes a query string in Lucene's default query syntax. It returns a set of nodes which are relevant with respect to the - query. Lucene assigns a relevance score or rank (a decimal number) to each match. This - score is preserved by eXist-db and can be accessed through the score function. - The higher the score, the more relevant the text. You can use Lucene's features to - "boost" a certain term in the query: give it a higher or lower influence on the final - rank. - Please note that the score is computed relative to the root context of the index. If - you created an index on SPEECH, all scores will be computed based on text in - SPEECH nodes, even though your actual query may only return LINE - children of SPEECH. - The Lucene module is fully supported by eXist-db's query-rewriting optimizer. This - means that the query engine can rewrite the XQuery expression to make best use of the - available indexes. All the rules and hints given in the tuning guide fully apply to the Lucene index. - To present search results in a Keywords in Context format, you - may want to have a look at eXist-db's KWIC - module. - - - - - Query a Named Index - - To query a named index (see ), use the - ft:query-field($fieldName, $query) instead of - ft:query: - ft:query-field("title", "xml") - ft:query-field works exactly like ft:query, - except that the set of nodes to search is determined by the nodes in the named - index. The function returns the nodes selected by the query, which would be - title elements in the example above. - You can use ft:query-field with an XPath filter expression, - just as you would call ft:query: - //section[ft:query-field("title", "xml")] + The query function takes a query string in Lucene's default query syntax. It returns a set of nodes which are relevant with respect to the query. Lucene assigns a relevance score or rank (a + decimal number) to each match. This score is preserved by eXist-db and can be accessed through the score function. + The higher the score, the more relevant the text. You can use Lucene's features to "boost" a certain term in the query: give it a higher or lower + influence on the final rank. + Please note that the score is computed relative to the root context of the index. If you created an index on SPEECH, all scores will be + computed based on text in SPEECH nodes, even though your actual query may only return LINE children of + SPEECH. + The query string passed to ft:query may be empty. In this case all items from the context sequence are matched and returned. + Using an empty query makes sense in combination with the options for retrieving facets and field values described below. + The Lucene module is fully supported by eXist-db's query-rewriting optimizer. This means that the query engine can rewrite the XQuery expression + to make best use of the available indexes. All the rules and hints given in the tuning guide fully apply to the + Lucene index. + To present search results in a Keywords in Context format, you may want to have a look at eXist-db's KWIC module. + + Querying Fields + Fields associated with the indexed parent node (see above) can be queried with + ft:query by prefixing parts of the query expression with the + field name followed by a colon (':') as described in the documentation for Lucene's + default query syntax. For example, the following expression searches for a docbook + article containing the terms "xml" in the text and "xquery language" in the + title: + + Note how subexpressions can be grouped with parentheses to clearly state to which + field they apply. + + + Retrieving Field Content + You can retrieve the content of a field for display or sorting purposes using the + ft:field function. However, fields are always bound to the + result of a full text query, so you cannot retrieve them without calling + ft:query first. Also, keeping track of fields can be + expensive, so ft:query needs to be explicitly passed a parameter + specifying which fields should be made available via the query result. The third, + optional, parameter to ft:query supports a + fields option listing the names of the fields to be provided. + The values of the associated field can then be retrieved for each item in the query + result using ft:field. + One of the most common uses for retrieving field contents will be for sorting the + results of a query. The order by in the example below sorts results by + title first and then by author. + + Note that even though fields are only available with the results of the ft:query, + it is still possible to use them for sorting and displaying the whole available data + set. For example, to view all articles in the collection you could pass in an empty + sequence in place of the query string like this: + + Typed fields: If you declared a different type than xs:string on a field, you should + remember to use the 3-parameter variant of ft:field and pass in the name of the desired target type as 3rd parameter. Reason: + lucene basically stores all non-text data types as numbers and eXist has no way to figure out the original type of the field. So if you defined + a field with type xs:date, make sure to retrieve it with ft:field($node, "date", "xs:date"), otherwise all + you get is a number. + + + Displaying Facet Counts + Facet counts for the query result can be retrieved if facets are associated with + an indexed parent element. Facet counts for a particular dimension are available as + a map containing an entry for each facet value occurring in one or more items of the + query result. The map links the facet value given as a map key with a positive count + corresponding to the number of times the value occurs in the result set. Facet + values with zero count are never included. + For example, we may use the following query to display the facet counts for the "keyword" dimension in our set of docbook articles: + + Function ft:facets expects a sequence of nodes belonging to a result set obtained from one or more calls to + ft:query. If the sequence was combined from multiple expressions calling ft:query, the facet counts + will be merged. Second parameter of ft:facets specifies the dimension for which facet counts should be retrieved. The third + parameter should be either empty sequence or a positive integer denoting the maximum number of facets to show. In the case it is smaller than + the total number of facets, only those with the highest counts are returned. Passing an empty sequence means that all facet value counts should + be shown. Please note that facets with a zero occurrence count (i.e. facets not appearing anywhere in the result) are never returned. + For hierarchical facets only the top-most facet value in the hierarchy will be + returned by default. For example, if you indexed a date facet with separate year, + month and day component, a call to ft:facets($node, "date", ()) will + return facet counts for years only. To also get counts for months, you have to call + ft:facets with a fourth parameter, passing in the year for + which sub-facet counts should be retrieved. To get days, you also need to specify + month and so on. ft:facets($node, "date", (), ("2018", "06")) will thus + return facet counts for all days in June 2018. + + + Refining a Query with Facets + The main purpose of facets is to quickly narrow down a query result, limiting it + to only items which match a certain facet value. To drill down by a given facet + dimension and value, pass a key "facets" in the options map given in the third + parameter of ft:query: + + If you specify more than one value for one facet dimension, these will be linked + together with a logical or, thus returning elements matching any + of the alternative facet values for that dimension. If you specify multiple + dimensions, they are treated as an and, limiting the result to + elements matching both dimensions. - - - Describing Queries in XML - - Lucene's default query syntax does not provide access to all available features. - However, eXist-db's ft:query function also accepts a description - of the query in XML, as an alternative to passing a query string. The XML - description closely mirrors Lucene's query API. It is transformed into an internal - tree of query objects, which is directly passed to Lucene for execution. This has - several advantages, for example you can specify if the order of terms should be - relevant for a phrase query: - + Lucene's default query syntax does not provide access to all available features. However, eXist-db's ft:query function also + accepts a description of the query in XML, as an alternative to passing a query string. The XML description closely mirrors Lucene's query API. + It is transformed into an internal tree of query objects, which is directly passed to Lucene for execution. This has several advantages, for + example you can specify if the order of terms should be relevant for a phrase query: - The following elements may occur within a query description: - term + + term + - Defines a single term to be searched in the index. If the root query - element contains a sequence of term elements, wrap them in - bool/ and they will be combined as in a boolean "or" query. - For example: + Defines a single term to be searched in the index. If the root query element contains a sequence of term elements, wrap them in + bool/ and they will be combined as in a boolean "or" query. For example: - This finds all SPEECH elements containing either - nation or miserable or both. + This finds all SPEECH elements containing either nation or miserable or both. - wildcard + + wildcard + - A string with a * wildcard in it. This will be matched - against the terms of a document. Can be used instead of a - term element. For example: + A string with a * wildcard in it. This will be matched against the terms of a document. Can be used instead of a + term element. For example: - regex + + regex + - A regular expression which will be matched against the terms of a - document. Can be used instead of a term element. For + A regular expression which will be matched against the terms of a document. Can be used instead of a term element. For example: - bool + + bool + - Constructs a boolean query from its children. Each child element may - have an occurrence indicator, which could be either - must, should or - not: + Constructs a boolean query from its children. Each child element may have an occurrence indicator, which could be either + must, should or not: must - this part of the query must be - matched + this part of the query must be matched should - this part of the query should be - matched, but doesn't need to + this part of the query should be matched, but doesn't need to not - this part of the query must not be - matched + this part of the query must not be matched @@ -503,99 +624,80 @@ - phrase + + phrase + - Searches for a group of terms occurring in the correct order. The - element may either contain explicit term elements or text - content. Text will be automatically tokenized into a sequence of terms. - For example: + Searches for a group of terms occurring in the correct order. The element may either contain explicit term elements or + text content. Text will be automatically tokenized into a sequence of terms. For example: This has the same effect as: - The attribute slop can be used for a proximity - search: Lucene will try to find terms which are within the specified - distance: + The attribute slop can be used for a proximity search: Lucene will try to find terms which are within the + specified distance: - near + + near + - near is a powerful alternative to phrase and - one of the features not available through the standard Lucene query - parser. - If the element has text content only, it will be tokenized into terms - and the expression behaves like phrase. Otherwise it may - contain any combination of term, first and nested - near elements. This makes it possible to search for two - sequences of terms which are within a specific distance. For - example: + + near is a powerful alternative to phrase and one of the features not available through the standard Lucene + query parser. + If the element has text content only, it will be tokenized into terms and the expression behaves like phrase. Otherwise + it may contain any combination of term, first and nested near elements. This makes it possible to + search for two sequences of terms which are within a specific distance. For example: - Element first matches a span against the start of the text - in the context node. It takes an optional attribute - end to specify the maximum distance from the start of - the text. For example: + Element first matches a span against the start of the text in the context node. It takes an optional attribute + end to specify the maximum distance from the start of the text. For example: - As shown above, the content of first can again be text, a - term or near. - Contrary to phrase, near can be told to ignore - the order of its components. Use parameter - ordered="yes|no" to change near's behaviour. For - example: + As shown above, the content of first can again be text, a term or near. + Contrary to phrase, near can be told to ignore the order of its components. Use parameter + ordered="yes|no" to change near's behaviour. For example: - All elements in a query may have an optional boost parameter - (float). The score of the nodes matching the corresponding query part will be - multiplied by this factor. + All elements in a query may have an optional boost parameter (float). The score of the nodes matching the corresponding + query part will be multiplied by this factor. - - Additional parameters - - The ft:query function allows a third parameter for passing additional - settings to the query engine. This parameter must be an XML fragment which lists the - configuration properties to be set as child elements: - + The ft:query function allows a third parameter for passing additional settings to the query engine. This parameter must be an XML + fragment which lists the configuration properties to be set as child elements: - The meaning of those properties is as follows filter-rewrite - Controls how terms are expanded for wildcard or regular expression - searches. If set to yes, Lucene will use a filter to - pre-process matching terms. If set to no, all matching - terms will be added to a single boolean query which is then executed. - This may generate a "too many clauses" exception when applied to large - data sets. Setting filter-rewrite to yes avoids those - issues. + Controls how terms are expanded for wildcard or regular expression searches. If set to yes, Lucene will use a filter + to pre-process matching terms. If set to no, all matching terms will be added to a single boolean query which is then + executed. This may generate a "too many clauses" exception when applied to large data sets. Setting filter-rewrite to + yes avoids those issues. default-operator - The default operator with which multiple terms will be combined. - Allowed values: or, and. + The default operator with which multiple terms will be combined. Allowed values: or, and. phrase-slop - Sets the default slop for phrases. If 0, then exact - phrase matches are required. Default value is 0. + Sets the default slop for phrases. If 0, then exact phrase matches are required. Default value is + 0. leading-wildcard - When set to yes, * or ? are - allowed as the first character of a PrefixQuery and WildcardQuery. Note - that this can produce very slow queries on big indexes. + When set to yes, * or ? are allowed as the first character of a PrefixQuery and + WildcardQuery. Note that this can produce very slow queries on big indexes. @@ -612,6 +714,10 @@ extracted from for instance a PDF to the binary document. It works equally well for XML documents though and is an efficient method to attach computed fields to a document, containing information which does not exist in the XML as such. + + With the advent of ) functionality it is + recommended to use these instead of constructed fields. + The field indexes are not configured via collection.xconf. Instead we add fields programmatically from an XQuery (which could be run via a trigger): @@ -632,4 +738,4 @@ function: ft:remove-index("/db/demo/test.xml") -
\ No newline at end of file +
diff --git a/src/main/xar-resources/data/newrangeindex/newrangeindex.xml b/src/main/xar-resources/data/newrangeindex/newrangeindex.xml index c849bbdf..082edfd7 100644 --- a/src/main/xar-resources/data/newrangeindex/newrangeindex.xml +++ b/src/main/xar-resources/data/newrangeindex/newrangeindex.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Range Index - 1Q18 + 2Q19 indexing @@ -46,7 +46,7 @@ Store this definition and do a re-index. Index files are created in the - webapp/WEB-INF/data/range directory (or wherever you configured your + $EXIST_HOME/data/range directory (or wherever you configured your data directory to be). The indexes will be used automatically for general or value comparisons, as well as string functions like fn:contains, fn:starts-with, diff --git a/src/main/xar-resources/data/oldrangeindex/oldrangeindex.xml b/src/main/xar-resources/data/oldrangeindex/oldrangeindex.xml index 4b720b67..dc7c98e2 100644 --- a/src/main/xar-resources/data/oldrangeindex/oldrangeindex.xml +++ b/src/main/xar-resources/data/oldrangeindex/oldrangeindex.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Legacy Range index - 1Q18 + 2Q19 indexing @@ -28,7 +28,7 @@ With this short inventory, the text nodes of the price elements have dollar - values expressed as a floating-point number, (e.g. "299.99"), which has an XML Schema Definition (XSD) data + values expressed as a floating-point number, (e.g. "299.99"), which has an XML Schema Definition (XSD) data type of xs:double. Using this built-in type to define a range index, we can improve the efficiency of searches for price values. During indexing, eXist-db will apply this data type selection by attempting to cast all price diff --git a/src/main/xar-resources/data/oxygen/oxygen.xml b/src/main/xar-resources/data/oxygen/oxygen.xml index 6cad86dd..342c62ba 100644 --- a/src/main/xar-resources/data/oxygen/oxygen.xml +++ b/src/main/xar-resources/data/oxygen/oxygen.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Using oXygen with eXist-db - 1Q18 + 2Q19 getting-started @@ -11,7 +11,7 @@ - This article describes how to use eXist-db in combination with the oXygen XML Editor IDE. + This article describes how to use eXist-db in combination with the oXygen XML Editor IDE. @@ -19,7 +19,7 @@ Overview - oXygen XML Editor is a powerful + oXygen XML Editor is a powerful IDE for working with XML in general but also with eXist-db. Its eXist-db specific capabilities include: @@ -35,7 +35,7 @@ Executing queries and displaying results - This article describes how to configure oXygen to work with eXist-db. See also oXygen's eXist-db support article. + This article describes how to configure oXygen to work with eXist-db. See also oXygen's eXist-db support article. diff --git a/src/main/xar-resources/data/production_good_practice/listings/listing-3.xml b/src/main/xar-resources/data/production_good_practice/listings/listing-3.xml index 3ec46618..17af91ca 100644 --- a/src/main/xar-resources/data/production_good_practice/listings/listing-3.xml +++ b/src/main/xar-resources/data/production_good_practice/listings/listing-3.xml @@ -1,12 +1,9 @@ -         - -             - -                 -                 -                 - -             - + + + + + + + diff --git a/src/main/xar-resources/data/production_good_practice/production_good_practice.xml b/src/main/xar-resources/data/production_good_practice/production_good_practice.xml index f1ff7c41..59957837 100644 --- a/src/main/xar-resources/data/production_good_practice/production_good_practice.xml +++ b/src/main/xar-resources/data/production_good_practice/production_good_practice.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Production Use - Good Practice - 1Q18 + 2Q19 operations @@ -35,7 +35,7 @@ eXist-db is written in Java - so for performance and security reasons, please ensure that you have the latest and greatest Java JDK release that is compatible with your version of eXist. The latest version can always be found here at: - http://java.sun.com and the recommended major version for a given eXist release can be found at: We recommend to prevent eXist's REST server from directly receiving web requests, and use URL Rewriting only to control code execution. The REST server feature is enabled by default in - $EXIST_HOME/webapp/WEB-INF/web.xml. Changing the + $EXIST_HOME/etc/webapp/WEB-INF/web.xml. Changing the param-value to true, allows you to filter request via your own XQuery controller. @@ -288,7 +288,7 @@ We recommend to restrict the REST servers ability to execute XQuery code to authenticated users, by modifying: - $EXIST_HOME/webapp/WEB-INF/web.xml: + $EXIST_HOME/etc/webapp/WEB-INF/web.xml: @@ -297,7 +297,7 @@ In addition, we recommend to restrict the REST servers ability to execute XUpdate statements. Simply modify - $EXIST_HOME/webapp/WEB-INF/web.xmlby + $EXIST_HOME/etc/webapp/WEB-INF/web.xmlby changing the param-value from enabled to disabled: @@ -310,26 +310,16 @@ Further considerations for a live environment: - - Standalone mode - - eXist-db can be operated in a cut-down standalone mode (see - server.(sh|bat)). This provides just the core services from - the database (no webapp file system access and no documentation). The - entire application has to be stored in the database and is served from - there. This is an ideal starting place for a production system. - - Services eXist-db provides services for accessing the database. You should reduce these to the absolute minimum you need for your production - application. If you are operating in standalone mode, this is done via - server.xml, otherwise webapp/WEB-INF/web.xml. + application.This is done via + etc/webapp/WEB-INF/web.xml. You should look at each configured service, servlet or filter and ask - yoursel: do we use this? Most production environments are unlikely to - need WebDAV or SOAP Admin (Axis). + yourself: do we use this? Most production environments are unlikely to + need WebDAV. @@ -337,7 +327,7 @@ eXist-db loads several XQuery and Index extension modules by default. You should modify the builtin-modules section of - conf.xml and only load what you + etc/conf.xml and only load what you need for your application. @@ -357,15 +347,15 @@ However you decide to deploy and start eXist, please ensure that you allocate enough maximum memory to eXist-db uwing the Java - -Xmx setting. See backup.sh and - startup.sh. + -Xmx setting. See bin/backup.sh and + bin/startup.sh. cacheSize and collectionCache These two settings in db-connection of - conf.xml should be adjusted appropriately based on + etc/conf.xml should be adjusted appropriately based on your -Xmx setting (see above). See the tuning guide for advice on sensible values. @@ -389,7 +379,7 @@ Keeping the eXist-db application, data and journal on separate disks, connected to different I/O channels, can have a positive impact on performance. The location of - the data files and journals can be changed in conf.xml. + the data files and journals can be changed in etc/conf.xml. @@ -425,9 +415,9 @@ eXist-db, like any Web Application Server, should not be directly exposed to the Web. Instead, we strongly recommend proxying eXist-db through a Web Server such as Nginx or Apache HTTPD. See here for further details. + xlink:href="https://wiki.nginx.org/Main">Nginx or Apache HTTPD. See here for further details. If you proxy eXist-db through a Web Server, you can also configure your firewall to allow external access directly to the Web Server only. If done correctly this means that web users will not be able to access any eXist-db services directly, except your @@ -446,8 +436,8 @@ of resources from the server to the client, hopefully resulting in a faster experience for the end-user. GZip Compression can be enabled in web.xml, which can be found in - either $EXIST_HOME/webapp/WEB-INF/web.xml for default deployments or - $EXIST_HOME/tools/jetty/etc/standalone/WEB-INF/web.xml for standalone + either $EXIST_HOME/etc/webapp/WEB-INF/web.xml for default deployments or + $EXIST_HOME/etc/jetty/standalone/WEB-INF/web.xml for standalone deployments. diff --git a/src/main/xar-resources/data/production_web_proxying/production_web_proxying.xml b/src/main/xar-resources/data/production_web_proxying/production_web_proxying.xml index 62b1bfc6..2e19d00e 100644 --- a/src/main/xar-resources/data/production_web_proxying/production_web_proxying.xml +++ b/src/main/xar-resources/data/production_web_proxying/production_web_proxying.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Production use - Proxying eXist-db behind a Web Server - 1Q18 + 2Q19 operations @@ -53,7 +53,7 @@ Examples are provided for: - Nginx + Nginx A very small but extremely powerful Web Server which is also simple to configure. It powers some of the biggest sites on the Web. See - Apache + Apache HTTPD Likely the most prolific Web Server used on the web. See Package Repository - 1Q18 + 2Q19 application-development @@ -154,7 +154,7 @@ expath-pkg.xml descriptor. For eaxample: <dependency package="http://exist-db.org/apps/shared"/> It is also possible to create a dependency on a specific version, based on - Semantic + Semantic Versioning. This can be done by adding either of the attributes: version, semver, semver-min, semver-max: @@ -439,7 +439,7 @@ repo.xml will always be relative to this root collection. eXist-db's URL rewriting is by default configured to map any path starting with /apps to the repository root collection. Check - webapp/WEB-INF/controller-config.xml and the etc/webapp/WEB-INF/controller-config.xml and the URL rewriting documentation. diff --git a/src/main/xar-resources/data/scheduler/scheduler.xml b/src/main/xar-resources/data/scheduler/scheduler.xml index 17b7cc36..30cfee6c 100644 --- a/src/main/xar-resources/data/scheduler/scheduler.xml +++ b/src/main/xar-resources/data/scheduler/scheduler.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Scheduler Module - 1Q18 + 2Q19 operations application-development @@ -45,7 +45,7 @@ There is an XQuery library module, Scheduler Module, which provides functions for scheduling jobs and managing jobs scheduled for execution. The scheduler XQuery library module is activated by uncommenting the following in eXist-db's @@ -59,7 +59,7 @@ The scheduler keeps a log file of its actions and issues that occur when executing - jobs in webapp/WEB-INF/logs/scheduler.log. + jobs in logs/scheduler.log. diff --git a/src/main/xar-resources/data/security/security.xml b/src/main/xar-resources/data/security/security.xml index b20791d8..aaf9c452 100644 --- a/src/main/xar-resources/data/security/security.xml +++ b/src/main/xar-resources/data/security/security.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Security - 1Q18 + 2Q19 operations application-development @@ -15,13 +15,13 @@ This article discusses eXist-db's security features and how to manage authentication, users, groups, passwords, permissions and access controls. eXist-db's security infrastructure is built on a Unix permissions model (see ), which we have extended with . The security - infrastructure is very flexible and extensible, which enables the more advanced user, to - provide custom to enable different authentication - models. + linkend="unix-model"/>), which we have extended with . As far as + possible we try and adhere to the POSIX standard. The security infrastructure is very + flexible and extensible, which enables the more advanced user, to provide custom to enable different authentication models. As well as the mechanisms described in this article, you should also note the presence of the Security Manager XQuery library module, which enables you to perform many user and security related tasks programmatically from XQuery. @@ -87,7 +87,7 @@ Change the password programmatically, for instance from within eXide, by using the sm:passwd() function of the Security Manager XQuery library module. @@ -137,7 +137,7 @@ Create a user programmatically, for instance from within eXide, by using the sm:create-account() function of the Security Manager XQuery library module. @@ -145,6 +145,84 @@ + + + + System Accounts and Groups + eXist-db has several built-in accounts which ensure the correct functioning of the system. These accounts and groups cannot be removed, however the admin and guest + accounts can be disabled if required. + + System Accounts + + + + + Name + Description + + + + + SYSTEM + + This is a DBA account under which the database executes internal privileged opertaions. + This account is not exported during backups. + + + + admin + This is the default DBA account. + + + guest + This is the account under which operations by un-authenticated users will be executed, for example users connecting to the REST Server without authenticating. + + + nobody + + This is an internal account and should not be used directly. + This account is not exported during backups. + + + + + + + + System Groups + + + + + Name + Description + + + + + DBA + + This is the DBA group, all DBA users should be members of this group. + + + + guest + This is the primary group of the guest. + + + nogroup + + This is an internal group and should not be used directly. In the case that users without a + primary group are imported from an older eXist-db backup, the users will be restored with this as their primary group. + This group is not exported during backups. + + + + + + + + @@ -300,7 +378,7 @@ Do it programmatically, for instance from within eXide, by using the one of the functions of the Security Manager XQuery library module. @@ -441,7 +519,7 @@ More information about ACLs is available as slides (PDF) and a presentation on YouTube. + xlink:href="https://www.youtube.com/watch?v=Z_Dryy9DtVo">YouTube. @@ -639,8 +717,8 @@ As you can see, eXist-db does not store passwords in the clear. It stores - hashed values of the passwords (in base64 encoding), using the - RIPEMD-160 cryptographic hashing algorithm. + hashed values of the passwords (in Base64 encoding), using the + RIPEMD-160 cryptographic hashing algorithm. Whenever a user supplies account credentials for authentication, the database applies RIPEMD-160 hash to the password and compares it to the hash stored in the user's account document. Storing hashes of passwords is a best practice in diff --git a/src/main/xar-resources/data/templating/templating.xml b/src/main/xar-resources/data/templating/templating.xml index d2868a9e..6dcbabab 100644 --- a/src/main/xar-resources/data/templating/templating.xml +++ b/src/main/xar-resources/data/templating/templating.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> HTML Templating Module - 1Q18 + 2Q19 application-development @@ -274,7 +274,7 @@ and configures the URL rewriting to call this for any path ending in .html. Using eXide is therefore the easiest way to get started with the templating framework. - Please consult the Getting Started with Web + Please consult the Getting Started with Web Application Development guide. @@ -289,7 +289,7 @@ xlink:href="https://github.com/eXist-db/shared-resources">shared-resources application also exports the module. This will always be the latest version. You could therefore define a dependency on the shared-resources app (see the packaging documentation). You can now just import the + xlink:href="repo">packaging documentation). You can now just import the module by its namespace URI, but without specifying a location: import module namespace templates="http://exist-db.org/xquery/templates"; The documentation and demo applications all read the templating module from diff --git a/src/main/xar-resources/data/testing/testing.xml b/src/main/xar-resources/data/testing/testing.xml index 0ccac0c2..9a4b55d5 100644 --- a/src/main/xar-resources/data/testing/testing.xml +++ b/src/main/xar-resources/data/testing/testing.xml @@ -34,7 +34,7 @@ Unit testing: These tests typically operate at the level of individual functions. eXist-db has its own unit testing framework for XQuery named XQSuite. It is prominently used in our bug reports and - source-code repo. Most applications will need to run multiple unit test tools to test, e.g. Java, JavaScript, and XQuery code. + source-code repo. Most applications will need to run multiple unit test tools to test, e.g. Java, JavaScript, and XQuery code. diff --git a/src/main/xar-resources/data/troubleshooting/listings/listing-6.xml b/src/main/xar-resources/data/troubleshooting/listings/listing-6.xml index a9f638e5..57d66033 100644 --- a/src/main/xar-resources/data/troubleshooting/listings/listing-6.xml +++ b/src/main/xar-resources/data/troubleshooting/listings/listing-6.xml @@ -1,7 +1,7 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/src/main/xar-resources/data/troubleshooting/listings/listing-8.xml b/src/main/xar-resources/data/troubleshooting/listings/listing-8.xml index fd6cc023..a1695fcf 100644 --- a/src/main/xar-resources/data/troubleshooting/listings/listing-8.xml +++ b/src/main/xar-resources/data/troubleshooting/listings/listing-8.xml @@ -1,7 +1,7 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/src/main/xar-resources/data/troubleshooting/troubleshooting.xml b/src/main/xar-resources/data/troubleshooting/troubleshooting.xml index 9d721a54..d94493a5 100644 --- a/src/main/xar-resources/data/troubleshooting/troubleshooting.xml +++ b/src/main/xar-resources/data/troubleshooting/troubleshooting.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Troubleshooting - 1Q18 + 2Q19 operations @@ -15,7 +15,7 @@ This document contains hints and tips about troubleshooting problems. It also tells you where to find information (version numbers, log information, etc.). See also Getting Help. + xlink:href="getting-help">Getting Help. @@ -76,13 +76,9 @@ Make sure eXist-db is not running - If you installed the source code (and therefore the development tools), call - ant as follows: - build.sh clean-default-data-dir - If you do not have build.sh (or build.bat), you may - can manually remove the contents of your data directory. - The default data directory is - $EXIST_HOME/webapp/WEB-INF/data + Manually remove the contents of your data directory. + The default data directory is $EXIST_HOME/data + @@ -90,14 +86,11 @@ - <code>JAVA_HOME</code> and <code>EXIST_HOME</code> Environmental Variables - - When using one of the shell or batch scripts, eXist-db can fail to start up properly - if either of the two key environmental variables JAVA_HOME and/or - EXIST_HOME are not set properly. Both variables are used in the - startup.bat and startup.sh scripts and have to be - set correctly before the scripts are run (you can of course also insert the lines - required in the beginning of the scripts themselves). + <code>JAVA_HOME</code> Environment Variable + + When using one of the shell or batch scripts, eXist-db may fail to start up properly + if the environment variableJAVA_HOME is not set properly. The + variable us used by all scripts in $EXIST_HOME/bin. JAVA_HOME @@ -108,8 +101,8 @@ Windows Setting JAVA_HOME on Windows + xlink:href="https://confluence.atlassian.com/display/DOC/Setting+the+JAVA_HOME+Variable+in+Windows" + >Setting JAVA_HOME on Windows @@ -117,54 +110,22 @@ Linux Setting JAVA_HOME on Linux + xlink:href="https://www.cyberciti.biz/faq/linux-unix-set-java_home-path-variable/" + >Setting JAVA_HOME on Linux macOS Setting JAVA_HOME on macOS - - - - - - - EXIST_HOME - - This must point to the directory that contains eXist-db's configuration - file conf.xml. For example, if the - EXIST_HOME path is C:\Program - Files\eXist, the server will look for C:\Program - Files\eXist\conf.xml. - You can set EXIST_HOME in the same way that you set - JAVA_HOME. - On macOS, depending on how you installed eXist, you would open a terminal - and enter either: - - - for JAR based installs - - export EXIST_HOME=/Applications/eXist - - - - for DMG and homebrew installs - - export EXIST_HOME=/Applications/eXist-db.app/Contents/Resources/eXist-db + xlink:href="https://osxdaily.com/2015/07/28/set-enviornment-variables-mac-os-x/" + >Setting JAVA_HOME on macOS - . - - Ensure that you have "write" permissions for the data directory - (located by default in webapp/WEB-INF/). @@ -177,23 +138,19 @@ service occupies these ports, you cannot start up eXist-db unless you shut down the service in question or make eXist-db use another port. To see whether this is the case, enter http://localhost:8080/ in your browser. To - make eXist-db use another port, open /tools/jetty/etc/jetty-http.xml - and change the value 8080 to a port number that is not used (for instance + xlink:href="http://localhost:8080/">http://localhost:8080/ in your browser. + To make eXist-db use another port, open + $EXIST_HOME/etc/jetty/jetty-http.xml and change the value + 8080 to a port number that is not used (for instance 8899): eXist-db uses port 8443 for confidential communication. Another service may be using this port. To make eXist-db use another port, open the file - /tools/jetty/etc/jetty-ssl.xml and change the value 8443 - in to a port number that is not used (for instance 8444): + $EXIST_HOME/etc/jetty/jetty-ssl.xml and change the value + 8443 in to a port number that is not used (for instance + 8444): - If these changes do not launch eXist-db try the following: Change to the directory - where you installed eXist-db and enter the following command: - java -Xmx1024M -Djava.endorsed.dirs=lib/endorsed -jar start.jar jetty - If you have problems running the shell/batch scripts, read the section about alternative - scripts. @@ -207,11 +164,7 @@ By default, this output is written to the directory - webapp/WEB-INF/logs - - - If you are running eXist as a service, check the directory - tools/yajsw/logs + $EXIST_HOME/logs The main log files for eXist are exist.log and diff --git a/src/main/xar-resources/data/tuning/listings/listing-1.txt b/src/main/xar-resources/data/tuning/listings/listing-1.txt index 20410278..88028f07 100644 --- a/src/main/xar-resources/data/tuning/listings/listing-1.txt +++ b/src/main/xar-resources/data/tuning/listings/listing-1.txt @@ -1,6 +1,5 @@ # This file contains a list of VM parameters to be passed to Java -# when eXist is started by double clicking on start.jar (or calling -# "java -jar start.jar" without parameters on the shell). +# when eXist is started # Minimum and maximum memory memory.max=2048 diff --git a/src/main/xar-resources/data/tuning/listings/listing-2.txt b/src/main/xar-resources/data/tuning/listings/listing-2.txt deleted file mode 100644 index 40c96c51..00000000 --- a/src/main/xar-resources/data/tuning/listings/listing-2.txt +++ /dev/null @@ -1,3 +0,0 @@ -# Maximum Java Heap Size (in MB) -# alternative for wrapper.java.additional.=-Xmx -wrapper.java.maxmemory=NNNN \ No newline at end of file diff --git a/src/main/xar-resources/data/tuning/listings/listing-3.txt b/src/main/xar-resources/data/tuning/listings/listing-3.txt index dad1fbd2..640d6200 100644 --- a/src/main/xar-resources/data/tuning/listings/listing-3.txt +++ b/src/main/xar-resources/data/tuning/listings/listing-3.txt @@ -1,2 +1,2 @@ \ No newline at end of file + files="../data" pageSize="4096" nodesBuffer="-1"> \ No newline at end of file diff --git a/src/main/xar-resources/data/tuning/tuning.xml b/src/main/xar-resources/data/tuning/tuning.xml index 3d0a764f..b386a3a0 100644 --- a/src/main/xar-resources/data/tuning/tuning.xml +++ b/src/main/xar-resources/data/tuning/tuning.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Tuning the Database - 1Q18 + 2Q19 operations application-development @@ -22,30 +22,23 @@ Memory settings - Java always limits the maximum amount of memory available to a process. So eXist-db will not automatically use all of the available memory on your machine. The maximum amount of memory Java will allocate is determined by the - -Xmx parameter passed to Java on the command line. + -Xmx parameter passed to Java on the command line. When eXist-db is started via the graphical launcher or via one of the shell or batch - scripts, memory settings are read from the file vm.properties: + scripts, memory settings are read from the file + $EXIST_HOME/etc/launcher.properties: - - - For Unix systems, this is done in - $EXIST_HOME/bin/functions.d/eXist-settings.sh, with the - JAVA_OPTIONS variable. The CLIENT_JAVA_OPTIONS - variable does the same for the Java admin client. You can override those variables + For Unix/Linux systems, this is done in the .sh + files, for instance $EXIST_HOME/bin/startup.sh, from the + JAVA_OPTS evironment variable. You can override those variables globally in your own shell. On Windows,this is done in the main .bat files, for instance $EXIST_HOME\bin\startup.bat. - If you launch eXist-db as a service, all Java settings will be - controlled by the service wrapper. In this case, the file to edit - is EXIST_HOME/tools/yajsw/conf/wrapper.conf: - - + Cache settings @@ -56,8 +49,8 @@ them a few moment later. This "trashing effect" results in an immediate performance drop, in particular while indexing documents. All caches share a single memory pool, whose size is determined by the attribute - cacheSize in the db-connection section of - conf.xml: + cacheSize in the db-connection section of + $EXIST_HOME/etc/conf.xml: The global cache manager will dynamically grant more memory to caches while they are under load and free memory used by idle caches. @@ -141,7 +134,7 @@ "^Joe.*")) You can also use a full text index for the latter. Range indexes on strings are by default case-sensitive. To be more precise: they are sensitive to the default collation. If you need + xlink:href="https://en.wikipedia.org/wiki/Collation">collation. If you need case-insensitive queries, consider using an ngram index. @@ -183,7 +176,7 @@ eXist-db uses internal indexes to directly locate an element or attribute by name. It doesn't need to traverse the + xlink:href="https://en.wikipedia.org/wiki/Tree_traversal">traverse the document tree. This means that direct selection of a node through a single descendant step is faster than walking the child axis. For example: diff --git a/src/main/xar-resources/data/update_ext/update_ext.xml b/src/main/xar-resources/data/update_ext/update_ext.xml index 0f5a963d..0386d94e 100644 --- a/src/main/xar-resources/data/update_ext/update_ext.xml +++ b/src/main/xar-resources/data/update_ext/update_ext.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
XQuery Update Extension - 1Q18 + 2Q19 xquery @@ -25,7 +25,7 @@ Relationship to W3C Recommendation - This extension was created well before the W3C working group created the XQuery Update + This extension was created well before the W3C working group created the XQuery Update Facility 1.0 recommendation and therefore differs substantially from it. diff --git a/src/main/xar-resources/data/upgrading/listings/sign.txt b/src/main/xar-resources/data/upgrading/listings/sign.txt deleted file mode 100644 index adbbb375..00000000 --- a/src/main/xar-resources/data/upgrading/listings/sign.txt +++ /dev/null @@ -1 +0,0 @@ -./build.sh jnlp-unsign-all all jnlp-sign-exist jnlp-sign-core jnlp-sign-exist-extensions diff --git a/src/main/xar-resources/data/upgrading/upgrading.xml b/src/main/xar-resources/data/upgrading/upgrading.xml index 544791e9..85236de7 100644 --- a/src/main/xar-resources/data/upgrading/upgrading.xml +++ b/src/main/xar-resources/data/upgrading/upgrading.xml @@ -3,7 +3,7 @@
Upgrade Guide - 4Q18 + 2Q19 operations @@ -20,7 +20,7 @@ The primary goal of an upgrade is to migrate your eXist application to a new version, while preserving the contents of your database. Before embarking on an upgrade, you should first review the new version's release notes - (see the eXist Developer's Blog for an archive of all past release notes). The release notes introduce the new version's features, improvements and bug fixes. They can also outline any new requirements (for instance the required version of Java). @@ -49,7 +49,7 @@ Create a - backup + backup of the data from your existing installation. @@ -60,12 +60,10 @@ Remove the still empty data directory from the new installation. By default the data directory is - located in webapp/WEB-INF/data. If you are not sure where the data directory - is, check the main logfile + located at $EXIST_HOME/data. If you are not sure where the data directory is, + check the main logfile exist.log - , searching for entries after start-up pertaining to - DATA_DIR. - + , searching for entries after start-up pertaining to DATA_DIR. Copy the entire existing data directory, and paste it to the location of the new data directory (the directory you deleted in the previous step). @@ -74,7 +72,7 @@ Start the new eXist instance. - Check the + Check the exist.log for any errors during startup. @@ -96,15 +94,33 @@ of ways: - Use Backup Central from the Dashboard (with "Zip" option for databases with less then 4GB) + Use Backup Central from the Dashboard - The Emergency Backup Tool (GUI) for installer based systems: - java -jar start.jar -Xmx2048m org.exist.backup.ExportGUI + The Emergency Export Tool (GUI): + + + Unix/Linux: + bin/export-gui.sh + + + Windows: + bin\export-gui.bat + + The Emergency Backup Tool (CLI) for headless sytems: - java -jar start.jar org.exist.backup.ExportMain -x -z + + + Unix/Linux: + bin/export.sh + + + Windows: + bin\export.bat + + Via XQuery: @@ -112,22 +128,20 @@ Once the backup is complete, you should check the backup report in the - export - directory within either the - data - directory (for backups created via the Dashboard or Xquery) or - $EXIST-HOME - (for backups created by the Emergency Backup Tool). + export directory within either the data directory (for backups + created via the Dashboard or Xquery) or $EXIST_HOME (for backups created by + the Emergency Backup Tool). Normally this report just contains the list of collections which were backed up. If you see any warnings or errors, it is even more important to perform a “full restore” of your backed-up data. Stop the existing installation of eXist. - Install the new version of eXist. DO not install one eXist version over another one. Always install the new version into a fresh new directory. + Install the new version of eXist. DO NOT install one eXist version over another one. + Always install the new version into a fresh new directory. - Perform a full restore of the backup onto the new version of + Perform a full restore of the backup onto the new version of eXist. @@ -137,33 +151,32 @@ Upgrading from Source - The following steps only apply to users who wish to upgrade eXist instances that were build from (modified) source code, instead of from the provided installers. - Before attempting to upgrade always perform a - full backup - and make a copy of local.build.properties - if it exists. Stop eXist after the backup has been generated. - Determine which files contain local modification and would be in conflic with updated files from the new version of exist-db, by running - git status inside the local folder where you cloned exist. You should pay special attention to Configuration files, such as: + The following steps only apply to users who wish to upgrade eXist instances that were + built from (modified) source code, instead of from the provided installers. + Before attempting to upgrade always perform a full + backup. Stop eXist after the backup has been generated. + Determine which files contain local modification and would be in conflict with updated files + from the new version of exist-db, by running git status inside the local + folder where you cloned exist. You should pay special attention to Configuration files, + such as: - conf.xml + etc/conf.xml - webapp/WEB-INF/controller-config.xml + etc/webapp/WEB-INF/controller-config.xml - tools/jetty/webapps/exist-webapp-context.xml + etc/jetty/webapps/exist-webapp-context.xml - - If you previously signed your jar files, run - git checkout -- lib/ to unsign them. You should no longer see any files if you run - git status again now: A typical sequence to replay the local modifications on top of the upstream changes to the master branch would look like this: - Finally follow the build instructions for exist-db, and copy back the local.build.properties file if you had one. You can sign the jar files by running: + Finally follow the build + instructions for eXist-db. @@ -185,11 +198,11 @@ - latest + Latest - release notes + Release notes @@ -199,7 +212,7 @@ - special notes + Special notes @@ -209,7 +222,7 @@ - special notes + Special notes @@ -219,7 +232,7 @@ - special notes + Special notes @@ -229,7 +242,7 @@ - special notes + Special notes @@ -239,7 +252,7 @@ - special notes + Special notes diff --git a/src/main/xar-resources/data/uploading-files/uploading-files.xml b/src/main/xar-resources/data/uploading-files/uploading-files.xml index 7251d990..76a09c0c 100644 --- a/src/main/xar-resources/data/uploading-files/uploading-files.xml +++ b/src/main/xar-resources/data/uploading-files/uploading-files.xml @@ -3,7 +3,7 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
Getting Data into eXist-db - 1Q18 + 2Q19 getting-started @@ -78,7 +78,7 @@ Uploading files with a WebDAV client A WebDAV client lets you manage eXist-db database collections and documents almost like directories and files in a filesystem. WebDAV - clients, or applications with built-in WebDAV support, include Windows Explorer, macOS Finder, cadaver, KDE Konqueror, oXygen XML Editor, XML Spy, LibreOffice, Transmit (MacOS only), + clients, or applications with built-in WebDAV support, include Windows Explorer, macOS Finder, cadaver, KDE Konqueror, oXygen XML Editor, XML Spy, LibreOffice, Transmit (MacOS only), and many others. To connect a WebDAV client to eXist-db, you need the URL for eXist's WebDAV interface and an eXist-db username and password. eXist-db's diff --git a/src/main/xar-resources/data/urlrewrite/listings/listing-4.xml b/src/main/xar-resources/data/urlrewrite/listings/listing-4.xml index 5c507e70..5242f6b7 100644 --- a/src/main/xar-resources/data/urlrewrite/listings/listing-4.xml +++ b/src/main/xar-resources/data/urlrewrite/listings/listing-4.xml @@ -1,3 +1,3 @@ - - \ No newline at end of file + + diff --git a/src/main/xar-resources/data/urlrewrite/listings/listing-5.xml b/src/main/xar-resources/data/urlrewrite/listings/listing-5.xml index 23eb47f7..820cd373 100644 --- a/src/main/xar-resources/data/urlrewrite/listings/listing-5.xml +++ b/src/main/xar-resources/data/urlrewrite/listings/listing-5.xml @@ -1,3 +1,3 @@ - - \ No newline at end of file + + diff --git a/src/main/xar-resources/data/urlrewrite/listings/listing-9.xml b/src/main/xar-resources/data/urlrewrite/listings/listing-9.xml index e8df9bac..56a4feab 100644 --- a/src/main/xar-resources/data/urlrewrite/listings/listing-9.xml +++ b/src/main/xar-resources/data/urlrewrite/listings/listing-9.xml @@ -1,8 +1,8 @@ - - - - - - - \ No newline at end of file + + + + + + + diff --git a/src/main/xar-resources/data/urlrewrite/urlrewrite.xml b/src/main/xar-resources/data/urlrewrite/urlrewrite.xml index b50aab03..0b3c345f 100644 --- a/src/main/xar-resources/data/urlrewrite/urlrewrite.xml +++ b/src/main/xar-resources/data/urlrewrite/urlrewrite.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> URL Rewriting - 1Q18 + 2Q19 application-development @@ -29,7 +29,7 @@ forward them to the appropriate handlers, which are again standard servlets. In fact, there's nothing eXist-specific to the servlet filter, except that it uses XQuery scripts to configure the forwarding and URL rewriting. Like any other servlet filter, it is - configured in webapp/WEB-INF/web.xml. + configured in etc/webapp/WEB-INF/web.xml. A controller XQuery is executed once for every requests. It must return an XML fragment, which tells the servlet filter how to proceed with the request. The returned XML fragment can range from simply define forwarding up to describing complex pipelines @@ -215,7 +215,7 @@ you may want to keep the main webapp within the file system, while some tools and scripts should be served from a database collection. This can be done by configuring two roots within the controller-config.xml file in - webapp/WEB-INF. controller-config.xml defines the + etc/webapp/WEB-INF. controller-config.xml defines the base mappings used by XQueryURLRewrite. It basically has two components: @@ -243,7 +243,7 @@ This means that paths starting with /tools will be mapped to the collection hierarchy below /db/www. Everything else is handled by the catch all pattern pointing to the root directory of the webapp (by default corresponding - to EXIST_HOME/webapp). For example, the URI + to $EXIST_HOME/etc/webapp). For example, the URI http://localhost:8080/exist/tools/admin/admin.xql will be handled by the controller stored in database collection /db/www/admin/ (if there is one) or will directly resolve to diff --git a/src/main/xar-resources/data/validation/listings/listing-1.xml b/src/main/xar-resources/data/validation/listings/listing-1.xml index 8c8d0e9b..f28361f3 100644 --- a/src/main/xar-resources/data/validation/listings/listing-1.xml +++ b/src/main/xar-resources/data/validation/listings/listing-1.xml @@ -1,5 +1,5 @@ - - - - \ No newline at end of file + + + + diff --git a/src/main/xar-resources/data/validation/listings/listing-2.xml b/src/main/xar-resources/data/validation/listings/listing-2.xml index f5b89ef8..14685c29 100644 --- a/src/main/xar-resources/data/validation/listings/listing-2.xml +++ b/src/main/xar-resources/data/validation/listings/listing-2.xml @@ -1,6 +1,6 @@ - - - - - \ No newline at end of file + + + + + diff --git a/src/main/xar-resources/data/validation/listings/listing-3.xml b/src/main/xar-resources/data/validation/listings/listing-3.xml index 3e7b52da..f7da8fef 100644 --- a/src/main/xar-resources/data/validation/listings/listing-3.xml +++ b/src/main/xar-resources/data/validation/listings/listing-3.xml @@ -1,12 +1,12 @@ - - - - - - - - - - - \ No newline at end of file + + + + + + + + + + + diff --git a/src/main/xar-resources/data/validation/listings/listing-4.xml b/src/main/xar-resources/data/validation/listings/listing-4.xml index 10bade06..2481c487 100644 --- a/src/main/xar-resources/data/validation/listings/listing-4.xml +++ b/src/main/xar-resources/data/validation/listings/listing-4.xml @@ -1,3 +1,3 @@ - - \ No newline at end of file + + diff --git a/src/main/xar-resources/data/validation/listings/listing-5.xml b/src/main/xar-resources/data/validation/listings/listing-5.xml index 9f47c674..0c916eb4 100644 --- a/src/main/xar-resources/data/validation/listings/listing-5.xml +++ b/src/main/xar-resources/data/validation/listings/listing-5.xml @@ -1,5 +1,5 @@ - valid - MyNameSpace - 106 - \ No newline at end of file + valid + MyNameSpace + 106 + diff --git a/src/main/xar-resources/data/validation/listings/listing-6.xml b/src/main/xar-resources/data/validation/listings/listing-6.xml index 4429f9a3..1b15b14e 100644 --- a/src/main/xar-resources/data/validation/listings/listing-6.xml +++ b/src/main/xar-resources/data/validation/listings/listing-6.xml @@ -1,7 +1,7 @@ - invalid - MyNameSpace - 39 - cvc-datatype-valid.1.2.1: 'aaaaaaaa' is not a valid value for 'decimal'. - cvc-type.3.1.3: The value 'aaaaaaaa' of element 'c' is not valid. - \ No newline at end of file + invalid + MyNameSpace + 39 + cvc-datatype-valid.1.2.1: 'aaaaaaaa' is not a valid value for 'decimal'. + cvc-type.3.1.3: The value 'aaaaaaaa' of element 'c' is not valid. + diff --git a/src/main/xar-resources/data/validation/listings/listing-7.txt b/src/main/xar-resources/data/validation/listings/listing-7.txt index 5658dc5b..61108865 100644 --- a/src/main/xar-resources/data/validation/listings/listing-7.txt +++ b/src/main/xar-resources/data/validation/listings/listing-7.txt @@ -1,19 +1,13 @@ - - invalid - 2 - - java.net.MalformedURLException - unknown protocol: foo - java.net.MalformedURLException: unknown protocol: foo - at java.net.URL.(URL.java:574) - at java.net.URL.(URL.java:464) - at java.net.URL.(URL.java:413) - at org.exist.xquery.functions.validation.Shared.getStreamSource(Shared.java:140) - at org.exist.xquery.functions.validation.Shared.getInputSource(Shared.java:190) - at org.exist.xquery.functions.validation.Parse.eval(Parse.java:179) - at org.exist.xquery.BasicFunction.eval(BasicFunction.java:68) - at ...... - - - \ No newline at end of file + + invalid + 2 + + java.net.MalformedURLException + unknown protocol: foo + java.net.MalformedURLException: unknown protocol: foo at java.net.URL.(URL.java:574) at java.net.URL.(URL.java:464) at java.net.URL.(URL.java:413) at + org.exist.xquery.functions.validation.Shared.getStreamSource(Shared.java:140) at org.exist.xquery.functions.validation.Shared.getInputSource(Shared.java:190) at org.exist.xquery.functions.validation.Parse.eval(Parse.java:179) at + org.exist.xquery.BasicFunction.eval(BasicFunction.java:68) at ...... + + + diff --git a/src/main/xar-resources/data/validation/listings/listing-8.xml b/src/main/xar-resources/data/validation/listings/listing-8.xml index be622ebc..40e2fc25 100644 --- a/src/main/xar-resources/data/validation/listings/listing-8.xml +++ b/src/main/xar-resources/data/validation/listings/listing-8.xml @@ -1,12 +1,12 @@ - - http://www.w3.org/XML/1998/namespace - file:/Users/guest/existdb/trunk/webapp//WEB-INF/entities/XMLSchema.xsd - http://www.w3.org/2001/xml.xsd - http://www.w3.org/2001/xml.xsd - - - http://www.w3.org/2001/XMLSchema - file:/Users/guest/existdb/trunk/schema/collection.xconf.xsd - - \ No newline at end of file + + http://www.w3.org/XML/1998/namespace + file:/Users/guest/existdb/trunk/webapp//WEB-INF/entities/XMLSchema.xsd + http://www.w3.org/2001/xml.xsd + http://www.w3.org/2001/xml.xsd + + + http://www.w3.org/2001/XMLSchema + file:/Users/guest/existdb/trunk/schema/collection.xconf.xsd + + diff --git a/src/main/xar-resources/data/validation/validation.xml b/src/main/xar-resources/data/validation/validation.xml index d95f2173..623bdd8b 100644 --- a/src/main/xar-resources/data/validation/validation.xml +++ b/src/main/xar-resources/data/validation/validation.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> XML Validation - 2Q18 + 2Q19 application-development testing @@ -22,7 +22,7 @@ inserting documents into the database. - must use one of the + must use one of the provided XQuery extension functions. @@ -108,9 +108,9 @@ All grammars (XML schema, DTD) used for implicit validation must be registered with eXist using OASIS catalog files. The actual resolving is performed by the Apache xml-commons resolver library. Catalogs can be stored on disk and/or in the database. It is possible to configure multiple catalog entries in entity-resolver @@ -125,9 +125,7 @@ In the preceding example ${WEBAPP_HOME} can be substituted by a file:// URL pointing to the webapp directory of eXist - (for instance $EXIST_HOME/webapp/) or the equivalent directory of a - deployed WAR file when eXist is deployed in a servlet container (for instance - ${CATALINA_HOME}/webapps/exist/) + (for instance $EXIST_HOME/etc/webapp/). Here is an example of a catalog file: @@ -140,7 +138,7 @@ Within the database the validation mode for each individual collection can be configured using collection.xconf documents (in the same way - these are used for configuring indexes). + these are used for configuring indexes). These documents need to be stored in /db/system/config/db/.... The following example collection.xconf file turns implicit validation off: @@ -179,7 +177,7 @@ javax.xml.parsers API. The actual validation is performed by - the Xerces2 library. When parsing an XML document and a reference to a grammar (either DTD or XSD) is found, the parser attempts to resolve the grammar reference by following @@ -304,7 +302,7 @@ The Jing validation functions are based on James Clark's Jing library. eXist uses the maintained version that is available via Google Code. The library + xlink:href="https://code.google.com/p/jing-trang/">Google Code. The library relies on the com.thaiopensource.validate.ValidationDriver which supports a @@ -407,7 +405,7 @@ Interactive Client - The interactive shell mode of the Java Admin + The interactive shell mode of the Java Admin Client provides a simple validate command that accepts the similar explicit validation arguments. @@ -425,9 +423,9 @@ The explicit validation is performed by Xerces (XML schema, DTD) and by oNVDL: oXygen XML NVDL + xlink:href="https://www.oxygenxml.com/onvdl.html">oNVDL: oXygen XML NVDL implementation based on Jing (XSD, RelaxNG, Schematron and Namespace-based Validation Dispatching Language). @@ -442,17 +440,17 @@ Apache xml-commons + xlink:href="https://xml.apache.org/commons/components/resolver/">xml-commons resolver OASIS XML Catalog + xlink:href="https://www.oasis-open.org/committees/entity/">XML Catalog Specification V1.1 Xerces caching + xlink:href="https://xerces.apache.org/xerces2-j/faq-grammars.html">caching grammars. @@ -461,15 +459,15 @@ NVDL (Namespace-based Validation Dispatching Language) - Schematron - Relax NG diff --git a/src/main/xar-resources/data/versioning/versioning.xml b/src/main/xar-resources/data/versioning/versioning.xml index 698329c2..ee9929d2 100644 --- a/src/main/xar-resources/data/versioning/versioning.xml +++ b/src/main/xar-resources/data/versioning/versioning.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> Versioning Extensions - 1Q18 + 2Q19 application-development @@ -83,7 +83,7 @@ To enable versioning for a collection, you have to edit the collection's collection.xconf configuration file. This file must be stored below the /db/system/config collection. As described in the Configuring Indexes document, the + xlink:href="indexing">Configuring Indexes document, the /db/system/config collection mirrors the hierarchical structure of the main collection tree. Within collection.xconf, you must register the trigger class diff --git a/src/main/xar-resources/data/webdav/listings/listing-1.txt b/src/main/xar-resources/data/webdav/listings/listing-1.txt index 97f67f6b..b0025567 100644 --- a/src/main/xar-resources/data/webdav/listings/listing-1.txt +++ b/src/main/xar-resources/data/webdav/listings/listing-1.txt @@ -1,5 +1,5 @@ ## XML Serialization options for the WevDAV -## The file is read from EXIST_HOME +## The file is read from $EXIST_HOME/etc ## Be carefull changing the default values ! indent=no expand-xincludes=no diff --git a/src/main/xar-resources/data/webdav/webdav.xml b/src/main/xar-resources/data/webdav/webdav.xml index ac0e996c..236368d3 100644 --- a/src/main/xar-resources/data/webdav/webdav.xml +++ b/src/main/xar-resources/data/webdav/webdav.xml @@ -3,27 +3,27 @@ schematypens="http://purl.oclc.org/dsdl/schematron"?>
WebDAV - 4Q18 + 2Q19 getting-started interfaces - + - - eXist-db ships with a WebDAV interface. + + eXist-db ships with a WebDAV interface. WebDAV makes it possible to manage database collections and documents just like directories and files in a file system. You can copy, move, delete, view or edit files with any application - supporting the WebDAV protocol, including Windows Explorer, macOS Finder, cadaver, KDE Konqueror, oXygen XML Editor, XML Spy, LibreOffice and many others (see + supporting the WebDAV protocol, including Windows Explorer, macOS Finder, cadaver, KDE Konqueror, oXygen XML Editor, XML Spy, LibreOffice and many others (see below). - In the default configuration the WebDAV server can be accessed via the URLs http://localhost:8080/exist/webdav/db/ and https://localhost:8443/exist/webdav/db/ (since eXist-db 2.0). - + In the default configuration the WebDAV server can be accessed via the URLs http://localhost:8080/exist/webdav/db/ and http://localhost:8443/exist/webdav/db/ (since eXist-db 2.0). + - + Compatibility - + The Milton project, on which eXist-db's WebDAV implementation is build, maintains a detailed WebDAV client compatibility list that describes a "Recipe for broad client compatibility." In case of any problems please read this document. Some @@ -38,47 +38,47 @@ The size of an XML document is presented as a multiple of 4096 bytes, which is eXist's - internal pagesize (see conf.xml). The actual size of an XML + internal pagesize (see conf.xml). The actual size of an XML document stored in the database can not be determined because the size depends on many factors, among which the serialization parameters applied. The Milton-based WebDAV interface has been successfully tested with: Windows Web Folders - (Windows XP/7), AnyClient (cross-platform), macOS Finder, Transmit (macOS), Cyberduck, davfs2 version 1.4.5 + (Windows XP/7), AnyClient (cross-platform), macOS Finder, Transmit (macOS), Cyberduck, davfs2 version 1.4.5 (Linux), OxygenXML and LibreOffice. - The following clients are reported to have issues: GVFS (Nautilus) and NetDrive. However, this can change over time! + The following clients are reported to have issues: GVFS (Nautilus) and NetDrive. However, this can change over time! - + - + Clients - - - + + + - + Windows Web Folders - + Out of the box, Windows has some native support for the WebDAV protocol, but there are some well-known issues. Please consult the following: Be aware that there are multiple versions of WebDAV Microsoft libraries (and - different flavors of bugs). See Web Folder Client (MSDAIPP.DLL) Versions and Issues. + different flavors of bugs). See Web Folder Client (MSDAIPP.DLL) Versions and Issues. Windows Vista and Windows 7 both restrict access to WebDAV servers that use Basic HTTP authentication on non-SSL connections. This restriction can be solved by changing a - registry key. Read more on MSDN and - greenbytes.de. However, SSL connections do bring improved + registry key. Read more on MSDN and + greenbytes.de. However, SSL connections do bring improved security. - - - + + + To use WebDAV in Internet explorer: @@ -96,16 +96,16 @@ - + - + macOS Finder - + The eXist-db database can be accessed easily with the macOS Finder using the Go, Connect to Server... menu. Use the eXist-db WebDAV URL http://localhost:8080/exist/webdav/db/. - + In some previous MacOS releases, Apple repetitively changed their WebDAV implementation significantly, introducing new bugs and problems. The main issue is that @@ -116,17 +116,17 @@ in a collection are serialized to determine the exact sizes of these documents. This is a rather expensive and time consuming operation for large documents and for collections with many documents. - As an alternative it is recommended to use Transmit or Cyberduck instead. + As an alternative it is recommended to use Transmit or Cyberduck instead. For macOS 10.8 the WebDAV client has become functional (again) in 10.8.2, but still the client does not work perfectly, for instance at bulk operations. - + - + oXygen XML Editor - + Select File -> Open URL. @@ -148,7 +148,7 @@ - More info on the oXygen product pages. + More info on the oXygen product pages. Note on SSL connections in oXygen: You may encounter an error: "Error: sun.security.validator.ValidatorException: PKIX path building failed: @@ -156,7 +156,7 @@ certification path to requested target." In order to avoid this error, you'll need to add the Server certificate to your - trusted certificates keystore (more info). + trusted certificates keystore (more info). When saving a document to the WebDAV server via oXygen, remember to double check that @@ -165,59 +165,58 @@ on another folder or resource by mistake, you overwrite the wrong resource. - + - + davfs2 By default, non-XML files (plain text files, images, etc) are working as expected with davfs2. - Because eXist-db reports the size of XML documents as a multiple of the internal pagesize, you can list XML files - (ls -l) but you cannot view or edit them. The davfs2 logs (syslog/journalctl) contain: + Because eXist-db reports the size of XML documents as a multiple of the internal pagesize, you can list XML files + (ls -l) but you cannot view or edit them. The davfs2 logs (syslog/journalctl) contain: Could not read response body: connection was closed by server - In order to access XML files stored in eXist from a mounted directory in a filesystem via dafvs2, - have to add the following additional Java parameters when starting eXist: + In order to access XML files stored in eXist from a mounted directory in a filesystem via dafvs2, + have to add the following additional Java parameters when starting eXist: org.exist.webdav.PROPFIND_METHOD_XML_SIZE=EXACT org.exist.webdav.GET_METHOD_XML_SIZE=EXACT - - If eXist is installed as a service (systemd) the configuration has to be done in /tools/yajsw/conf/wrapper.conf - + + - - NULL and APPROXIMATE values work for Oxygen and Cadaver but only EXACT can be used with davfs2. - - You must first uninstall the service before - modifying wrapper.conf, for changes to be applied when reinstalling: + + NULL and APPROXIMATE values work for Oxygen and Cadaver but only EXACT can be used with davfs2. + + You must first uninstall the service before + modifying wrapper.conf, for changes to be applied when reinstalling: - + - + Uninstall (with service name eXist-db) - + - + - + Reinstall and enable - + - + - + LinuxTested on davfs2 1.4.7 on RHEL7.5 and 1.5.4 on Arch Linux. - + - + - + KDE Konqueror - + Enter an URL like webdav://localhost:8080/exist/webdav/db. Use webdavs:// for WebDAV over SSL. @@ -228,14 +227,14 @@ - + - + LibreOffice - + For LibreOffice and OpenOffice.org the recommended way for opening documents stored in - eXist-db is using the 'native' WebDAV client, as documented in the LibreOffice Help documentation. + eXist-db is using the 'native' WebDAV client, as documented in the LibreOffice Help documentation. When using LibreOffice on MacOS, do not write documents to a network share that is mounted via Finder as documented earlier, since this could corrupt your database. The @@ -263,29 +262,29 @@ - + - + Serialization - + When retrieving an XML document via the WebDAV interface, the default serialization - settings as defined in conf.xml are used. It is however possible to + settings as defined in conf.xml are used. It is however possible to define custom serialization settings specific for the WebDAV interface. - Copy the file extensions/webdav/webdav.properties into - $EXIST_HOME directory and uncomment/modify the parameters. Changes in - this file requires a restart of eXist-db. - + Copy the file extensions/webdav/src/main/resources/webdav.properties + into $EXIST_HOME/etc directory and uncomment/modify the parameters. Changes + in this file requires a restart of eXist-db. + - + - + Notes - + From the community we have received feedback that the WebDAV interface is not fully functional when it is accessed via a reverse proxy and a resource's path is altered (aliased) with it. -
\ No newline at end of file +
diff --git a/src/main/xar-resources/data/xforms/listings/listing-3.xml b/src/main/xar-resources/data/xforms/listings/listing-3.xml index 53e4a96d..96419feb 100644 --- a/src/main/xar-resources/data/xforms/listings/listing-3.xml +++ b/src/main/xar-resources/data/xforms/listings/listing-3.xml @@ -1,15 +1,15 @@ - - - (: Apply xsltforms.xsl stylesheet :) - - - - - - - - - - - \ No newline at end of file + + + (: Apply xsltforms.xsl stylesheet :) + + + + + + + + + + + diff --git a/src/main/xar-resources/data/xforms/xforms.xml b/src/main/xar-resources/data/xforms/xforms.xml index 84f35bd8..575cb1b2 100644 --- a/src/main/xar-resources/data/xforms/xforms.xml +++ b/src/main/xar-resources/data/xforms/xforms.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> XForms Introduction - 1Q18 + 2Q19 application-development @@ -63,7 +63,7 @@ betterFORM can also be configured to listen for a certain collection in the database only or to fetch documents from the filesystem (from a directory below the webapp directory). This can be done by changing the filter mapping in - webapp/WEB-INF/web.xml: + etc/webapp/WEB-INF/web.xml: @@ -162,14 +162,14 @@
System global, by editing - $EXIST_HOME/webapp/WEB-INF/betterform-config.xml: + $EXIST_HOME/etc/webapp/WEB-INF/betterform-config.xml: <property name="filter.ignoreResponseBody" value="false"> Change the value of the property filter.ignoreResponseBody to true and restart eXist-db. By removing the configuration for XFormsFilter in - $EXIST_HOME/webapp/WEB-INF/web.xml. By commenting the + $EXIST_HOME/etc/webapp/WEB-INF/web.xml. By commenting the filter-mapping XForms processing will be disabled. However note that betterFORM still get loaded on the classpath. @@ -232,7 +232,7 @@ - XForms + XForms v1.1 (W3C Recommendation) @@ -266,16 +266,16 @@ >betterFORM coverage of W3C XForms 1.1 Test Suite - XForms Wikibook is a useful place to learn XForms - XRX Wikibook about XML application building XSLTForms + xlink:href="https://en.wikibooks.org/wiki/XSLTForms">XSLTForms Wikibook provides specific information on XSLTForms diff --git a/src/main/xar-resources/data/xmldb/xmldb.xml b/src/main/xar-resources/data/xmldb/xmldb.xml index b8309e53..be1df438 100644 --- a/src/main/xar-resources/data/xmldb/xmldb.xml +++ b/src/main/xar-resources/data/xmldb/xmldb.xml @@ -4,7 +4,7 @@
The xmldb module - 1Q18 + 2Q19 application-development @@ -14,7 +14,7 @@ The xmldb module (http://exist-db.org/xquery/xmldb function namespace) contains functions for manipulating database contents. The full list of functions and their - documentation can be found in the Function Documentation Library. This article handles some of the highlights and main + documentation can be found in the Function Documentation Library. This article handles some of the highlights and main uses for this module. diff --git a/src/main/xar-resources/data/xquery/listings/listing-19.txt b/src/main/xar-resources/data/xquery/listings/listing-19.txt index f8818de0..2bbde3bc 100644 --- a/src/main/xar-resources/data/xquery/listings/listing-19.txt +++ b/src/main/xar-resources/data/xquery/listings/listing-19.txt @@ -1,14 +1,14 @@ declare namespace file="java:java.io.File"; - { - for $f in file:list-files( file:new(".") ) - let $n := file:get-name($f) - order by $n - return - if (file:is-directory($f)) then - - else - - } - \ No newline at end of file + { + for $f in file:list-files( file:new(".") ) + let $n := file:get-name($f) + order by $n + return + if (file:is-directory($f)) then + + else + + } + diff --git a/src/main/xar-resources/data/xquery/xquery.xml b/src/main/xar-resources/data/xquery/xquery.xml index b1d13740..0c2c874f 100644 --- a/src/main/xar-resources/data/xquery/xquery.xml +++ b/src/main/xar-resources/data/xquery/xquery.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> XQuery in eXist-db - 1Q18 + 2Q19 xquery @@ -27,15 +27,15 @@ Current Status of XQuery Support - eXist-db implements eXist-db implements XQuery 3.1: An XML Query Language and "XPath and XQuery Functions and + xlink:href="https://www.w3.org/TR/xpath-functions/">"XPath and XQuery Functions and Operators 3.1", with the exception of certain unsupported features and functions. For complete documentation on functions in eXist-db, see XQuery Function Documentation. + xlink:href="{${fundocs.pkg.abbrev}}">XQuery Function Documentation. eXist-db's XQuery implementation has been tested against the official XML Query Test + condition="_blank" xlink:href="https://dev.w3.org/2006/xquery-test-suite/">XML Query Test Suite (XQTS). An updated test suite runner to test conformance against the official XQuery/XPath/XSLT 3.* Test Suite (QT3) is being planned. @@ -67,14 +67,14 @@ schema + xlink:href="https://www.w3.org/TR/xquery/#id-schema-import-feature">schema import and schema validation features (defined as optional in the XQuery specification). Instead, eXist-db provides a validation module containing extension functions to perform XML validation. @@ -121,9 +121,6 @@ fn:collation-key#1, #2 - - fn:contains-token#2, #3 - fn:default-language#0 @@ -142,15 +139,9 @@ fn:nilled#0 - - fn:parse-ietf-date#1 - fn:path#0, #1 - - fn:random-number-generator#0, #1 - fn:round#2 @@ -190,10 +181,10 @@ Full Text Search - eXist-db has an implementation-specific Full Text Search + eXist-db has an implementation-specific Full Text Search facility, built on the Apache Lucene library (see the full - documentation on indexing in eXist-db). eXist-db + documentation on indexing in eXist-db). eXist-db does not currently support the official W3C "XQuery and XPath Full Text 3.0" specification. @@ -205,7 +196,7 @@ XQuery Update - eXist-db has an implementation-specific XQuery + eXist-db has an implementation-specific XQuery Update facility, which predates the development of the official W3C XQuery Update facility. eXist-db does currently not support the official "XQuery Update Facility 3.0" @@ -222,13 +213,13 @@ Function Library A complete list of XQuery functions supported by eXist-db can be found in the XQuery Function + condition="_blank" xlink:href="{${fundocs.pkg.abbrev}}">XQuery Function Documentation. Each module's documentation is generated from a different sources, depending on whether the module is implemented in Java or XQuery. For modules implemented in Java, the documentation is taken directly from the signature provided by the class implementing the Function interface. For modules implemented in - XQuery, the function descriptions are taken from XQDoc-formatted comments and annotations. @@ -237,7 +228,7 @@ The Module System - eXist-db supports the creation of web + eXist-db supports the creation of web applications in XQuery. This can result in complex XQuery scripts, consisting of several thousand lines of code. Packaging related functions in modules is therefore an important feature. eXist-db allows modules to be imported from a variety of @@ -325,7 +316,7 @@ The eXist-db package repository makes it easy to manage and deploy external packages (.xar archives) containing Java or XQuery libraries and even - full eXist-db applications. See the Package + full eXist-db applications. See the Package Repository documentation. @@ -356,7 +347,7 @@ eXist-db supports calls to arbitrary Java methods from within XQuery. The binding mechanism follows the short-cut technique introduced by Saxon. + xlink:href="http://saxon.sourceforge.net/">Saxon. The class of the external function is identified by the namespace URI of the function call. This namespace URI must start with the prefix java:, followed by the fully qualified class name of the class. For example, the following code snippet @@ -430,9 +421,9 @@ Besides the basic methods for creating a Java-based XQuery module described here, eXist-db provides a pluggable module interface that allows extension - modules to be easily developed in Java. See XQuery Extension Modules for the full documentation on this eXist-db - development best practice. Also, see the Package + development best practice. Also, see the Package Repository documentation for information on distributing and deploying XQuery and Java libraries for eXist-db. @@ -588,7 +579,8 @@ java.text.RuleBasedCollator. For example: The .jar with the .class file(s) of the collator needs to be - in ${EXIST_HOME}/lib/user + placed in ${EXIST_HOME}/lib and added to the appropriate classpath + config file in ${EXIST_HOME}/etc, for standard server deployments this is ${EXIST_HOME}/etc/startup.xml. @@ -598,7 +590,7 @@ Serialization Serialization is the transformation of query results into a binary stream. eXist-db - implements the "XSLT + implements the "XSLT and XQuery Serialization 3.1" specification. For example, the following serialization declaration instructs eXist-db to serialize query results as JSON and to supply a JSON media-type: @@ -803,7 +795,7 @@ declare option exist:implicit-timezone "duration"; Specifies the implicit + xlink:href="https://www.w3.org/TR/xquery/#dt-timezone">implicit timezone for the XQuery context. @@ -811,7 +803,7 @@ declare option exist:current-dateTime "dateTime"; Specifies the current + xlink:href="https://www.w3.org/TR/xquery/#GLdt-date-time">current dateTime for the XQuery context. @@ -919,7 +911,7 @@ Packaging System eXist-db implements the Packaging System, an EXPath community specification for library and application - packages. See the Package Repository + packages. See the Package Repository documentation. @@ -930,9 +922,9 @@ >RESTXQ, an EXQuery community effort to develop a clean approach for the deployment of RESTful services based on XQuery code annotations. This is in addition to eXist-db's native function libraries for performing HTTP requests and responses. @@ -942,7 +934,7 @@ Module, an EXPath community specification and module for performing compression. This is in addition to eXist-db's native function libraries for performing compression. diff --git a/src/main/xar-resources/data/xsl-transform/xsl-transform.xml b/src/main/xar-resources/data/xsl-transform/xsl-transform.xml index 28475efe..7be943d9 100644 --- a/src/main/xar-resources/data/xsl-transform/xsl-transform.xml +++ b/src/main/xar-resources/data/xsl-transform/xsl-transform.xml @@ -5,7 +5,7 @@ xmlns:xlink="http://www.w3.org/1999/xlink"> XSL transformations - 1Q18 + 2Q19 application-development @@ -91,9 +91,9 @@ $attributes Pass attributes to the transformation factory. Verify the Java or Saxon documentation for more details. Its contents must be an XML fragment, like this: diff --git a/src/main/xar-resources/modules/docbook.xql b/src/main/xar-resources/modules/docbook.xql index 23c96673..ec6688f1 100644 --- a/src/main/xar-resources/modules/docbook.xql +++ b/src/main/xar-resources/modules/docbook.xql @@ -32,7 +32,7 @@ function docbook:load($node as node(), $model as map(*), $q as xs:string?, $doc else $context return - map { "doc" := util:expand($data/*, "add-exist-id=all") } + map { "doc": util:expand($data/*, "add-exist-id=all") } else

Document not found: {$path}!

}; diff --git a/src/main/xar-resources/modules/test-suite.xql b/src/main/xar-resources/modules/test-suite.xql index 9c3f0e7d..93390728 100644 --- a/src/main/xar-resources/modules/test-suite.xql +++ b/src/main/xar-resources/modules/test-suite.xql @@ -42,10 +42,12 @@ function tests:orphan-listing() { let $report := diag:diagnose(, map{1: 1}) let $error := $report//ul//span[. eq '*ERROR* '] let $error-msg := count($error) - let $art := $error/ancestor::li/h3/code/string() - let $list := $error/ancestor::tr//code[1]/string() + let $list := $error/ancestor::tr//code[1] return if ($error-msg > 0) - then ( $list || ' is missing in ' || $art ) + then ( + for $l in $list + return + $l || ' is missing in ' || $l/ancestor::li/h3/code) else () }; diff --git a/src/main/xar-resources/modules/view.xql b/src/main/xar-resources/modules/view.xql index 8ce6acd3..9df4223c 100755 --- a/src/main/xar-resources/modules/view.xql +++ b/src/main/xar-resources/modules/view.xql @@ -13,8 +13,8 @@ import module namespace diag="http://exist-db.org/xquery/diagnostics" at "diagno declare option exist:serialize "method=html5 media-type=text/html"; let $config := map { - $templates:CONFIG_APP_ROOT := $config:app-root, - $templates:CONFIG_STOP_ON_ERROR := true() + $templates:CONFIG_APP_ROOT : $config:app-root, + $templates:CONFIG_STOP_ON_ERROR : true() } let $lookup := function($functionName as xs:string, $arity as xs:int) { try { diff --git a/src/main/xar-resources/resources/scripts/jquery.slim.min.js b/src/main/xar-resources/resources/scripts/jquery.slim.min.js index 7377f5f3..af151cfe 100644 --- a/src/main/xar-resources/resources/scripts/jquery.slim.min.js +++ b/src/main/xar-resources/resources/scripts/jquery.slim.min.js @@ -1,2 +1,2 @@ -/*! jQuery v3.4.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],v=g.document,r=Object.getPrototypeOf,s=t.slice,y=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,m=n.hasOwnProperty,a=m.toString,l=a.call(Object),b={},x=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},w=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||v).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)},d=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function p(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!x(e)&&!w(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;nx",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function ke(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n=void 0,r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n}else r&&(G.set(this,i,E.event.trigger(E.extend(r.shift(),E.Event.prototype),r,this)),e.stopImmediatePropagation())}})):E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r
",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+R+"?|("+R+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&((e?e.ownerDocument||e:m)!==T&&C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!S[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=N),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+be(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){S(t,!0)}finally{s===N&&e.removeAttribute("id")}}}return g(t.replace(F,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[N]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),m!==T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=N,!T.getElementsByName||!T.getElementsByName(N).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+N+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+N+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument===m&&y(m,e)?-1:t===T||t.ownerDocument===m&&y(m,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===T?-1:t===T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==T&&C(e),p.matchesSelector&&E&&!S[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){S(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=d[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&d(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function L(e,n,r){return x(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:v,!0)),D.test(r[1])&&E.isPlainObject(t))for(r in t)x(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=v.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):x(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,j=E(v);var O=/^(?:parents|prev(?:Until|All))/,P={children:!0,contents:!0,next:!0,prev:!0};function H(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i,he={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;nx",b.noCloneChecked=!!ye.cloneNode(!0).lastChild.defaultValue;var we=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Te=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function Ne(){return!1}function Ae(e,t){return e===function(){try{return v.activeElement}catch(e){}}()==("focus"===t)}function ke(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)ke(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Ne;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return E().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=E.guid++)),e.each(function(){E.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(G.set(e,i,!1),E.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=G.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(E.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),G.set(this,i,r),t=o(this,i),this[i](),r!==(n=G.get(this,i))||t?G.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(G.set(this,i,{value:E.event.trigger(E.extend(r[0],E.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===G.get(e,i)&&E.event.add(e,i,Ee)}E.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&E.find.matchesSelector(ie,i),n.guid||(n.guid=E.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof E&&E.event.triggered!==e.type?E.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(I)||[""]).length;while(l--)p=g=(s=Te.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),p&&(f=E.event.special[p]||{},p=(i?f.delegateType:f.bindType)||p,f=E.event.special[p]||{},c=E.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&E.expr.match.needsContext.test(i),namespace:h.join(".")},o),(d=u[p])||((d=u[p]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(p,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,c):d.push(c),E.event.global[p]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,v=G.hasData(e)&&G.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(I)||[""]).length;while(l--)if(p=g=(s=Te.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),p){f=E.event.special[p]||{},d=u[p=(r?f.delegateType:f.bindType)||p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=d.length;while(o--)c=d[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,f.remove&&f.remove.call(e,c));a&&!d.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||E.removeEvent(e,p,v.handle),delete u[p])}else for(p in u)E.event.remove(e,p+t[l],n,r,!0);E.isEmptyObject(u)&&G.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=E.event.fix(e),u=new Array(arguments.length),l=(G.get(this,"events")||{})[s.type]||[],c=E.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,Le=/\s*$/g;function Oe(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Ie(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(G.hasData(e)&&(o=G.access(e),a=G.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(b.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||E.isXMLDoc(e)))for(a=ge(c),r=0,i=(o=ge(e)).length;r
",2===pt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(b.createHTMLDocument?((r=(t=v.implementation.createHTMLDocument("")).createElement("base")).href=v.location.href,t.head.appendChild(r)):t=v),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),x(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||ie})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return z(this,function(e,t,n){var r;if(w(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=ze(b.pixelPosition,function(e,t){if(t)return t=Fe(e,n),Me.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return z(this,function(e,t,n){var r;return w(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","attachShadow","getRootNode","isHiddenWithinTree","style","display","css","swap","old","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","opt","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","cssNumber","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","adjustCSS","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","propHooks","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","hidden","visible","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"} \ No newline at end of file +{"version":3,"sources":["jquery.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","css","swap","old","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","opt","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","cssNumber","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","initialInUnit","adjustCSS","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","propHooks","tabindex","parseInt","for","class","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","hidden","visible","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"} \ No newline at end of file diff --git a/src/main/xar-resources/resources/styles/doc.min.css b/src/main/xar-resources/resources/styles/doc.min.css index 6837f083..6030ca3e 100644 --- a/src/main/xar-resources/resources/styles/doc.min.css +++ b/src/main/xar-resources/resources/styles/doc.min.css @@ -1,3 +1,3 @@ -/*! exist-documentation v4.2.0 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ +/*! exist-documentation v5.0.0-RC3 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ .form-group select{width:8em;padding-right:4px}.form-group input{width:20em}.form-group select{width:10em}table a{padding-left:3px;padding-right:3px}span.score{color:#b2b2b2}div.headings,td.headings{background:#ebebeb;font-size:110%}td.previous{text-align:right}.kwic .hi{margin:0 .5em;text-align:center}table[class=kwic]{border-collapse:separate;border-spacing:0 .5em}section dl.dl-horizontal dt{overflow-x:inherit;overflow-y:inherit;clear:inherit;float:inherit}section dl.dl-horizontal dd{margin-left:2em!important} /*# sourceMappingURL=doc.min.css.map */ diff --git a/src/main/xar-resources/resources/styles/exist-2.2.min.css b/src/main/xar-resources/resources/styles/exist-2.2.min.css index a5820792..a8ddbb6d 100644 --- a/src/main/xar-resources/resources/styles/exist-2.2.min.css +++ b/src/main/xar-resources/resources/styles/exist-2.2.min.css @@ -1,3 +1,3 @@ -/*! exist-documentation v4.2.0 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ +/*! exist-documentation v5.0.0-RC3 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ @import url("bootstrap.min.css");@font-face{font-family:QuicksandBook;src:url(../fonts/Quicksand_Book-webfont.eot);src:url(../fonts/Quicksand_Book-webfont.eot?#iefix) format("embedded-opentype"),url(../fonts/Quicksand_Book-webfont.woff) format("woff"),url(../fonts/Quicksand_Book-webfont.ttf) format("truetype"),url(Quicksand_Book-webfont.svg#QuicksandBook) format("svg");font-weight:400;font-style:normal}.content{font:16px/24px Georgia,Times New Roman,Times,serif;color:#555}.content section{clear:both}.content h1{font-size:1.75em;margin:.8em 0 0}.content h1,.content h2{font-family:QuicksandBook,Arial,Helvetica,sans-serif;font-weight:700}.content h2{color:#0083cb;font-size:1.33em;margin:.3em 0 0;padding:10px 0 5px}.content h3{font-size:1em;font-weight:700}.content table{margin:.5em 1em}.content td,.entry th{padding:6px 4px}.content .strong{font-weight:700}.content em{font-style:italic}.content code{font-size:.92em;background-color:inherit;border:0;color:inherit}.content .option{font-weight:700;font-style:italic}.content blockquote{font-style:italic;text-align:justify;padding:10px 15px 0;border:1px solid #abe1ff;background:#fff;margin:5px 0 10px}.content blockquote h3{padding:0;border:0;margin:0;font-size:12px;color:#0083cb}.content blockquote p{padding:0 0 10px}.content ol,.content ul{margin:0 1.5em}.content ul li{list-style:disc;margin-bottom:.4em}.content ol li{list-style:decimal;margin-bottom:.4em}.content dl.wide dt{width:35em;word-wrap:break-word}.content dl.wide dd{margin-left:1.5em}#content .content dt{font-weight:700;word-wrap:break-word}.content img{margin:8px auto;max-width:100%}.content td img{max-width:inherit}.content figure{margin:0 1em 1em}.content figure.float-left{float:left;margin-right:1em;width:50%;display:inline-block}.content figure.float-right{float:right;margin-left:1em;width:50%;display:inline-block}.content .img-float-left{float:left;margin-right:10px}.content .img-float-right{float:right;width:inherit;margin-left:10px}.content pre.prettyprint{padding:10px 16px;margin-bottom:.85em}.content .guimenuitem{background:#fef8c4}.content .example{margin:.25em 0 .25em 1em;padding:10px;border:1px solid #707070}body{color:#222;background:url(../images/body.gif) repeat 50% 100%}.grey-bot{padding-bottom:2em}#container{margin:0 auto 30px}@media (min-width:767px){#grey-top{background:#f3f3f3 url(../images/horizontal.gif) repeat-x 50% 0;height:100%;position:relative}#header{background:#f3f3f3 url(../images/header.gif) 100% 0 no-repeat;width:100%}#header a#logo{background:url(../images/existdb.png) 0 no-repeat;display:block;width:220px;height:100px;text-indent:-999em;outline:0;margin:10px 0}}@media (max-width:767px){#grey-top{background:#f3f3f3;height:100%}#header{display:none}}.navbar .container{padding-left:0;padding-right:0}#content{min-height:600px}#sourceforge{background:url(../images/sourceforge.gif) no-repeat 50%;width:130px;height:30px;display:block;margin:30px auto;text-indent:-999em;overflow:hidden}#footer{clear:both;margin:0 auto;height:50px;color:#222;background:url(../images/body.gif) repeat 50% 100%}#footer .container{padding-left:0;padding-right:0}#footer ul{float:left;margin:0 0 0 -4px;padding:1em 1em 1em 0}#footer ul li{display:inline}#footer ul li a{padding:2px 4px;color:#ffcb05}#footer ul li a:hover{background:#333}#copyright{float:right;width:240px;text-align:right;padding-top:1em}#copyright p{padding:0;color:#f3f3f3}#poweredby{float:right;width:120px;height:56px;margin-bottom:10px;display:inline-block;background:url(../images/powered-by.svg) no-repeat 50%;background-size:100% 100%}h1{font-size:1.75em;margin:.8em 0 0;padding:0 0 5px;margin:0;color:#0083cb}h1,h2{font-weight:700;font-family:QuicksandBook,Arial,Helvetica,sans-serif}h2{padding:10px 0;letter-spacing:1px}h2,h3{font-size:1.2em}h3{padding:10px 0 5px;margin:0 0 5px;font-weight:700}h4{font-style:italic}h4,h5{font-size:1em;padding:10px 0;font-weight:400}a{color:#0083cb;text-decoration:none}a:hover{color:#ffcb05}.clear{clear:both}.imgborder{border:1px solid #ccc;padding:3px;margin:3px}.code{font:14px/20px Ubuntu Mono,Menlo,Consolas,Courier New,Courier,monospace;padding:8.5px;width:100%;margin:18px 0;overflow-x:auto}.code a{padding:4px;border:1px solid #c7c7c7}figure img{display:block}figcaption{font-size:.85em;text-align:center}form{margin:20px 0}fieldset input:focus:invalid,input:required:invalid{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFvy8atzQfvzEWvDEXuzEZujIbuzEdvzAZvTAbvjAcvDAdvTIdrzcnszQisTQltTIitzQgtjUhsTssuDEguTIgujQgvD0nqkAutkM2tko5u0c4ul5Qwi8Zwy8awC8bxS4ZxiwcwTEZwDEawTAbwDAcwDEdwzIexjAaxTIZyDAbyjAcyTMdzzEazjEbzzAe0TIb0zMd0zQb1DIc1TQb1TQc1jYc1jYd1zgc2jQb2DUd2TQe2zYc3DUc3jgbxzYh1j4m4DYZ5jcZ5zYb5jYc5Dga5Dgd6TYf7Dcd7zce6zgZ6Dga7Dse7j0e8jcd8zYe8DYf8Tkb8zgd8joc8Toe8Dwf9jkb9Doc4zki5j4n6T0h7jghxkIsx0MuzUUt00Ep2kIt1kg13VE97EEm6Ugu4E064FQ98UIn8kMo80Mp90Ep9UMq3VpD3F1KxmdZw2haw2hbxGhaxGhbwW1hwHdpxndp2H1u4FlH4mVT63Jb9mZO92ZP9WhN+GVN+2RQ4HVlvIB13odx4oNv5IZy54h29o55+4p6+4t7+Y14/Yl6yI+Ew5aPxpuTxqCXyaWe3baq5JSI65CB7pKC9JKK66WX6rGb57ut6rOo7res5b6767yz+62i+q6j/qug/a2i87Cl9rGh9rOq8b+19L+z+L2x48G48MO68sa/8ci96tDK8sbB/crE/crF/srG+87K/svJ/M3I99bR99fS+9bV+93Z8ebe+OHd+eXd/OTd8ebh9e3m9u3r+ufl/eXj/ubg/ufh/efi/ufj/uXk+ujj++nl+uvl+urm/ejh++7q+u/r+vDu+vLt/PDv/fPv/vTy+/j3/Pj0//j2//n3/vv0/vr1/vv2/fr3+/39+/79/vr4/vv6/v37/f77/v38/v39/f78/f79AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOe7jtQAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuODc7gF0AAAEbSURBVChTARAB7/4A1rmNdG5xb3BwcG5tc4y43QC6isjT0NDR1djY1NLTzIu4AImVvL/Gxsa+vr7BwL29qX8AGp6rqrPDsqyurbu8r6ujFwALg5ybotjLoJqw37GfnZEOAAlsiIaEp9qmk8/FkoWHdw8AIj98eX14tc601ZB7eXpfEQAjNGJoaWd+z9uWY2pmZjYQACEzQlJUVWvK149MVlNKORUAIzFDSFBYodnJx3ZRTkEzAQAkLUBHS4HYmXXVpVhPPS8NAAInNUVkwsRlWZfVgEQ6KA8AFh0uN5TNgk1aYba3YCwHDAByAyArW11XRklGXlw+HwAbAKgSBRwpMDo8OzgyKh4EFaQA3pgZEwYIJCYmJQgKFBiO3JMVcr8Z+l4TAAAAAElFTkSuQmCC")}fieldset input:focus:invalid,input:required:invalid,input:required:valid{background-position:100%;background-repeat:no-repeat;-moz-box-shadow:none}input:required:valid{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFU6E8UqA9U6A+U6A/VaA+VqA/V6I+WKM7WKA/WaI8WqI9WaQ+XaQ6XKQ8Zac9Z6w2Y6k6Z6w6aKo8bK45bq46d7M5fbU6fLY6frY8f7k5U59AU59BVJ9AU6BAUaBBVaBAVKFBVKBCX6JNXqZOYalRZqhSa6pfbapcb6pdbKpfcalbc6pbdKpccqdieKxofK9vf69xgLc5gLY9hrw3gLg4gLg5g7o4g7o5hLs4hLo5hLo6hbs8iL46jb1Ti7d+kMM0k8UwksU0lsQ2nskwnsgynsgzpswvqc8voMc8oMkyocozo8wzpMowpcs7rM8wrtEwrtA1ss8+sNIvtNMtttUuttYtt9Yvu9cuutgrvdkqvdksvNgtvdkvv9svsNM1ttI2utY0vdkxvtowvtsyv9ozvtg1vdwzv9k4vtg6lMRTrs5HtNNMps53rNN+wdhJwtlNw9hWyNxVx9tszd9iyuJPxeBRxuJQyuFTyuJQyuNRyuBW0eNz1OR91eR/1ut31+p41+p62Ot22Op42Op6lb6InsKRnsSUocKVrseir82mr82nrc6kr82oscWltMeusMiisM2msMyoss6r2+mNw+KgyueiyeSy1eq34/Gd4/Ce4/Cf4vKe4+2l5e6j4Oys5u+44/Cg5fCr5vGt6PC16fO26vO87ve/7fi87vi97vi/0uHO2+jW2unX6/TD7vfA7/jH8PbB8vbH8PbK9/rT9vrY9vrc9/vd+/3c+P7c+f7d+P7e6PDk6fTm6/Xo7/fr9ffh+vvl+P3g+f3h+fzi/f7m+/zq/f7s8vrx+f3x+v7w/f7x/v7y/v/z/v/0/v73/v75/v38/f7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnz0KZQAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuODc7gF0AAAEbSURBVChTARAB7/4A0aqNkImJioyMjImLkY6r0QCsj8nLzMzMzMzMzczLyIi7AD6Xwbe5urq6urq4wsHAlocAIpWwp6apqa6urqiyw6+ULgAhbZibmpqZmqCgorakmWwmAARpf4B/f4OBg5O0oYJ+PScACjt2eXR4eHhzsaN6d3UyKgALOF5mYl1jZ5yzb2JkUDUsAAs3RmBxZVx7xnxhWVZMMSsABhdKcsSdcLWyaFpYUkQVKAAgFEJrn8q/zn1aW1RHPxEpAB8MNklRns/FbldVT0U0BykAJQISPEVqraVfU05DMw4AMACFGwUPOkBITUtEQRkQHBqSAL0tHQEMFBg5NxYTDQEeL8cA0LyEIx4DCAoJHxwdJIa+0S+PbKi6PdJ5AAAAAElFTkSuQmCC")}.error{font-family:Ubuntu Mono,Menlo,Consolas,Courier New,Courier,monospace;font-size:112%;white-space:pre-wrap;width:100%;overflow:auto}.warning{border:1px dotted red;padding:0 10px;margin:10px 0}.hi{background:#ffed3d}.hidden{display:none}.row{margin-left:0} /*# sourceMappingURL=exist-2.2.min.css.map */ diff --git a/src/main/xar-resources/resources/styles/style.min.css b/src/main/xar-resources/resources/styles/style.min.css index 6dfd317e..485a0ac5 100644 --- a/src/main/xar-resources/resources/styles/style.min.css +++ b/src/main/xar-resources/resources/styles/style.min.css @@ -1,3 +1,3 @@ -/*! exist-documentation v4.2.0 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ +/*! exist-documentation v5.0.0-RC3 | (c) 2019 | LGPL-2.1-only License | git+https://github.com/eXist-db/documentation.git */ body{font-style:normal;color:#000;background-color:#fff}body,p{text-align:left;alignment:left}p.sectstart{margin-before:20}h1{font-size:large}h1,h2,h3{font-family:Arial,Helvetica,sans-serif;color:#03c}b{font-weight:700}a{text-decoration:none;color:#03c}.sect1{font-size:125%}.sect1,.sect2{font-family:Arial,Helvetica,sans-serif;font-style:bold}.email,.emph{font-style:italic}.email{font-size:smaller}.heading{font-family:Arial,Helvetica,sans-serif;font-size:125%;font-weight:700;color:#03c}.code,.codeblock{font-family:Courier,mono}.navheading{font-weight:700;color:#933}.navbody,.navheading{font-family:Arial,Helvetica,sans-serif;font-size:smaller;text-decoration:none}.navbody{margin-left:.5cm}.navitem{font-family:Arial,Helvetica,sans-serif;text-decoration:none;font-size:smaller;color:#669}.itemdef{font-family:Times New Roman,Times,serif}.fineprint,.itemdef{font-size:smaller;color:#000}.fineprint{font-family:Arial,Helvetica,sans-serif} /*# sourceMappingURL=style.min.css.map */ diff --git a/src/main/xar-resources/templates/page.html b/src/main/xar-resources/templates/page.html index 0acb4b0f..6af4ced7 100755 --- a/src/main/xar-resources/templates/page.html +++ b/src/main/xar-resources/templates/page.html @@ -10,7 +10,7 @@ - +
@@ -29,8 +29,8 @@