SAXON10.SAXON(1)
π NAME π
Okay bestie, welcome to the SAXON10.SAXON(1) page β yes, the User Commands one β and it's all about saxon10, aka the Saxon XSLT 3.0 processor. π
β¨
π¦ SYNOPSIS π¦
saxon10 [options] [params]
πΈ DESCRIPTION πΈ
It's an XSLT processor, and you can use it from the command line, or invoke it from an application using a supplied API. Saxon implements the XSLT 3.0 Recommendation. The product can also be used to run XSLT 2.0 stylesheets, or XSLT 1.0 stylesheets in backwards compatibility mode. Periodt. π
π OPTIONS π
Every flag is here, no skipping, no cap. π«Ά
-a[:(on|off)]β Use thexml-stylesheetprocessing instruction in the source document to identify the stylesheet to be used. The stylesheet argument must not be present on the command line. For more details see Using the -a option:https://www.saxonica.com/documentation10/index.html#!using-xsl/commandline/aoption.-catalog:filenamesβfilenamesis either a file name or a list of file names separated by semicolons; the files are OASIS XML catalogs used to define how public identifiers and system identifiers (URIs) used in a source document, stylesheet, or schema are to be redirected, typically to resources available locally. For more details see Using XML Catalogs:https://www.saxonica.com/documentation10/index.html#!sourcedocs/xml-catalogs.-config:filenameβ Indicates that configuration information should be taken from the supplied configuration file:https://www.saxonica.com/documentation10/index.html#!configuration/configuration-file. Any options supplied on the command line override options specified in the configuration file.-dtd:(on|off|recover)β Setting-dtd:onrequests DTD-based validation of the source file and of any files read using thedocument()function. Requires an XML parser that supports validation. The setting-dtd:off(which is the default) suppresses DTD validation. The setting-dtd:recoverperforms DTD validation but treats the error as non-fatal if it fails. Note that any external DTD is likely to be read even if not used for validation, because DTDs can contain definitions of entities.-ea:(on|off)β Setting-ea:onenables assertions both at compile time and at run time. Assertions (defined using the XSLT 3.0xsl:assertinstruction) are disabled by default at compile time, and enabled by default at run-time provided they were enabled at compile time.-expand:(on|off)β Normally, if validation using a DTD or schema is requested, any fixed or default values defined in the DTD or schema will be expanded. Specifying-expand:offsuppresses this. (In the case of DTD-defined defaults, this might not work with all XML parsers. It does work with the Xerces parser (default for Java) and the Microsoft parser (default for .NET).)-explain[:filename]β Display an execution plan and other diagnostic information for the stylesheet. This is a representation of the expression tree after rewriting by the optimizer. It combines the XSLT instructions and the XPath expressions into a single tree. If no file name is specified the output is sent to the standard error stream. The output is in XML format.-export:filenameβ Export the compiled stylesheet, in a form suitable for subsequent execution. For more details, see Compiling a Stylesheet:https://www.saxonica.com/documentation10/index.html#!using-xsl/compiling.-ext:(on|off)β If-ext:offis specified, suppress calls on dynamically-loaded external Java functions. This does not affect calls on integrated extension functions, including Saxon and EXSLT extension functions. This option is useful when loading an untrusted stylesheet, perhaps from a remote site using anhttp://URL; it ensures that the stylesheet cannot call arbitrary Java methods and thereby gain privileged access to resources on your machine.-im:modenameβ Selects the initial mode for the transformation. If this is namespaced, it can be written as{uri}localname.-init:initializerβ The value is the name of a user-supplied class that implements the interfaceInitializer; this initializer will be called during the initialization process, and may be used to set any options required on theConfigurationprogrammatically.-it[:template-name]β Selects the initial named template to be executed. If this is namespaced, it can be written as{uri}localname. If the template name is omitted, the default isxsl:initial-template. When this option is used, you do not need to supply a source file, but if you do, you must supply it using the-soption.-jit:(on|off)β Determines whether just-in-time compilation of template rules is in force. The default is on, unless thenogoorexplainoption is set. When JIT is enabled, the body of a template rule is not compiled until the rule first fires. This gives faster compilation when a stylesheet has been written to handle a large XML vocabulary, but the source document only uses a fraction of the vocabulary. The drawback is that static errors in the stylesheet may go undetected.-l[:(on|off)]β If-lor-l:onis specified, causes line and column numbers to be maintained for source documents. These are accessible using the extension functionssaxon:line-number()andsaxon:column-number(). Line numbers are useful when the purpose of the stylesheet is to find errors or anomalies in the source XML file. Without this option, line numbers are available while source documents are being parsed and validated, but they are not retained in the tree representation of the document.-lib:filenamesβ A list of filenames containing library packages. The filenames are separated by;on Windows systems, or:on Linux and Mac. Each filename must identify either (a) a top-level module in a source XSLT package, or (b) a SEF file containing an exported library package. There is no constraint on the order of the packages.-license:(on|off)β Relevant only when SaxonJ-PE or SaxonJ-EE software is loaded. By default, Saxon will look for a license and report a warning if none is found, which escalates to a fatal error if licenseable features (such as schema-awareness) are used. If-license:offis specified, Saxon will not look for a license unless it is needed, and will fall back silently if none is found (this means that the transformation might succeed, but without taking advantage of Saxon-EE optimizations). The option-license:offis useful to suppress warnings in the case where it is known that a compiled stylesheet containing an embedded license key is being executed.-m:classnameβ Use the specifiedReceiverto process the output fromxsl:message. The class must implement theReceiverinterface, and it must have a public zero-argument constructor. This interface is similar to a SAXContentHandler, it takes a stream of events to generate output. In general the content of a message is an XML fragment. By default the standard XML emitter is used, configured to write to the standard error stream, and to include no XML declaration. Each message is output as a new document. The sequence of calls to thisReceiveris as follows: there is a singleopen()call at the start of the transformation, and a singleclose()call at the end; and each evaluation of anxsl:messageinstruction starts with astartDocument()call and ends withendDocument(). ThestartDocument()event has a properties argument indicating whetherterminate="yes"was specified, and thelocationIdon calls such asstartElement()andcharacters()can be used to identify the location in the stylesheet where the message data originated (this is achieved by passing the suppliedlocationIdin a call togetPipelineConfiguration().getLocator().getSystemId(locationId), or togetLineNumber()on the same object). Select the classMessageWarnerto havexsl:messageoutput notified to the JAXPErrorListener, as described in the JAXP documentation.-nogoβ If set, the stylesheet is analysed for errors, and any requested-explainor-exportoutput is generated, but the stylesheet is not executed.-now:yyyy-mm-ddThh:mm:ss+hh:mmβ Sets the value ofcurrent-dateTime()(andimplicit-timezone()) for the transformation. This is designed for testing, to enable repeatable results to be obtained for comparison with reference results, or to test that stylesheets can handle significant dates and times such as end-of-year processing.-ns:(uri|##any|##html5)β Defines the handling of unprefixed element names appearing as name tests in path expressions and match patterns in the stylesheet.- Supplying a URI sets the default namespace for elements and types (effectively a default value for
xpath-default-namespaceβ note that an explicit value for this attribute takes precedence). - The value
##anydeclares that unprefixed names are treated as a test on the local name of the element only: they will match regardless of namespace. - The value
##html5declares that an unprefixed element name will match either a name in the XHTML namespace, or a name in no namespace. This option is intended primarily for use when generating stylesheets to run under Saxon-JS in the browser, since the resulting behavior is close to that defined by the special rules in the HTML5 specification for XSLT and XPath running against an HTML5 DOM.
- Supplying a URI sets the default namespace for elements and types (effectively a default value for
-o:filenameβ Send output to named file. If the source (-s) argument identifies a directory, this option is mandatory and must also identify a directory; on completion it will contain one output file for each file in the source directory. In other cases, this option has two effects: it defines the file where the principal output of the transformation will be written, and it defines the base URI used for resolving the value of thexsl:result-document/@hrefattribute when secondary result documents are written. In the absence of this option, (a) the principal output is written to the standard output stream, and (b) secondary output file locations are resolved relative to the current working directory. Output files are created if they do not already exist; any necessary directories will also be created. If a file does already exist, it is generally overwritten, though this will not necessarily happen if the transformation fails.-opt:[-]flagsβ bestie, this is the optimization control panel β¨ You can turn individual optimizations on or off with these single-letter flags:cβ generate bytecodedβ detect void path expressionseβ cache regular expressionsfβ inline functionsgβ extract global variablesjβ just-in-time compilation of template ruleskβ create keyslβ loop liftingmβ miscellaneousnβ constant foldingrβ template rule-setssβ extract common subexpressionstβ tail call optimizationvβ inline variableswβ create switch statementsxβ index predicates
So like, a value such as -opt:gs runs with only the selected optimizations; -opt:-gs runs with the selected optimizations disabled and all others enabled. The value -opt:0 suppresses all optimizations. The default is full optimization; this feature lets you suppress optimization when reducing compile time is important, or when optimization gets in the way of debugging, or when it causes extension functions with side-effects to behave unpredictably. (Note however that even with no optimization, lazy evaluation may still cause the evaluation order to be not as expected.) Disabling optimizations may in some cases prevent streamed evaluation. For example, some expressions only become streamable because the optimizer is able to work out that sorting nodes into document order is unnecessary. Most of these flags enable optimizations that cause extra work at compile time to improve run-time performance. The j option is an exception: enabling this option shifts work from compile time to run time.
-or:classnameβ use the specifiedOutputURIResolverto process output URIs appearing in thehrefattribute ofxsl:result-document. TheOutputURIResolveris a user-defined class that implements thenet.sf.saxon.lib.OutputURIResolverinterface. π-outval:(recover|fatal)β okay so normally, if validation of result documents is requested, a validation error is fatal. Setting the option-outval:recovercauses such validation failures to be treated as warnings. The validation message is written both to the standard error stream, and (where possible) as a comment in the result document itself.
This option does not by itself cause result documents to be validated; that happens only as a consequence of the type or validation attribute on an xsl:result-document instruction. The only effect of the option is to determine what happens when validation fails.
Validating result documents can be very useful while debugging a stylesheet, because it provides instant feedback when the output is incorrect. However, it can sometimes be frustrating during development when you know that parts of the code have not yet been written. The option -outval:recover is designed to give you the best of both worlds: it tells you that the output is wrong, but still enables you to see the complete result document that your code is producing. π«Ά
-p[:(on|off)]β enable recognition of query parameters (such asxinclude=yes) in theStandardURIResolver. This option is available in Saxon-PE and Saxon-EE only. It cannot be used in conjunction with the-roption, and it automatically switches on the-uand-saoptions. The effect is that Saxon-specific query parameters are recognized in a URI. One query parameter that is recognized isval. This may take the valuesstrict,lax, orstrip. For example,source.xml?val=strictloads a document with strict schema validation. π-quit:(on|off)β with the default setting,on, the command will quit the Java VM and return an exit code if a failure occurs. This is useful when running from an operating system shell. With the setting-quit:offthe command instead throws aRunTimeException, which is more useful when the command is invoked from another Java application such as Ant. π-r:classnameβ use the specifiedURIResolverto process all URIs. TheURIResolveris a user-defined class that implements thejavax.xml.transform.URIResolverinterface, whose function is to take a URI supplied as a string, and return a SAXSourceobject. It is invoked to process URIs used in thedocument()function, in thexsl:includeandxsl:importelements, and (if-uis also specified) to process the URIs of the source file and stylesheet file provided on the command line. π¦-relocate:(on|off)β used with-exportto produce an export package which can be deployed to a different location, with a different base URI. Ifon, thenstatic-base-uri()represents the deployed location of the package, rather than its compile time location. The default isoff.
The practical effect of this is that if -relocate:off (the default) is specified, then the generated SEF file will contain references to the stylesheetβs original location as its static base URI, and run-time operations that are relative to this base URI (for example, calling doc() with a relative URI) will retrieve resources exactly as if the stylesheet had not been exported. By contrast, if -relocate:on is specified, the SEF file will contain no reference to the original location of the source stylesheet, and operations such as doc() will be relative to the location from which the SEF file was loaded. π
-repeat:integerβ performs the transformationNtimes, whereNis the specified integer. This option is useful for performance measurement, since timings for the first transformation are often dominated by Java warm-up time. π₯-s:filenameβ identifies the source file or directory. Mandatory unless the-itoption is used. The source file is parsed to create a tree, and the document node of this tree acts as the initial context item for the transformation.
The filename can be given as - to take the source from standard input, in which case the base URI is taken from that of the current directory.
If the name identifies a directory, all the files in the directory will be processed individually. In this case the -o option is mandatory, and must also identify a directory, to contain the corresponding output files. A directory must be specified as a filename, not as a URL.
For backwards compatibility the source filename can also be specified immediately before the stylesheet filename, without the -s flag, provided that the -it option is not present. π
-saβ invoke a schema-aware transformation. Requires Saxon-EE to be installed. This option is not needed if either (a) another option implying schema-awareness is present (for example-val:strict) or (b) the stylesheet contains anxsl:import-schemadeclaration. β¨-scmin:filenameβ loads a precompiled schema component model from the given file. The file should be generated in a previous run ofcom.saxonica.Validateusing the-exportoption. When this option is used, the-xsdoption should not be present. Schemas loaded from an SCM file are assumed to be valid, without checking.
This option is retained for compatibility. From Saxon 9.7, SCM files can also be supplied in the -xsd option. π
-strip:(all|none|ignorable)β specifies what whitespace is to be stripped from source documents (applies both to the principal source document and to any documents loaded for example using thedocument()function). The default isignorable: all ignorable whitespace is stripped. Whitespace text nodes are ignorable if they appear in elements defined in the DTD or schema as having element-only content. Specifyingallstrips all whitespace text nodes from source documents before any further processing, regardless of anyxsl:strip-spacedeclarations in the stylesheet, or anyxml:spaceattributes in the source document. Specifyingignorablestrips all ignorable whitespace text nodes from source documents before any further processing, regardless of anyxsl:strip-spacedeclarations in the stylesheet, or anyxml:spaceattributes in the source document. Specifyingnonesuppresses all whitespace stripping unless requested elsewhere, for example usingxsl:strip-space. πΈ-tβ display version and timing information to the standard error output. The output also traces the files that are read and written, and extension modules that are loaded. β±οΈ-T[:classname]β display stylesheet tracing information. This traces execution of each instruction in the stylesheet, so the output can be quite voluminous. Also switches line numbering on for the source document. If aclassnameis specified, it is a user-defined class, which must implementTraceListener. If theclassnameis omitted, a system-supplied trace listener is used. For performance profiling, setclassnametonet.sf.saxon.trace.TimingTraceListener. This creates an output file giving timings for each instruction executed. This output file can subsequently be analyzed to give an execution time profile for the stylesheet. See Performance Analysis athttps://www.saxonica.com/documentation10/index.html#!using-xsl/performanceanalysis. π-target:(EE|PE|HE|JS)β relevant only when-exportis specified, identifies the target platform on which the exported stylesheet is to run. When exporting for Saxon-JS, the valueJSmust be specified, because this adds information to the SEF file that is required by Saxon-JS. SpecifyingJSmeans the SEF is produced in JSON format for use with Saxon-JS 2.x. (To generate SEF files for Saxon-JS 1.x, you need to revert to Saxon-EE 9.9). In principle, specifyingHEorPEwill inhibit optimizations that generate code which Saxon-HE/Saxon-PE cannot execute; however, this is not fully tested. π§-TB:filenameβ monitors generation of hot-spot bytecode and produces an XML report on the given filename giving, for each expression that was a candidate for bytecode generation and that was actually executed, data about the number of times and speed of execution in the interpreter, the number of times and speed of execution in compiled form, and the cost of compilation. π-threads:Nβ used only when the-soption specifies a directory. Controls the number of threads used to process the files in the directory. Each transformation runs in a single thread. π-TJβ turns on tracing for the binding of calls to external Java methods. Super niche but honestly a lifesaver when you're sitting there like "why is Saxon not finding a Java method to match my extension function call π" β or why it picked one method over another when you've got several to choose from. It's giving detective mode π-Tlevel:(none|low|normal|high)β controls how much detail the-Toption spits at you. The values are:noneβ effectively switches tracing off. Nothing to see here, moving on πlowβ traces function and template calls.normalβ traces execution of instructions.highβ traces execution of finer-grained expressions. Maximum tea β
-Tout:filenameβ sends the tracing output to a file you name (assuming-Tis actually enabled, bestie β this isn't a magic wand β¨).-TP:filenameβ this one's a shortcut: it's equivalent to setting-T:net.sf.saxon.trace.TimedTraceListenerand-traceout:filename. In other words, it dumps trace profile info into the file you specify. Then you can analyze that output file later to get an execution time profile of your stylesheet. Literally performance analysis, iykyk. See Performance Analysishttps://www.saxonica.com/documentation10/index.html#!using-xsl/performanceanalysis.-traceout:filenameβ says "hey, send the output of thetrace()function to this file instead." Or you can pass#outto send it toSystem.out,#errto send it toSystem.err(that's the default, btw), or#nullto just have it yeeted into the void π³οΈ. Heads up though: this option is ignored when a trace listener is in use β in that casetrace()output goes to the registered trace listener. No cap.-tree:(linked|tiny|tinyc)β picks which internal tree model implementation gets used:tinyselects the βtiny treeβ model (the default π),linkedselects the linked tree model, andtinycselects the βcondensed tiny treeβ model. See Choosing a tree modelhttps://www.saxonica.com/documentation10/index.html#!sourcedocs/choosingmodel.-uβ tells Saxon that the names of the source document and the stylesheet document are URLs. Otherwise they get treated as filenames β unless they start withhttp:,https:,file:orclasspath:, and in that case they're URLs anyway. Slay, flexible queen π-val[:(strict|lax)]β requests schema-based validation of the source file and of any files read usingdocument()or similar functions. Important: validation is only available with Saxon-EE, and this flag automatically switches on the-saoption. Write-valor-val:strictfor strict validation, or-val:laxfor lax validation. Pick your fighter π₯-warnings:(silent|recover|fatal)β sets the policy for handling recoverable errors in the stylesheet:silentmeans recover silently π€«,recovermeans recover after writing a warning message to the system error output, andfatalmeans signal the error and don't even try to recover π. (Note: this does not currently apply to all errors that the XSLT recommendation calls recoverable β don't come for me, that's just what the docs say.) The default isrecover.-x:classnameβ use this SAX parser for the source file and any files loaded via thedocument()function. The parser has to be the fully-qualified class name of a Java class that implements theorg.xml.sax.XMLReaderorjavax.xml.parsers.SAXParserFactoryinterface, and it must be instantiable using a zero-argument public constructor. One use: picking an HTML parser like John Cowan's TagSoup instead of an XML parser β in that case the TagSoup JAR file must be on the classpath, and the class name to use isorg.ccil.cowan.tagsoup.Parser. Another common use is specifyingorg.apache.xml.resolver.tools.ResolvingXMLReaderβ that parser comes from the Apache commons project, and it customizes the default parser by using anEntityResolverthat resolves external entity references (you know, the reference to an external DTD in a DOCTYPE declaration) by reference to an OASIS catalog file. Which means you can dodge repeated calls to external web servers (like the W3C server) for commonly used DTDs such as the XHTML DTD. Obsessed, honestly. Also: the option to supply aSAXParserFactorywas introduced in 9.6 for the benefit of the Aalto parser, whoseXMLReaderimplementation can't be directly instantiated β so you can request that parser by nominating its factory class,com.fasterxml.aalto.sax.SAXParserImpl.-xi:(on|off)β applies XInclude processing to all source XML documents (but not to schema and stylesheet modules). Currently this only works when documents are parsed using the Xerces parser, which is the default on the SaxonJ platform (but not on .NET). Just so you know π«Ά-xmlversion:(1.0|1.1)β if you specify-xmlversion:1.1, it allows XML 1.1 and XML Namespaces 1.1 constructs. You must set this if source documents using XML 1.1 are gonna be read, or if result documents are gonna be serialized as XML 1.1. It also enables XML 1.1 constructs inside the stylesheet itself. Periodt β¨-xsd:file1;file2;file3β¦β loads extra schema documents. The declarations in those schema documents are available when validating source documents (or for use by thevalidate{}expression). You can also use this to supply the locations of schema documents imported into the stylesheet, for the case where thexsl:import-schemadeclaration gives the target namespace of the schema but not its location. Drop them in, separated by semicolons π-xsdversion:(1.0|1.1)β if-xsdversion:1.1is specified (that's the default), it allows schema documents using XML Schema 1.1 to be read, plus XML Schema 1.1 constructs such as assertions. Fancy π-xsiloc:(on|off)β if set toon(the default), the schema processor tries to load any schema documents referenced inxsi:schemaLocationandxsi:noNamespaceSchemaLocationattributes in the instance document β unless a schema for the specified namespace (or non-namespace) is already available. If set tooff, those attributes are just ignored. Bye π-xsl:filenameβ specifies the file containing the principal stylesheet module. Mandatory unless the-aoption is used. The value-identifies the standard input stream, and in that case the static base URI is taken from that of the current directory. If the-uoption is specified, then the value must be a URI rather than a filename.
The selected file can contain either XSLT source code, or a compiled version of the stylesheet (a SEF file) as produced using the -export option. Either way, she's ready π
-y:classnameβ use the specified SAX parser for stylesheet files, including any loaded usingxsl:includeorxsl:import. The classname you give has to be the fully-qualified class name of a Java class that implements theorg.xml.sax.XMLReaderorjavax.xml.parsers.SAXParserFactoryinterface, and it must be instantiable using a zero-argument public constructor. Same rules as-x, just for stylesheets π--feature:valueβ sets a feature defined in theConfigurationinterface. The names of features are defined in the Javadoc for classFeature(or, alternatively, see Configuration Featureshttps://www.saxonica.com/documentation10/index.html#!configuration/config-features): the value used here is the part of the name after the last/β for example--allow-external-functions:off. Only features accepting a string or boolean may be set; for booleans the valuestrue/false,on/off,yes/no, and1/0are recognized. So many ways to say yes π-?β displays the command syntax. The "help me" of it all π--?β displays a list of features available through the--feature:valuesyntax. So you don't have to guess, bestie π
π¬ COMMAND LINE PARAMETERS π¬
Okay so a param takes the form name=value, where name is the name of the parameter and value is the value of the parameter. These params are accessible inside the stylesheet as normal variables, using the $name syntax β provided they're declared using a top-level xsl:param element. If there's no such declaration, the supplied parameter value is just silently ignored. Rude, but that's the vibe π
If the xsl:param element has an as attribute indicating the required type, then the string value you supplied on the command line gets cast to that type. Which can absolutely result in an error β for example if an integer is required and the value you gave can't be converted to an integer. Math is hard π
If the parameter is declared with the option static="yes" (new in XSLT 3.0), then the value is supplied as a static parameter value. Special treatment, honestly π
A param preceded by a leading question mark (?) is interpreted as an XPath expression. For example, ?time=current-dateTime() sets the value of the stylesheet parameter $time to the value of the current date and time, as an instance of xs:dateTime. Meanwhile ?debug=false() sets the value of the parameter $debug to the boolean value false. If the parameter has a required type (for example <xsl:param name="p" as="xs:date"/>), then the supplied value must be compatible with that type according to the standard rules for converting variable values and function arguments.
The static context for this XPath expression includes only the standard namespaces conventionally bound to the prefixes xs, fn, xsi, and saxon. The static base URI (used when calling the doc() function) is the current directory. The dynamic context contains no context item, position, or size, and no variables. Bare bones, no cap π¦
A param preceded by a leading exclamation mark (!) is interpreted as an output parameter. For example, !indent=yes requests indented output. This is equivalent to specifying the attribute indent="yes" on an xsl:output declaration in the stylesheet. An output parameter specified on the command line overrides one specified within the stylesheet β command line stays winning π
For the parameters doctype-system, doctype-public, and saxon:next-in-chain, a zero-length value is treated as βabsentβ β that is, the effect is to cancel any value that was set within the stylesheet. Sneaky but iconic.
β οΈ If you're using the bash shell, you'll need to escape!as\!. Yes, really. Bash is like that.
A param preceded by a leading plus sign (+) is interpreted as a filename or directory. The content of the file is parsed as XML, and the resulting document node is passed to the stylesheet as the value of the parameter. If the parameter value is a directory, then all the immediately contained files are parsed as XML, and the resulting sequence of document nodes is passed as the value of the parameter. For example, +lookup=lookup.xml sets the value of the stylesheet parameter lookup to the document node at the root of the tree representing the parsed contents of the file lookup.xml. Multi-document slay π
Okay so a lil PSA about values with spaces in them π
β under most operating systems you can hand over a value that's got spaces in it by wrapping it in double quotes, like name="John Smith". But plot twist: that's a feature of the operating system shell, not something Saxon does itself, so it might not behave the same way on every OS or command processor π« . Case in point: in the jEdit console plugin it has to be written as "name=John Smith" β quotes wrapped around the whole thing, not just the value. iykyk π
Now, if the parameter name lives in a non-null namespace, you can still give it a value using the syntax {uri}localname=value. Here uri is the namespace URI of the parameter's name, and localname is the local part of the name. No cap, that's the whole format β¨
This applies to output parameters too π β like, you can set the indentation level to 4 using the parameter !{http://saxon.sf.net/}indent-spaces=4. But in this case specifically, lexical QNames that use the prefix saxon are also recognized, for example !saxon:indent-spaces=4 π₯. Also go peep Additional serialization parameters at <https://www.saxonica.com/documentation10/index.html#!extensions/output-extras> for more π
π SEE ALSO π
Like, the whole friend group fr fr π«Ά
π AUTHOR π
Michael H. Kay <mike@saxonica.com> β the main character who made all this happen π
And that's a wrap, bestie!! πβ¨ This whole saga is saxon10 version 10.9, dated 2023-09-27, and the page you just devoured is SAXON10.SAXON(1). Go forth and slay your transformations π
π₯
π¦ where this page comes from
- opensuse-leap 16.0: saxon10-scripts 10.9-160000.2.2 Β· Apache-2.0 AND MPL-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms