开发者

Assigning parameter value to the xsl: for each

Can anybody who has worked with XSLT help me on this?

I am using XSL version 1.0.

I have declared a parameter in XSL file like:

<xsl:param name="HDISageHelpPath"/>

Now I am assigning the value to this parameter from an asp page . The value which I assign is "document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help". Now I want to assign this parameter to the <xsl for each> like

<xsl:for-each select="msxsl:node-set($HDISageHelpPath)" > (This does not work)

But it does not work. I checked the parameter value by debugging it as below

<debug tree="$HDISageHelpPath">
    <xsl:copy-of select="$HDISageHelpPath"/>
</debug>

I'm able to print the value and it seems correct. In fact when I assign the static path ("document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help") by hard-coding it, it works

<xsl:for-each select="document('../ChannelData/Sage/help/ic/xml/HDI.xml')/HelpFiles/Help"> (This works)
开发者_如何学编程

Can anyone please let me know why assigning the parameter to xsl:for-each does not work?

Note: I have referred the site "http://www.dpawson.co.uk/xsl/sect2/N1553.html"


You can't easily evaluate dynamic strings as XPath expressions in XSLT 1.0. They must be hard-coded, normally.

There's EXSLT's dyn:evaluate(), but I doubt you can use that with the MXSML processor.

As an alternative approach, you could either try passing the file path only:

<xsl:param name="HDISageHelpFilePath"/>
<!-- ... -->
<xsl:for-each select="document($HDISageHelpFilePath)/HelpFiles/Help">
</xsl:for-each>

or making placeholder, replacing it with search-and-replace before you load the actual XSL code into the processor (as a string). This is a bit messy and error-prone, but it could give you the possibility to use an actual dynamic XPath expression.

<xsl:for-each select="%HELP_FILE_XPATH%">
</xsl:for-each>

Load the file as text, replace %HELP_FILE_XPATH% with your actual XPath, feed it to the processor. If it loads, you are fine, if it doesn't, your input XPath was malformed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜