#! /bin/sh ## saxon [--b|--sa]? [--catalogs=...]* [--catalog-verbose[=...]]* ## [--add-cp=...]* [--cp=...]* ## ## Order of arguments is not significant, but the arguments to be ## forwarded to Saxon must be at the end. See below for an ## explanation of the arguments. ## ## Depends on the following environment variables: ## ## - APACHE_XML_RESOLVER_JAR (if catalogs are used) ## - SAXON_SCRIPT_DIR (must contain saxon8.jar or saxon8sa.jar, and ## the licence file and saxon8-sql.jar if used) ## - SAXON_SCRIPT_HOME (if different from $HOME, for tilde "~" ## substitution) JAVA=java # Use saxon8.jar if the default has to be the B version. SAXON_JAR="${SAXON_SCRIPT_DIR}/saxon8sa.jar" SAXON_SQL="${SAXON_SCRIPT_DIR}/saxon8-sql.jar" # Use net.sf.saxon.Transform if the default has to be the B version. SAXON_CLASS=com.saxonica.Transform CATALOG_VERB=1 USE_SQL=false if [[ -z "$SAXON_SCRIPT_HOME" ]]; then MY_HOME=$HOME else MY_HOME=$SAXON_SCRIPT_HOME fi CP_DELIM=";" while echo "$1" | grep -- ^-- >/dev/null 2>&1; do case "$1" in # XSLT Basic version. --b) SAXON_CLASS=net.sf.saxon.Transform SAXON_JAR="${SAXON_SCRIPT_DIR}/saxon8.jar";; # XSLT Schema-Aware version. --sa) SAXON_CLASS=com.saxonica.Transform SAXON_JAR="${SAXON_SCRIPT_DIR}/saxon8sa.jar";; # Add XML Catalogs URI resolution, by adding a catalog to the # catalog list. Resolve "~" only on the head of the option. # May be repeated. --catalogs=*) # Add separator. if [[ -n $CATALOGS ]]; then CATALOGS="$CATALOGS$CP_DELIM" fi # Resolve "~". TMP_CAT=`echo $1 | sed s/^--catalogs=//` if echo "$TMP_CAT" | grep -- '^~' >/dev/null 2>&1; then TMP_CAT="$MY_HOME"`echo $TMP_CAT | sed s/^~//`; fi CATALOGS="$CATALOGS$TMP_CAT";; # Set the XML Catalogs resolver verbosity. --catalog-verbose=*) CATALOG_VERB=`echo $1 | sed s/^--catalog-verbose=//`;; # Set the XML Catalogs resolver verbosity to 3. --catalog-verbose) CATALOG_VERB=3;; # Add some path to the class path. Resolve "~" only on the # head of the option. May be repeated. --add-cp=*) # Resolve "~". TMP_CP=`echo $1 | sed s/^--add-cp=//` if echo "$TMP_CP" | grep -- '^~' >/dev/null 2>&1; then TMP_CP="$MY_HOME"`echo $TMP_CP | sed s/^~//`; fi ADD_CP="$ADD_CP$CP_DELIM$TMP_CP";; # Set the class path. Resolve "~" only on the head of the # option. May be repeated. --cp=*) # Resolve "~". TMP_CP=`echo $1 | sed s/^--cp=//` if echo "$TMP_CP" | grep -- '^~' >/dev/null 2>&1; then TMP_CP="$MY_HOME"`echo $TMP_CP | sed s/^~//`; fi CP="$CP$CP_DELIM$TMP_CP";; # Add the Saxon SQL jar to the class path. --sql) USE_SQL=true esac shift; done if [[ -z "$CP" ]]; then CP="$SAXON_JAR" fi if [[ "$SAXON_CLASS" = com.saxonica.Transform ]]; then CP="$CP$CP_DELIM$SAXON_SCRIPT_DIR" fi if [[ "$USE_SQL" ]]; then CP="$CP$CP_DELIM$SAXON_SQL" fi if [[ -z "$CATALOGS" ]]; then "$JAVA" \ -cp "$CP$ADD_CP" \ $SAXON_CLASS \ "$@" else "$JAVA" \ -cp "$CP$CP_DELIM$APACHE_XML_RESOLVER_JAR$ADD_CP" \ -Dxml.catalog.files="$CATALOGS" \ -Dxml.catalog.verbosity=$CATALOG_VERB \ $SAXON_CLASS \ -r org.apache.xml.resolver.tools.CatalogResolver \ -x org.apache.xml.resolver.tools.ResolvingXMLReader \ -y org.apache.xml.resolver.tools.ResolvingXMLReader \ "$@" fi