Hi,
We ended up implementing this in oXygen by looking in the XSLT documents
as XML documents and extracting the information directly from there. You
just have to be careful that parameters in included files can be
rewritten in the including files but otherwise there are no
difficulties. And while you do that you can get also whatever comment or
documentation element exists for that parameter, if you need that as
well. oXygen extracts also that and presents the parameters and their
documentation in the parameters dialog when configuring a transformation
scenario.
Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com
Abel Braaksma Online wrote:
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(_dot_)sf(_dot_)saxon(_dot_)instruct(_dot_)DocumentInstr(_at_)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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--