aspose file tools*
The moose likes XML and Related Technologies and the fly likes Help on XSL XPath Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Help on XSL XPath" Watch "Help on XSL XPath" New topic
Author

Help on XSL XPath

Amru Reddy
Greenhorn

Joined: Feb 17, 2006
Posts: 3
Hi,

I am new to xsl development , however I am determined to work on xsl porting project from Xalan interpretive to xalan compiled processor.

cut short version template is given below. app.xsl references generic.xsl and makes a template call with parameters. because I am trying to learn too many
things at a time , i am finding difficulty in replacing xalan:evalaute() function with standard XPath predicates.

Please help me with some clues on replacing xalan:evalaute with standard XPath expressions. Also some guidence to gain sufficient knowledge to replace such a calls made in several other places in
the entire project.

I am using xsltc for converting these static xsl files into translet for performance reasons. So there was a need for replacement of evalaute calls

Thanks & Regards,
Amar
app.xsl

<xsl:call-template name="mySelectFieldNew">
<xsl:with-param name="OptionPath">/WMS/wms_ref_annc_id/Row</xsl:with-param>
<xsl:with-param name="Value">value</xsl:with-param>
<xsl:with-param name="Display">display</xsl:with-param>
</xsl:call-template>

<xsl:call-template name="mySelectFieldNew">
<xsl:with-param name="OptionPath">/WMS/wms_ref_pref_lang/Row</xsl:with-param>
<xsl:with-param name="Value">value</xsl:with-param>
<xsl:with-param name="Display">display</xsl:with-param>
</xsl:call-template>

generic.xsl:

<xsl:template name="mySelectFieldNew">
<xsl aram name="OptionPath" select="$default"/>
<xsl aram name="Value" select="$default-value"/>
<xsl aram name="Display" select="$default-display"/>
<xsl aram name="Sort" select="'off'"/>
<xsl aram name="SelectedValuePath" select="$default"/>
<xsl aram name="ConstantSelectedValuePath" select="$default"/>

<xsl:choose>
<xsl:when test="not($OptionPath=$default)">
<xsl:choose>
<xsl:when test="$Sort = 'on'"> <!-- sorted -->
<xsl:for-each select="xalan:evaluate($OptionPath)">
<xsl:sort select="xalan:evaluate($Display)"/>
<option>
<xsl:if test="not($SelectedValuePath=$default and $ConstantSelectedValuePath=$default)">
<xsl:if test="$selectVal = xalan:evaluate($Value)">
<xsl:attribute name="selected"/>
</xsl:if>
</xsl:if>

<xsl:attribute name="value">
<xsl:value-of select="xalan:evaluate($Value)"/>
</xsl:attribute>
<xsl:value-of select="xalan:evaluate($Display)"/>
</option>
</xsl:for-each>
</xsl:when>
<xsl therwise> <!-- unsorted -->
<xsl:for-each select="xalan:evaluate($OptionPath)">
<option>
<xsl:if test="not($SelectedValuePath=$default and $ConstantSelectedValuePath=$default)">
<xsl:if test="$selectVal = xalan:evaluate($Value)">
<xsl:attribute name="selected"/>
</xsl:if>
</xsl:if>

<xsl:attribute name="value">
<xsl:value-of select="xalan:evaluate($Value)"/>
</xsl:attribute>
<xsl:value-of select="xalan:evaluate($Display)"/>
</option>
</xsl:for-each>
</xsl therwise>
</xsl:choose>
</xsl:when>
<xsl therwise>

<xsl:template>
Paul Clapham
Bartender

Joined: Oct 14, 2005
Posts: 18541
    
    8

If I'm not mistaken, xalan:evaluate will take a string and evaluate it as if it were an XPath expression. It exists specifically because XSLT doesn't provide that ability.

So there's no easy way to get rid of it, especially if (as in your example) you have unrestricted input strings. It would theoretically be possible to write an XPath parser and interpreter, but XSLT would not be my first choice of language for that. Budget several months for an XSLT expert to do that. And expect much worse performance from it than from xalan:evaluate.
ak pillai
author
Ranch Hand

Joined: Feb 11, 2006
Posts: 288
From XSLT you can call Java Functions.

look at this article: HSLT with JAVA


java j2ee job interview questions with answers | Learn the core concepts and the key areas
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Help on XSL XPath