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

Re: How to retrieve global parameters names and their

Subject: Re: How to retrieve global parameters names and their default values using Saxon?
From: Abel Braaksma Online <abel.online@xxxxxxxxx>
Date: Wed, 10 May 2006 15:36:42 +0200
retrieve global
A follow up after some testing and trial and error. The proposed solution works partially, thanks again for this pointer, but we get (indeed Michael, you were right) strange results for any <xsl:param> value that is not a quoted literal. So:

A. <xsl:param name="somenameA" select=" 'literal-string-A' " />
B. <xsl:param name="somenameB" >literal-string-B</xsl:param>

(A) correctly returns "literal-string-A" (incl. quotes)
(B) (in?) correctly returns "net.sf.saxon.instruct.DocumentInstr@d1a34a" (without quotes)


We have tried evaluateAsString (Expression and ComputedExpression classes) and some other things, basically all requiring an XPathContext, and setting context to null did not help, although the docs hint as if it should.

My guess is that the XSLT processor sees the content of (B) as a node set, containing one node, namely a text node. I wonder, is there a way of doing something like:

rootContext = compiledStylesheet.getRootContext();
if(ParamB.canEvaluateToString())
     return ParamB.evaluateToString(rootContext);
else
     return null;

So: I would like to know a way to get the normalized string representation, unless the xsl:param is a node set (other than a single text node) or an xpath instruction.

Any help on this follow up is greatly appreciated.

Cheers,
Abel



andrew welch wrote:


compiledStylesheet = stf.newTemplates(new StreamSource(stylesheetPath)); Executable exec = ((PreparedStylesheet)compiledStylesheet).getExecutable();
IntHashMap map = exec.getCompiledGlobalVariables();
Iterator iter = map.valueIterator();
while (iter.hasNext()) {
Object var = iter.next();
if (var instanceof GlobalParam) {
String name = ((GlobalParam)var).getVariableName();
String value = ((GlobalParam)var).getSelectExpression().toString();


cheers
andrew

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.