Context

Discussion in 'XML' started by Eliza Zadura, Sep 10, 2003.

  1. Eliza Zadura

    Eliza Zadura Guest

    The following question is about XPath and context, as I am not sure I'm
    grasping the concept entirely and this is causing me some problems while
    working on my XSL transformation.

    I have checked the XPath specification and am somewhat familiar with the
    different addressing mechanisms. What confuses me is the context when
    using templates and various (nested) <xsl:for-each>, <xsl:if> and
    <xsl:when> expressions.

    For example, say I have a named template where test-param is the value
    of a certain node.

    <xsl:template name="test_temp">
    <xsl:param name="test_param"/>
    ...
    ...
    <xsl:for-each select="[some other node]">

    <!--here, I assume the context is that of [some other node], and not the
    node represented by test_param?-->

    <xsl:if test="[yet another node]">

    <!--What about the context here, is it that of [yet another node]?-->

    </xsl:if>
    </xsl:for-each>

    <!--And here, am I back to the original context, the one defined by the
    test_param?-->

    </xsl:template>

    And so on, and so forth...
    To put it briefly: Does every expression that evaluates a set of nodes
    change the context to that particular set, thus enabling me to use ./
    while referring to attributes or other subnodes of that node?

    -----------------
    Eliza Zadura
    Trainee-Developer

    *** Sent via Developersdex http://www.developersdex.com ***
    Don't just participate in USENET...get rewarded for it!
     
    Eliza Zadura, Sep 10, 2003
    #1
    1. Advertising

  2. Eliza Zadura

    Marrow Guest

    Hi Eliza,

    > For example, say I have a named template where test-param is the value
    > of a certain node.
    >
    > <xsl:template name="test_temp">
    > <xsl:param name="test_param"/>


    ^^^^^ the context here will be whatever the context node was at the point of
    the <xsl:call-template>. Parameters have no effect on the context.
    > ..
    > ..
    > <xsl:for-each select="[some other node]">
    >
    > <!--here, I assume the context is that of [some other node], and not the
    > node represented by test_param?-->


    ^^^^^ yes, the context node will be the [some other node]
    >
    > <xsl:if test="[yet another node]">
    >
    > <!--What about the context here, is it that of [yet another node]?-->
    >
    > </xsl:if>
    > </xsl:for-each>
    >
    > <!--And here, am I back to the original context, the one defined by the
    > test_param?-->


    ^^^^^ No, because the context was never the node(s) in the $test_param - the
    context will revert to the context node at the point of the
    <xsl:call-template>
    >
    > </xsl:template>



    Hope this helps
    Marrow
    http://www.marrowsoft.com - home of Xselerator (XSLT IDE and debugger)
    http://www.topxml.com/Xselerator


    "Eliza Zadura" <> wrote in message
    news:3f5ef1f6$0$62080$...
    > The following question is about XPath and context, as I am not sure I'm
    > grasping the concept entirely and this is causing me some problems while
    > working on my XSL transformation.
    >
    > I have checked the XPath specification and am somewhat familiar with the
    > different addressing mechanisms. What confuses me is the context when
    > using templates and various (nested) <xsl:for-each>, <xsl:if> and
    > <xsl:when> expressions.
    >
    > For example, say I have a named template where test-param is the value
    > of a certain node.
    >
    > <xsl:template name="test_temp">
    > <xsl:param name="test_param"/>
    > ..
    > ..
    > <xsl:for-each select="[some other node]">
    >
    > <!--here, I assume the context is that of [some other node], and not the
    > node represented by test_param?-->
    >
    > <xsl:if test="[yet another node]">
    >
    > <!--What about the context here, is it that of [yet another node]?-->
    >
    > </xsl:if>
    > </xsl:for-each>
    >
    > <!--And here, am I back to the original context, the one defined by the
    > test_param?-->
    >
    > </xsl:template>
    >
    > And so on, and so forth...
    > To put it briefly: Does every expression that evaluates a set of nodes
    > change the context to that particular set, thus enabling me to use ./
    > while referring to attributes or other subnodes of that node?
    >
    > -----------------
    > Eliza Zadura
    > Trainee-Developer
    >
    > *** Sent via Developersdex http://www.developersdex.com ***
    > Don't just participate in USENET...get rewarded for it!
     
    Marrow, Sep 11, 2003
    #2
    1. Advertising

  3. Eliza Zadura

    Eliza Zadura Guest

    Thank you for your reply. That is what I thought, but I wanted it
    confirmed.

    What about if I have nested for loops? Will the context of the inner
    loop be that of the inner select?

    I'm having to do quite horrible loops and conditions to accomplish what
    I need, and find all this a bit confusing...

    -----------------
    Eliza Zadura
    Trainee-Developer

    *** Sent via Developersdex http://www.developersdex.com ***
    Don't just participate in USENET...get rewarded for it!
     
    Eliza Zadura, Sep 11, 2003
    #3
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. VS_NET_DEV
    Replies:
    2
    Views:
    3,802
    jenny
    May 25, 2004
  2. =?Utf-8?B?U3VuU21pbGU=?=
    Replies:
    0
    Views:
    707
    =?Utf-8?B?U3VuU21pbGU=?=
    Jan 10, 2006
  3. Flip Rayner
    Replies:
    1
    Views:
    656
    bruce barker
    Jan 23, 2007
  4. asd
    Replies:
    1
    Views:
    435
    www.pulpjava.com
    Nov 9, 2006
  5. Jani Tiainen
    Replies:
    3
    Views:
    1,021
    Jani Tiainen
    Aug 27, 2007
Loading...

Share This Page