• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 294
  • Last Modified:

XSL select value-of query

In the below sample xml, I want to select the Price for all the CDs with type 'Alternative' and release date in 2008. How can I do that?

<xsl:value-of select="Catalog/Items/CD[Type = 'Alternative' AND Details/Release = '2008%' ]/Price "/>
<Catalog>
	<Items>
        	<CD>
			<Type>Alternative</Type>
          		<Details>
                        	<Title>Coldplay's Album</Title>
            			<Release>2008-05-30</Release>
          		</Details>
          		<Price>12.00</Price>
        	</CD>
        	<CD>
			<Type>Rock</Type>
          		<Details>
                        	<Title>U2's Album</Title>
            			<Release>2008-07-15</Release>
          		</Details>
          		<Price>18.00</Price>
        	</CD>
        	<CD>
			<Type>Alternative</Type>
          		<Details>
                     		<Title>FFF's Album</Title>
            			<Release>2007-05-30</Release>
          		</Details>
          		<Price>20.00</Price>
        	</CD>
	</Items>
</Catalog>

Open in new window

0
dj_user2
Asked:
dj_user2
  • 2
1 Solution
 
Geert BormansCommented:
<xsl:value-of select="Catalog/Items/CD[Type = 'Alternative' AND starts-with(Details/Release, '2008') ]/Price "/>
0
 
dj_user2Author Commented:
I get this error message

Expected token ']' found 'NAME'. Catalog/Items/CD[Type = 'Alternative' -->AND <--starts-with(Details/Release, '2008') ]/Pr...

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h1>
	<xsl:value-of select="Catalog/Items/CD[Type = 'Alternative' AND starts-with(Details/Release, '2008') ]/Price "/>
    </h1>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

Open in new window

0
 
Geert BormansCommented:
sorry, hit by case-sensitivity
  <xsl:value-of select="Catalog/Items/CD[Type = 'Alternative' and starts-with(Details/Release, '2008') ]/Price "/>
is correct

Note, that if there are more than one CD with the same properties (not in your example)
this will result in a concatenated string of all the prices
so you might want to do something like this

<xsl:for-each select="Catalog/Items/CD[Type = 'Alternative' and starts-with(Details/Release, '2008') ]">
   <price><xsl:value-of select="Price "/>
</xsl:for-each>
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now