Cand XSLT evaluate XPath in String variable?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Son KwonNam

    Cand XSLT evaluate XPath in String variable?

    In XSLT, is this possible to get value from xml using XPath
    which is in XSLT variable?

    I mean XPath strings can be dynamic while XSL Transforming.

    If possible, How??

    Because I'm not a native English speaker, it's quite hard
    to make the problem clear. Please see the following example.

    There are two XML files.
    One has data, and the other has xpath. I will transform
    the XPath XML.

    for example,

    * XPath XML
    <xpaths>
    <xpath>/students/student/name</xpath>
    <xpath>/students/student/id</xpath>
    </xpaths>

    * Data XML : data.xml
    <students>
    <student>
    <name>John Doe</name>
    <id>234234</id>
    </student>
    </students>

    * XSL snippet.
    <xsl:template match="//xpath">
    <xsl:variable name="xpathstri ng" select="."/>
    <B>XPaht : <xsl:value-of select="$xpaths tring"/></B>
    <B>Value : <xsl:value-of select="documen t('data.xml')/$xpathstring" />
    </B> </xsl:template>


    As you know, that <xsl:value-of select(document (bla...)/> line
    does not
    work.

    Any solution for this problem in XSLT?
    I use JDOM/Xalan for transforming.

    Thanks,
  • Joris Gillis

    #2
    Re: Cand XSLT evaluate XPath in String variable?

    Hi,
    [color=blue]
    > In XSLT, is this possible to get value from xml using XPath
    > which is in XSLT variable?
    >
    > Any solution for this problem in XSLT?[/color]

    This is not possible in XSLT1.0 (I don't know about 2.0), but you can work around it.

    1) Use an extension function that evaluates a string as Xpath
    e.g. 'dyn:evaluate' (http://www.exslt.org/dyn/functions/evaluate/index.html)
    2) Use a two step tranformation

    If you choose the second option, I could help - I have no experience whatsoever with the first option.

    regards,
    --
    Joris Gillis (http://www.ticalc.org/cgi-bin/acct-v...i?userid=38041)
    Spread the wiki (http://www.wikipedia.org)

    Comment

    • Martin Honnen

      #3
      Re: Cand XSLT evaluate XPath in String variable?



      Son KwonNam wrote:

      [color=blue]
      > Any solution for this problem in XSLT?
      > I use JDOM/Xalan for transforming.[/color]

      Xalan should support
      <http://www.exslt.org/dyn/functions/evaluate/index.html>

      --

      Martin Honnen

      Comment

      • Son KwonNam

        #4
        Re: Cand XSLT evaluate XPath in String variable? - Thanks.

        Thank you.

        It works perfectly.

        I attach the dyn:evaluate example XSL for someone who has the same
        problem as mine. With xalan, no need to do anything to use dyn:evaluate.
        Just use.

        ----------------------------------------------------------------------
        <xsl:styleshe et xmlns:xsl="http ://www.w3.org/1999/XSL/Transform"
        version="1.0"
        xmlns:dyn="http ://exslt.org/dynamic"
        extension-element-prefixes="dyn"[color=blue]
        >[/color]
        <xsl:output method="xml"/>

        <xsl:template match="/">
        <ROOT>
        <xsl:apply-templates />
        </ROOT>
        </xsl:template>

        <xsl:template match="xpath">
        <RESULT>
        <XPATH><xsl:val ue-of select="."/></XPATH>
        <xsl:variable name="xpathstr"
        select="concat( 'document(&quot ;data.xml&quot; )',.)"/>
        <VALUE><xsl:val ue-of select="dyn:eva luate($xpathstr )"/></VALUE>
        </RESULT>
        </xsl:template>

        </xsl:stylesheet>


        Son KwonNam wrote:[color=blue]
        > In XSLT, is this possible to get value from xml using XPath
        > which is in XSLT variable?
        >
        > I mean XPath strings can be dynamic while XSL Transforming.
        >
        > If possible, How??
        >
        > Because I'm not a native English speaker, it's quite hard
        > to make the problem clear. Please see the following example.
        >
        > There are two XML files.
        > One has data, and the other has xpath. I will transform
        > the XPath XML.
        >
        > for example,
        >
        > * XPath XML
        > <xpaths>
        > <xpath>/students/student/name</xpath>
        > <xpath>/students/student/id</xpath>
        > </xpaths>
        >
        > * Data XML : data.xml
        > <students>
        > <student>
        > <name>John Doe</name>
        > <id>234234</id>
        > </student>
        > </students>
        >
        > * XSL snippet.
        > <xsl:template match="//xpath">
        > <xsl:variable name="xpathstri ng" select="."/>
        > <B>XPaht : <xsl:value-of select="$xpaths tring"/></B>
        > <B>Value : <xsl:value-of select="documen t('data.xml')/$xpathstring" />
        > </B> </xsl:template>
        >
        >
        > As you know, that <xsl:value-of select(document (bla...)/> line
        > does not
        > work.
        >
        > Any solution for this problem in XSLT?
        > I use JDOM/Xalan for transforming.
        >
        > Thanks,[/color]

        Comment

        • Joris Gillis

          #5
          Re: Cand XSLT evaluate XPath in String variable? - Thanks.

          > With xalan, no need to do anything to use dyn:evaluate. Just use.
          Really? Thanks for pointing that out.
          --
          Joris Gillis (http://www.ticalc.org/cgi-bin/acct-v...i?userid=38041)
          "Quot capita, tot sententiae" - Terentius , Phormio 454

          Comment

          Working...