Subject: RE: [xsl] How to retrieve global parameters names and their default values using Saxon? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 10 May 2006 15:31:17 +0100 |
This conversation would be better conducted on the Saxon list... You could pick up all constant expressions, of whatever type, using the test if X instanceof Value return ((Value)X).getStringValue() Note that if the expression is written as select="2+2", you will probably get back the pre-evaluated result, "4". You could pick up the special case of <xsl:param>xyz</xsl:param> using if X instanceof TextFragmentValue return ((TextFragmentValue)X).getStringValue() Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Abel Braaksma Online [mailto:abel.online@xxxxxxxxx] > Sent: 10 May 2006 14:37 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] How to retrieve global parameters names > and their default values using Saxon? > > 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] How to retrieve global pa, Michael Kay | Thread | Re: [xsl] How to retrieve global pa, Abel Braaksma Online |
Re: [xsl] How to retrieve global pa, George Cristian Bina | Date | RE: [xsl] How to retrieve global pa, Michael Kay |
Month |