[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Some help with xsl transform and filter please

Subject: RE: Some help with xsl transform and filter please
From: "Josh Canfield" <Josh.Canfield@xxxxxxxxxxxx>
Date: Thu, 25 Mar 2004 12:15:06 -0800
xsl for each filter
No, your xsl won't work because entering the for-each element changes your context to the selected node. Your outer for-each is selecting the value element, and there are no methodResponse children of the value element.

I would recommend spending a little time going through a tutorial, or reading a book (search this list for past recommendations at http://www.biglist.com/lists/xsl-list/archives/). I don't intend this to be condescending, but anyone trying to use XSL needs to come to grips with some fundamental differences between it and other programming languages they are used to.

You might also want to take a look at the XPATH and XSL specs:

Keep a shortcut to them handy as they make a good reference.

You might also want to print the handy XSLT/XPATH quick reference from Mulberry and keep it handy

With your given document, if you wanted to output all of the members of the struct then you could do this:

  <xsl:template match="/">
    <!-- match the struct element, remember that this could match more than one
         struct element, for instance if the array had multiple data elements -->
    <xsl:for-each select="methodResponse/params/param/value/array/data/value/struct">
      <!-- iterate over each member node, relative to the struct node -->
      <xsl:for-each select="member">
        <!-- name and value are relative to the member node -->
        <xsl:value-of select="name"/> : <xsl:value-of select="value/string"/>;<br/>


-----Original Message-----
From: Dylan Barber [mailto:dylan.barber@xxxxxxxxxxxxx]
Sent: Thursday, March 25, 2004 11:26 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Some help with xsl transform and filter please

Okay so by your method then this would get me each member of the struct node

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
	<xsl:for-each select="methodResponse/params/param/value/array/data/value/struct/member/value[string='Syndicated']">
		<xsl:for-each select="methodResponse/params/param/value/array/data/value/struct/member">
			<xsl:value-of select="methodResponse/params/param/value/array/data/value/struct/member/name" />
			<xsl:value-of select="methodResponse/params/param/value/array/data/value/struct/member/value/string" />
			;<br />

But do I really have to give the path for each item isnt there a way to say start at this path and go down or up?
-----Original Message-----
From: Josh Canfield <Josh.Canfield@xxxxxxxxxxxx>
Sent: Mar 25, 2004 10:33 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Some help with xsl transform and filter please

Your path is incomplete. 

<xsl:template match="/">
	<xsl:for-each select="struct/member/value[string='Syndicated']">

Your template match is putting your context at the root of the document so your for-each is looking for a "struct" node relative to the root, but there isn't one.

You can fully specify the path like this:
<xsl:for-each select="methodResponse/params/param/value/array/data/value/struct/member/value[string='Syndicated']">

This explicitly tells the xpath processor where to find the nodes.



Dylan Barber (CIW Professional, A+ Technician, Web Designer, Web Developer)

home phone-:- (785) 765-2664
work phone-:- (785) 539-3565 x1034
email-:- dylan.barber@xxxxxxxxxxxxx
homesite-:- http://www.codegalaxy.com

Current Thread


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.