It's ok I've figured it out I think.
I've used a set of templates that call each other and work their way
down the list, and use parameters to keep the id and name fields that
I need. I think it works, and I'll test it on some bigger data sets
and see how I go.
Cheers,
Nick
<xsl:template name="GROUPS">
<xsl:param name="Layoutid" />
<xsl:param name="Layoutname" />
<xsl:for-each select="./Object[(_at_)type='Field']">
<xsl:call-template name="RESULTSET">
<xsl:with-param name="Layoutid" select="$Layoutid"/>
<xsl:with-param name="Layoutname"
select="$Layoutname"/>
</xsl:call-template>
</xsl:for-each>
<xsl:for-each select="./Object[(_at_)type='GroupButton']/
GroupButtonObj">
<xsl:call-template name="GROUPS">
<xsl:with-param name="Layoutid" select="$Layoutid"/>
<xsl:with-param name="Layoutname"
select="$Layoutname"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
On 26/09/2005, at 9:04 AM, Nicholas Orr wrote:
I'm very new to XSL and learning by doing, so thanks in advance for
responding. I've got some xml which has come out of a filemaker
database where you can have a layoutobject that contains either
field objects or other layoutobjects in a recursive style list :
<FMPReport link="Summary.xml" type="Report"
creationDate="25/09/2005" creationTime="9:28:42 PM">
<File name="DDR Sample.fp7" path="/Volumes/BIGHD/Projects/DDR">
<LayoutCatalog>
<Layout id="2" name="Layout #2" includeInMenu="True">
<Object type="GroupButton" flags="0" portal="-1"
rotation="0">
<GroupButtonObj numOfObjs="14">
<Object type="GroupButton" flags="0"
portal="-1" rotation="0">
<GroupButtonObj numOfObjs="6">
<Object type="Field" flags="0"
portal="-1" rotation="0">
</Object>
</GroupButtonObj>
</Object>
</GroupButtonObj>
</Object>
<Object type="GroupButton" flags="0" portal="-1"
rotation="0">
<GroupButtonObj numOfObjs="6">
<Object type="Field" flags="0" portal="-1"
rotation="0">
</Object>
</GroupButtonObj>
</Object>
<Object type="Field" flags="0" portal="-1"
rotation="0">
</Object>
</Layout>
</LayoutCatalog>
</File>
</FMPReport>
I'm trying to run a for-each loop on all of the field objects that
does :
<xsl:value-of select="./@type"/>
and I can do this fine for any field object at the lowest point in
the tree by referring to it explicity:
/FMPReport/File/LayoutCatalog/Layout/Object[(_at_)type='Field']
which means I can also then reference the parent "Layout" node using :
<xsl:value-of select="../../@id"/>
the problem I have is how do I reference every possible Object
[(_at_)type='Field'] in the tree and still be able to reference the
parent Layout node?
Thanks,
Nick
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--