[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
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.
<xsl:template name="GROUPS">
<xsl:param name="Layoutid" />
<xsl:param name="Layoutname" />
<xsl:for-each select="./Object[@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[@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:
Re: [xsl] Recursion (I think)
Subject: Re: [xsl] Recursion (I think) From: Nicholas Orr <nick@xxxxxxxxxxx> Date: Mon, 26 Sep 2005 12:32:11 +1000 |
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[@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[@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[@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 [@type='Field'] in the tree and still be able to reference the parent Layout node?
Thanks, Nick
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Recursion (I think), Nicholas Orr | Thread | RE: [xsl] Recursion (I think), Michael Kay |
Re: [xsl] XSLT2: A sequence of more, Xiaocun Xu | Date | [xsl] RE: How to transform an embed, Meyer, Roland |
Month |