xsl-list
[Top] [All Lists]

Re: finding nodes

2005-01-24 07:17:11

When you define  <xsl:apply-templates select="//campus[(_at_)name = $value]"/>
and then define template matching  campus, that means you precisely want to
match the campus with your defined predicate,
 unless you have defined another more generalised apply-templates for
processing all other nodes.

If the behaviour is different for the campus with the predicate you had
defined and for all other campus nodes, then you can do this by the
following ways

 one is use a
<xsl:for-each select ="//campus[(_at_)name = $value]>
                            do what u want with this node....
 </xsl:for-each>

or define a template matching campus, with a special mode..
eg,..

<xsl:template match="campus" mode="resident">

do what you want here with your template

</xsl:template>

and apply-templates with the mode .. example
<xsl:apply-templates select="//campus[(_at_)name = $value]" mode="resident"/>
So u are defining a special behaviour template for your special campuses...

Try working this way...This should help..
Try to avoid doing the nodeset business unless it is absolutely necessary.


    I appreciate your reply. Prabably I should have been more clear in my
mail. When I mentioned top-level (school in my case) I didn't exactly mean
top-level but inside of the top-level element but outside of the actual
root (student) where my student data is.

That was more like a puzzle .. You actually meant the parent of the context
node???
HTH
Vasu


----- Original Message ----- 
From: <omprakash(_dot_)v(_at_)polaris(_dot_)co(_dot_)in>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, January 24, 2005 1:39 PM
Subject: Re: [xsl] finding nodes







Hi Vasu,

    You say I should use

<xsl:apply-templates select="//campus[(_at_)name = $value]"/>

and then define the template match = "campus". But
wouldn't
<xsl:template match="campus"> match other campus nodes as well. I want
only
campus nodes having name=$value.
Would I have to use mode in that case.

I feel using for-each and iterating over a nodeset sounds better though a
bit complex. I think 'campus' nodes having 'name' attribute would only
appear at the top-level of the document. Can I just say the below (single
slash) in that case.

<xsl:variable name="nset">
 <xsl:copy-of select="/campus[(_at_)name = $value]"/>
 </xsl:variable>

Regards,
Omprakash.V





                      "Vasu Chakkera"
                      <vasucv(_at_)hotmail(_dot_)         To:
<xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
                      com>                     cc:      (bcc:
omprakash.v/Polaris)
                                               Subject: Re: [xsl] finding
nodes
                      01/24/2005 06:59
                      PM
                      Please respond
                      to xsl-list






You probably need
<xsl:apply-templates select="//campus[(_at_)name = $value]"/>

and then define the template match = "campus" to do what you want to do
with
that node.

I think this should work.

If you needed to store the nodeset in the variable ....
Firstly you must copy the nodes in to this variable.. using the copy-of...
<xsl:variable name="nset">
 <xsl:copy-of select="//campus[(_at_)name = $value]"/>
 </xsl:variable>
 and then iterate

For iterating, you  need an iteration expression like xsl:for-each to loop
through the variable. Secondly you need a function like nodeset() that
will
evaluate your variable to a node list. usually all processors have the
nodeset functions. check your processor's documentation for how to use
this
extension function.
your expression will look like

<xsl:for-each select="xx:nodeset($nset)/">
   do something to this node......
  </xsl:for-each>
If you wanted to print the nodeset that you had stored in the variable,
then
you could do
<xsl:copy-of select="$nset"/>
 > My context node is elsewhere in the xml file.
Make sure you definitely want to do this nodeset business. a double slash
( //) will get you the campus where ever it is in the document from the
root
and doesnt care what your context node is..
HTH
Vasu


----- Original Message -----
From: <omprakash(_dot_)v(_at_)polaris(_dot_)co(_dot_)in>
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Monday, January 24, 2005 1:04 PM
Subject: [xsl] finding nodes



Hi,
    Iam trying to find the set of nodes having the name attribute
= '$something'. But, Iam only being returned an empty set.

In my stylesheet I have this:

I have $value =' resident'

 <xsl:variable name="nset">
 <xsl:value-of select="//campus[(_at_)name = $value]"/>
 </xsl:variable>

<xsl:message> nodeset  <xsl:value-of select="$nset"/></xsl:message>

I would then like to iterate  over the nodeset returned.

But all I get is

Message: nodeset
Message: nodeset

In my xml I have

<campus name="resident">
     <detail>
          <student name="location" type="ps:north"/>
          <student name="distance" type="ps:km"/>
     </detail>
</campus>

My context node is elsewhere in the xml file.

Regards,
Omprakash.V




This e-Mail may contain proprietary and confidential information and is
sent for the intended recipient(s) only.
If by an addressing or transmission error this mail has been misdirected
to you, you are requested to delete this mail immediately.
You are also hereby notified that any use, any form of reproduction,
dissemination, copying, disclosure, modification,
distribution and/or publication of this e-mail message, contents or its
attachment other than by its intended recipient/s is strictly prohibited.

Visit Us at http://www.polaris.co.in

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





This e-Mail may contain proprietary and confidential information and is
sent for the intended recipient(s) only.
If by an addressing or transmission error this mail has been misdirected
to you, you are requested to delete this mail immediately.
You are also hereby notified that any use, any form of reproduction,
dissemination, copying, disclosure, modification,
distribution and/or publication of this e-mail message, contents or its
attachment other than by its intended recipient/s is strictly prohibited.

Visit Us at http://www.polaris.co.in

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>