Three questions in one mail:
1. Does anyone know of a public 'knowledgebase' type site where there
are lots of examples of solutions to different problems, classified in a
way which avoids spending hours trawling through threads?
2. Transforming 'flat' structures to hierarchies:
I've adapted a stylesheet found in this list, for creating the hierarchy
of this:
<Menus>
<Menu MenuId="58" MenuName="LeftMenu"/>
<Menu MenuId="1" MenuParentId="58" MenuName="Home"/>
<Menu MenuId="60" MenuParentId="1" MenuName="About us/>
...etc
</Menus>
The xsl looks like this:
<xsl:template match="/">
<xsl:apply-templates select="Menus"/>
</xsl:template>
<xsl:template match="Menus">
<xsl:copy>
<xsl:apply-templates select="Menu[not(@MenuParentId)]">
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="Menu">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="../Menu[(_at_)MenuParentId =
current()/@MenuId]"/>
</xsl:copy>
</xsl:template>
Question: is there any way of also adding the numbering (<xsl:number
level="multiple" format="1.1"/>) directly, or do I have to run the
output through a second stylesheet?
3. Given the hierarchical output from 2, I would like to extract all
nodes which are children of any of the ancestors of the node with a
given MenuId (including that node itself)
Expressed otherwise: the children, siblings, ancestors, uncles and
great-uncles, great-great-uncles (etc) of the given node.
Expressed otherwise: all Menus where MenuParentId IN (MenuIds of a given
node and all of its ancestors)
Many thanks for any answers received
Ben Simkins