Re: [xsl] Problem with Xpath

Subject: Re: [xsl] Problem with Xpath
From: ms <mina_hurray@xxxxxxxxx>
Date: Wed, 13 Dec 2006 11:02:32 -0800 (PST)
I am sorry , I meant //info/comp and //info/prod, and
there are no "value-of" on a any set of nodes. 

How do I make it match all the "comp" and "prod"
elements under "l1" and not just the first set?
--- "CyberSpace Industries 2000 Inc."
<csi2000@xxxxxxxxxxxxxxx> wrote:

> My first guess is that the following statement is
> always false
> <xsl:if test="//info/company=$company and
> //info/product=$product">
> 
> since there is no children of info named company or
> product.  Did you mean 
> comp and prod?
> 
> If you are getting only the first of a set of nodes
> - check your other 
> templates to make sure you aren't using a "value-of"
> on a set of nodes... in 
> which case all other nodes other than the first (in
> document order) are 
> ignored.
> 
> Cheers...Hugh
> CyberSpace Industries 2000 Inc.
> XML Training and Consulting
> 
> ----- Original Message ----- 
> From: "ms" <mina_hurray@xxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Wednesday, December 13, 2006 1:39 PM
> Subject: [xsl] Problem with Xpath
> 
> 
> > Hi all:
> >
> > I am having issues with Xpath.
> >
> > My xml looks like this:
> >
> > <root>
> >
> > <l1>
> > <text>
> > <para>First level</para>
> > </text>
> > <info>
> > <comp>Kmart</comp>
> > <prod>Shoes</prod>
> > </info>
> > <l2>
> > <text>
> > <para>Second level .</para>
> > </text>
> > </l2>
> > </l1>
> > <l1>
> > <text>
> > <para>Second level</para>
> > <info>
> > <comp>Kmart</comp>
> > <prod>Shoes</prod>
> > </info>
> > </text>
> > </l1>
> > <l1>
> > <text>
> > <para>Third level</para>
> > <info>
> > <comp>Target</comp>
> > <prod>Pen</prod>
> > </info>
> > </text>
> > </l1>
> > </root>
> >
> > Now, I have logic in my style sheet which says
> that
> > only if element <l1> contains element <info>, then
> > if <comp> and <prod> values match the values being
> > passed to the style sheet through two other
> parameters
> > <company> and <product> , then display l1 ,
> otherwise
> > do not display l1.
> >
> > The XSLT is :
> >
> >
> > <xsl:template match="l1">
> > <xsl:choose>
> > <xsl:when test="//info">
> > <xsl:if test="//info/company=$company and
> > //info/product=$product">
> > <fo:list-block>
> > <fo:list-item>
> > <fo:list-item-label>
> > <fo:block>
> > <xsl:number format="1"/>
> > </fo:block>
> > </fo:list-item-label>
> > <fo:list-item-body>
> > <fo:block>
> > <xsl:apply-templates/>
> > </fo:block>
> > </fo:list-item-body>
> > </fo:list-item>
> > </fo:list-block>
> > </xsl:if>
> > </xsl:when>
> > <xsl:otherwise>
> > <!-- Do something else-->
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:template>
> >
> > So, if I have passed $company="KMart" and
> > $product="Shoes" on the style sheet, then the
> expected
> > output is:
> >
> > 1 First
> > 2 Second
> >
> > Instead, it matches only the company and product
> for
> > the first level and stops there. Can you please
> tell
> > me what is wrong with the xpath to company and
> product
> > on the style sheet?
> >
> > Thank you in advance for your help.
> >
> >
> >
> >
> >
> >
>
____________________________________________________________________________________
> > Do you Yahoo!?
> > Everyone is raving about the all-new Yahoo! Mail
> beta.
> > http://new.mail.yahoo.com
> 
> 



 
____________________________________________________________________________________
Need a quick answer? Get one in minutes from people who know.
Ask your question on www.Answers.yahoo.com

Current Thread