Subject: RE: [xsl] problem with xsl:if test statement From: "John Horner" <Horner.John@xxxxxxxxxx> Date: Tue, 18 Dec 2007 17:14:38 +1100 |
I'm rather confused by this question/example code. Given the code you've sent us, it *doesn't* produce two links. The for-each works once for each Fruits node, and if it matches the country and the fruit, produces one link, even if there are two <Type>Apples</Type> nodes. Perhaps the answer to the more general question is to use count()? As in, <xsl:for-each select="Products"> <xsl:if test="count(Fruits[Type='Apples']) > 0 "> there is at least one 'Apples' node in the Product node for <xsl:value-of select="Fruits/Country"/> </xsl:if> </xsl:for-each> By the way, there are quite a few mistakes in your code and it doesn't run without fixing them. I suspect you didn't send us the code you're actually working on? -----Original Message----- From: Amy Huang [mailto:h.amy88@xxxxxxxxx] Sent: Tuesday, 18 December 2007 3:51 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] problem with xsl:if test statement Hello, I'm new to xml and xsl. I need to generate one link if my query finds one or more records in my XML document. But I if I use "for each statement", the link will repeat again and again depending on how many records satisfy my query. E.g., if 2 records satisfy my query, the link will repeat twice like this: For apples, click here For apples, click here How can I generate only one link if my query finds more than one records? XSL: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";> <xsl:param name="Country" select="Mexico" ></xsl:param> <xsl:template match="/"> <html> <body> <h2>Types of Fruits</h2> <xsl:for-each select="Products/Fruits"> <xsl:if test="Country = $Country and Type = 'Apples'"> <a> <xsl:attribute name="href"> fruits.aspx?moi=<xsl:value-of select="$Country"/> </xsl:attribute> For apples, click here </a> <br /> </xsl:if> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> XML: <Products> <Fruits> <Country>Mexico</Country> <Tpye>Apples</Type> <Tpye>Bananas</Type> </Fruits> <Fruits> <Country>Brazil</Country> <Tpye>Oranges</Type> <Tpye>Apples</Type> </Fruits> <Fruits> <Country>Peru</Country> <Tpye>Bananas</Type> <Tpye>Oranges</Type> </Fruits> </Products> Any help would be greatly appreciated! Amy Huang ________________________________________________________________________ ____________ Never miss a thing. Make Yahoo your home page. http://www.yahoo.com/r/hs ============================================================================= = The information contained in this email and any attachment is confidential and may contain legally privileged or copyright material. It is intended only for the use of the addressee(s). If you are not the intended recipient of this email, you are not permitted to disseminate, distribute or copy this email or any attachments. If you have received this message in error, please notify the sender immediately and delete this email from your system. The ABC does not represent or warrant that this transmission is secure or virus free. Before opening any attachment you should check for viruses. The ABC's liability is limited to resupplying any email and attachments ============================================================================= =
Current Thread |
---|
<- Previous | Index | Next -> |
---|---|---|
[xsl] problem with xsl:if test stat, Amy Huang | Thread | Re: [xsl] problem with xsl:if test , Steve |
[xsl] problem with xsl:if test stat, Amy Huang | Date | Re: [xsl] problem with xsl:if test , Steve |
Month |