RE: [xsl] Problem with Xpath

Subject: RE: [xsl] Problem with Xpath
From: ms <mina_hurray@xxxxxxxxx>
Date: Wed, 13 Dec 2006 11:45:34 -0800 (PST)
Thank you the .//info worked. But I guess I have a new
problem now, since there is some styling to format
these levels as 1, 2, 3 etc, now if the second<l1> tag
matched then the numbering starts with 2. instead of
1. 

Is there any way to start this numebring at 1 instead
of 2 so that even in between if there are levels that
have to be missed the numbering stays as 1,2 , 3 and
not 2, 5, ,6 etc.

Please let me know.



--- cknell@xxxxxxxxxx wrote:

> Your example XML file does not contain elements with
> the local names "company" and "product". Your XSLT
> file is looking for them. Naturally it won't find
> them, so the transformation will fail.
> 
> This: <xsl:when test="//info">
> and this: <xsl:if test="//info/company=$company and
> //info/product=$product">
> 
> are telling your stylesheet to start looking at the
> root for elements matching the test criteria.
> 
> Is that what you want? Or, do you want to look for
> "info" elements that are descendants of the "l1"
> element?
> 
> Since the latter makes sense to me and the former
> does not, maybe the XPath expression you are looking
> for is 
> 
> <xsl:when test=".//info">
> and <xsl:if test=".//info/company=$company and
> .//info/product=$product">
> 
> 
> N.B., there is a period character before the
> double-slash. That tells your stylesheet to start at
> the context node (<l1>, in this case) and not at the
> document root.
> 
> Get the element names correct and try these XPath
> expressions, and get back to us if you are still
> having a problem.
> 
> -- 
> Charles Knell
> cknell@xxxxxxxxxx - email
> 
> 
> 
> -----Original Message-----
> From:     ms <mina_hurray@xxxxxxxxx>
> Sent:     Wed, 13 Dec 2006 10:39:01 -0800 (PST)
> To:       xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> 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
> 
> 



 
____________________________________________________________________________________
Any questions? Get answers on any topic at www.Answers.yahoo.com.  Try it now.

Current Thread