[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Stylesheet parameters and packages?

Subject: Re: Stylesheet parameters and packages?
From: "Martin Honnen martin.honnen@xxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 7 Jun 2020 21:13:28 -0000
Re:  Stylesheet parameters and packages?
On 07.06.2020 19:40, David Birnbaum djbpitt@xxxxxxxxx wrote:


Is there a rule of thumb for managing stylesheet parameters when using
a package hierarchy, that is, in situations where packages use other
packages? I would like to set a $debug parameter in all packages, both
the lowest-level collections of user-defined functions and the
higher-level packages that import those libraries, and that are then
imported, themselves, by other stylesheets. But as I fiddle with the
options, either I am notified by the mid-level package that a
parameter has not been declared there (even though it is declared in a
lower-level package that I am using in the mid-level one, and the XSLT
3.0 spec tells me that stylesheet parameters are obligatorily public)
or, when I declare the parameter in the mid-level package, that it
conflicts with the lower-level declaration. In case this is helpful,
the point of the $debug parameter is that I want to write diagnostic
messages to stderr using <xsl:message> B when the $debug parameter
value is true, and I need to be able to generate messages of this sort
from both the low-level and mid-level packages.


Is that XSLT 3 packages? It might help if you show minimal examples generating those problems, together with an explanation of the XSLT 3 processor you use.


The simplest samples I could come up with a three packages package1.xsl, package2.xsl, package3.xsl


<xsl:package B B B name="http://example.com/mp/p1" B B B package-version="1.0" B B B xmlns:xsl="http://www.w3.org/1999/XSL/Transform" B B B xmlns:xs="http://www.w3.org/2001/XMLSchema" B B B exclude-result-prefixes="#all" B B B version="3.0">

B B B <xsl:param name="debug" as="xs:boolean" select="true()" />

</xsl:package>


<xsl:package B B B name="http://example.com/mp/p2" B B B package-version="1.0" B B B xmlns:xsl="http://www.w3.org/1999/XSL/Transform" B B B xmlns:xs="http://www.w3.org/2001/XMLSchema" B B B exclude-result-prefixes="#all" B B B version="3.0">

B B B <xsl:use-package name="http://example.com/mp/p1" version="1.0"/>

B B B  <xsl:template name="xsl:initial-template" visibility="public">
B B B B B B B  <xsl:value-of select="$debug"/>
B B B  </xsl:template>

</xsl:package>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:package
B B B  name="http://example.com/mp/p3"
B B B  package-version="1.0"
B B B  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
B B B  xmlns:xs="http://www.w3.org/2001/XMLSchema"
B B B  exclude-result-prefixes="#all"
B B B  version="3.0">

B B B  <xsl:use-package name="http://example.com/mp/p2" version="1.0">
B B B B B B B  <xsl:accept component="template" names="*"
visibility="public"/>
B B B  </xsl:use-package>

</xsl:package>


I can run both package2.xsl or package3.xsl with Saxon 10 from the command line and the value of the parameter declared in package1.xsl is output. I have to use the option lib:package1.xsl when running package2.xsl and the option lib:"package1.xsl;package2.xsl" when running package3.xsl. For simplicity I have also not used an input document but used the option -it to run that template named xsl:initial-template in package2.xsl.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.