[xsl] What's wrong with my ancestor syntax?

Subject: [xsl] What's wrong with my ancestor syntax?
From: "Austin, Darrel" <Darrel.Austin@xxxxxxxxxxxxxxxxxx>
Date: Mon, 26 Mar 2007 16:58:43 -0500
I'm trying to use ancestor-or-self.

Here's a sample of the XML:
      <browserTitle>Home Page</browserTitle>
         <browserTitle>District Administration</browserTitle>

This is the XML that forms our site menu. I want to create an RSS feed
that lists the most recent 10 pages that have been changed under a
certain node of the menu.

So, for this example, I want to pass in the page ID of '938' and return
both '938' and any child page underneath it.

Here's the XSL:

<xsl:param name="pageID">1</xsl:param>

<xsl:template match="/">
	<xsl:for-each select="*/menuItem[ancestor-or-self::pageID =
		<xsl:sort select="substring(@lastUpdate,1,4)"
order="descending" /> <!-- year  -->
		<xsl:sort select="substring(@lastUpdate,6,2)"
order="descending" /> <!-- month -->
		<xsl:sort select="substring(@lastUpdate,9,2)"
order="descending" /> <!-- day   -->
		<xsl:call-template name="createItem" />

<xsl:template name="createItem">
		lastUpdate: <xsl:value-of select="lastUpdate"/>
		browserTitle: <xsl:value-of select="browserTitle"/>
		pageID: <xsl:value-of select="pageID"/>

Originally, I had 'descendant-or-self' by mistake which obviously gave
me the exact opposite of what I wanted and returned the specific node
and all PARENT pages that matched. So I changed to ancestor-or-self and
now it doesn't appear to match anything. I'm not sure why. Is my logic a
bit off?


Current Thread