xmlxsltxalanexsltxslt-extension

XSLT Xalan dyn:evaluate example


I want yo use the EXSLT - DYN:EVALUATE in a style sheet. I have added the names pace but I don't know where the .xsl file I need to import is. I don't believe I have XALAN installed to point the import to. How would I install this? Once installed and I point it to the .xsl will it pick up the function and apply it? I am running Windows. The XSLT file is included at the top of the XML document.

Thanks

Pete


Solution

  • Xalan has the EXSL dyn:evaluate function built-in, you don't need to import anything in order to use it. You just need to declare the namespace. I'll give a small example:

    input.xml:

    <root>
    <foo>I am foo</foo>    
    <bar>I am bar</bar>    
    </root>
    

    dyn_evaluate.xsl:

    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:dyn="http://exslt.org/dynamic"
        extension-element-prefixes="dyn">
    
      <xsl:param name="path"/>
    
      <xsl:output method="text"/>
    
      <xsl:template match="/">
        <xsl:value-of select="dyn:evaluate($path)"/>
      </xsl:template>
    
    </xsl:stylesheet>
    

    Running

    xalan.exe -p path '/root/foo' input.xml dyn_evaluate.xsl
    

    gives

    I am foo
    

    Running

    xalan.exe -p path '/root/bar' input.xml dyn_evaluate.xsl

    gives

    I am bar
    

    Hope this helps.